我有许多 FAT32 驱动器,我想将它们挂载到 Ubuntu 中,使它们的目录权限模式为 700,其他所有文件的权限模式为 600。默认情况下,它们对所有文件的权限模式为 755,这没什么用,因为几乎没有非目录文件是可执行的,而且这会搞砸驱动器上托管的版本控制存储库。
“以前”我会在 /etc/fstab 中列出驱动器,并使用我想要的 umask/dmask,而且没有默认设置。现在,驱动器会在其卷名下自动挂载。这很好,但现在我不知道如何设置默认值。
我尝试更改 /system/storage/default_options/vfat/mount_options gconf 键,但似乎没有效果。它最初是 077,但安装的驱动器反映默认值为 022;更改它并重新插入驱动器导致文件仍然具有 755 的权限位。
答案1
更新
不幸的是,没有内置的方法来做到这一点。“正确的方法”,支持的方式,正在设定一个/etc/fstab行,其中包含您想要的默认安装选项。这意味着您必须为每个设备设置默认值,尽管您可以使用分区标签或 UUID 来避免要求特定的设备路径。特别是,这种方法似乎前PolicyKit 桌面授权。
Ubuntu 论坛,发射台和Gnome 的 Bugzilla有很多用户发帖寻求与您在 NTFS 和 FAT32 上所需的相同功能。Ubuntu 9.10 和 10.04 通过 DeviceKit-Disks、GVFS 和 Nautilus 的组合提供默认的自动挂载。
DeviceKit-disks 提供了文件系统挂载接口选项论点似乎是恰当的配置挂载选项的方法。但是 GVFS/Nautilus 似乎没有提供任何方法(通过 UI 或配置文件)来在自动挂载 USB 密钥时指定此选项。
有几种解决方法:
这个 Launchpad 错误包含一个用户提供的补丁改变定制的 DeviceKit-Disks 默认值设备套件磁盘包裹。
优点是,这可能是为所有设备设置首选默认设置的最简单方法。缺点是,当软件包更新时,您需要再次重新打补丁。
Ubuntu 论坛上的一个帖子提出了一种特定于设备的解决方法脚本:
#!/bin/bash devkit-disks --unmount /dev/disk/by-uuid/0D3594370C618A2A devkit-disks --mount-options "dmask=000" --mount /dev/disk/by-uuid/0D3594370C618A2A
这也是次优的,因为你必须针对特定设备保持更新。但它确实避免了受支持的文件系统解就可以了。
答案2
这是我的 fstab 行,用于使我的 usb 盘以适合私有 ssh 密钥 (fmask=177) 的权限挂载。反复试验后,我发现必须添加“用户”选项才能使自动挂载正常工作。
/dev/disk/by-uuid/C2F8-E4F2 /media/TIM_ABELL vfat rw,user,nosuid,nodev,dmask=0077,flush,fmask=177
我还必须创建之前自动创建的挂载点:
mkdir /media/TIM_ABELL
插入磁盘并运行后即可找到磁盘的 uuid
mount
ls -l /dev/disk/by-uuid/
这将允许你获取挂载点 -> 设备 -> uuid 映射
答案3
答案4
我编写了一些 bash 脚本,并得出了上面发布的解决方法脚本的改进版本:
#!/bin/bash
dev_path="/dev/disk/by-id"
usb_drives=$(find $dev_path -name "usb*")
mount_options="utf8=0,codepage=850,iocharset=iso8859-1"
for dev in $usb_drives ; do
if ( devkit-disks --show-info $dev | \
grep "is mounted:" | grep -q 1 ) ; then
devkit-disks --unmount $dev
devkit-disks --mount $dev \
--mount-options $mount_options
fi
done
它会找到所有已安装的 USB 连接设备(希望是所有 U 盘),然后使用 mount_options 重新安装它们(在我的例子中,让它们使用 iso-8859-1 字符集以兼容其他有限的操作系统)