如何在Ubuntu 9.10中为自动安装的FAT驱动器设置默认权限?


17

我有很多FAT32驱动器,我想将它们安装在Ubuntu中,以便它们对目录具有权限模式700,对所有其他文件具有权限模式。默认情况下,它们对所有文件都有755,这不是特别有用,因为几乎没有非目录应可执行,并且它破坏了驱动器上托管的版本控制存储库。

“回到过去”,我本来可以在/ etc / fstab中列出带有我想要的umask / dmask的驱动器,并且没有默认值。这些天来,驱动器在其卷名下自动挂载。很好,除了现在我不知道如何设置默认值。

我试图更改/ system / storage / default_options / vfat / mount_options gconf密钥,但显然没有效果。最初是077,但是安装的驱动器反映的默认值是022;对其进行更改并重新插入驱动器,导致文件的许可位仍然为755。


嗯 以为您的用户名看起来很熟悉。我已经使用诱变剂多年了。欢迎来到超级用户。:)
嘎嘎吉x德

另外,您使用的是哪个版本的ubuntu?我以为是Karmic,但您可能正在谈论Lucid RC,甚至更早一些。
quack quixote

标题中阐明。我希望这没关系,因为我确实有一些较旧的安装,并且安装等事情不应每六个月更换一次。

不幸的是,HAL的东西在最近的版本中已经发生了很多变化。9.04和以前的版本可能相同;一些解决方案可能适用于所有人;但是9.10使用DeviceKit,并且不建议使用HAL。我现在不相信任何DBus / HAL / DeviceKit东西能保持稳定。
quack quixote

1
来自pagin的评论:我认为这个问题更为根本:无论哪个设备连接到计算机,我都希望修改umask以进行自动挂载。即,如果我的一个朋友用他的USB棒跌倒了,而我只想从其中复制一些文件,我希望它们自动以chmod 750而不是000或777、770或其他格式传输。确实应该在某个地方配置此选项...
quack quixote 2010年

Answers:


7

更新
不幸的是,没有内置的方法可以做到这一点。“正道”,支持的方式,被设置在/ etc / fstab中使用默认的行安装你想要的选项。这意味着您必须为每个设备设置默认值,尽管您可以使用分区标签或UUID来避免需要特定的设备路径。特别是,此方法似乎发生 PolicyKit桌面授权之前

在Ubuntu论坛,LaunchpadGnome的bugzilla上,有很多用户在NTFS和FAT32上都在寻找与您所寻找的功能相同的功能。Ubuntu 9.10和10.04通过DeviceKit-Disk,GVFS和Nautilus的组合提供默认的自动挂载。

DeviceKit磁盘提供了FilesystemMount接口,其options参数似乎是配置安装选项的正确方法。但是GVFS / Nautilus似乎没有通过UI或配置文件提供任何方法来在自动挂载USB密钥时指定此选项。

有两种解决方法:

  • 该启动板错误包含一个用户提供的补丁,该补丁可更改定制的devicekit-disks软件包中的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
    

    这也不是最佳选择,因为您必须使用特定设备对此进行更新。但是,它确实避免了受支持的fstab解决方案可能具有的授权问题。


Rndmerle的评论:作为旁注,在Ubuntu Lucid(10.4)上,devkit-disks命令已替换为/ usr / bin / udisks
quack quixote

udisk --unmount等的解决方法仅适用于umask和dmask。不允许使用其他选项,因为您可以从链接的补丁程序中猜测。
user39559 2010年

1

这是我的fstab行,用于使用合适的ssh私钥(fmask = 177)的权限安装USB记忆棒。反复试验告诉我,我必须添加'user'选项才能使自动挂载工作。

/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映射


1
除了使用完整路径/ dev / disk / by-uuid / FOO/ dev / disk / by-label / FOO之外,您还可以使用快捷语法UUID=FOOLABEL=FOO
quack quixote 2010年

0

您是否真的尝试过旧的/ etc / fstab方法?这个对我有用。无论HAL自动挂载程序如何,Ubuntu都使用fstab。


2
我应该在/ etc / fstab中放入什么以使所有FAT驱动器都这样挂载?我的意思不是说“我可以使用fstab来做到这一点”(我不能),而是“这在fstab模式下没有发生,因为除非我告知,否则它不会挂载任何东西”。

0

我做了一些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连接的所有设备(希望是所有Pendrive),并使用mount_options重新安装它们(在我的情况下,让它们使用iso-8859-1字符集以与其他有限的OS兼容)


3
如果插入ext4 USB会怎样?它会应用仅对FAT有意义的蒙版和其他选项吗?
user39559 2010年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.