如何更改自动安装的 USB 媒体的默认权限?

con*_*use 9 gnome permissions automount usb-storage

tl;博士:

如何让 gnome 自动挂载具有权限的 USB 设备,以便组中的每个人都可以访问它们,而不仅仅是在插入 USB 存储时登录的一个用户?

(这里的小组被称为confus与用户narurconfus都在该组中仅narur在登录,在USB插头的时间,所以只narur能够访问USB设备-即使一个sudo chmod g+rw?我如何改变这种状况)


细节:

我在家里运行媒体服务器。它连接到投影仪作为唯一的显示器。有时我喜欢插入 USB 驱动器以将内容从服务器复制到所述驱动器。驱动器由通常的侏儒恶作剧自动安装。显然我不想打开投影仪(需要一段时间,而且灯泡不好)。所以我通过 ssh 登录到服务器并从另一台 PC 上通过终端进行复制。

问题是,USB 驱动器安装在与我通过 ssh登录的用户不同的用户下。我的ssh 用户无权打开gnome 选择的挂载点,尽管它在同一组中。有关说明,请参阅此终端会话:

confus@conserve:/media$ id
uid=1000(confus) gid=1000(confus) groups=4(adm),8(mail),20(dialout),24(cdrom),46(plugdev),113(lpadmin),114(sambashare),122(admin),126(debian-transmission),135(debian-tor),1000(confus)

confus@conserve:/media$ ll
total 28
lrwxrwxrwx  1 root   root      6 Mar  8  2009 cdrom -> cdrom0
drwx------  1 narur  confus 4096 Oct  8 16:53 contemplate     # <-- USB drive
drwxr-xr-x  2 root   root   4096 May  3  2010 iso
drwxr-xr-x  2 confus confus 4096 Dec  8  2009 usb1

confus@conserve:/media$ sudo chmod -R ug+rwX 4009-D44F/       # <-- Doesn't do anything
[sudo] password for confus: 

confus@conserve:/media$ ll
total 28
lrwxrwxrwx  1 root   root      6 Mar  8  2009 cdrom -> cdrom0
drwx------  1 narur  confus 4096 Oct  8 16:53 contemplate    # <-- No change after chmod
drwxr-xr-x  2 root   root   4096 May  3  2010 iso
drwxr-xr-x  2 confus confus 4096 Dec  8  2009 usb1
Run Code Online (Sandbox Code Playgroud)

我的 ssh 用户是“ confus”,而磁盘是为用户“ narur”安装的。显然chmod,因为它是一个挂载点,所以简单是行不通的。每个 USB 存储设备都存在此问题。

我知道我可以编写 udev 规则,并且我知道存在基于设备的解决方案。但是应该有一个更简单的解决方案来解决这个问题,它是 gvfs 固有的。

更新:

自 2009 年以来,一切都没有改变。这令人尴尬。至少应该有一个简单的解决方法来解决这个问题。

小智 3

我猜您的 USB 驱动器已格式化为VFAT/FAT32. 此文件格式不支持执行权限,这就是chmod +x失败的原因。

[编辑]好的,玩了一下并在网上搜索了一下。许多“解决方案”建议您应该改变/etc/fstab。这对我来说似乎很笨重,你会做什么?fstab每次遇到新的 USB 闪存驱动器都会改变???

我的解决方案:

$ sudo vi /etc/udev/rules.d/90-usb-disks.rules
Run Code Online (Sandbox Code Playgroud)

添加以下行:

# UDEV Rules to change the permission of USB disks

#

KERNEL=="sd*[0-9]", ATTR{removable}=="1", ENV{ID_BUS}=="usb", MODE="0022"

$ sudo /etc/init.d/udev restart
Run Code Online (Sandbox Code Playgroud)

然后尝试插入 USB 驱动器。如果您想更具体的话,您可能可以检查一个属性来确保它是 FAT 格式的驱动器。