在自动挂载时将权限应用于 NTFS USB 驱动器

在自动挂载时将权限应用于 NTFS USB 驱动器

我有一个外部 USB 硬盘,我想让备份程序将备份写入其中。备份程序需要某些权限。我知道 Ubuntu 下的 NTFS 不允许我在目录或文件上设置 unix 样式的权限...我必须在安装时将必要的权限应用于 HDD 根目录。我希望此驱动器继续自动安装。我了解了 udev 规则,并尝试使用这些规则。但是我看到了严重的错误,驱动器变得无法访问。

对于 udev 匹配器,这似乎有效:ATTRS{vendor}=="ASMT", ATTRS{model}=="2105"。但我对之后的一切都不确定。最初,我能够在 上更改组名/dev/sd??,但 (a) 我现在无法重现它,并且 (b) 当它确实有效时,它仍然不会影响已安装驱动器上的权限……我猜改变这些的唯一方法是更改​​命令mount

我知道的:

  • 我知道如何使用来blkid获取驱动器的当前设备路径。
  • 我知道udevadm monitor --environment --udev在插入或拔出 USB 驱动器时使用获取信息
  • 我知道如何使用来udevadm info -a -p $(udevadm info -q path -n /dev/sd?)获取设备的可能匹配器
  • 我知道使用sudo udevadm control --reload重新加载我对规则文件所做的更改/etc/udev/rules.d
  • 在规则文件中放入类似的内容RUN+="echo bingo %k"将使其显示在输出中udevadm test,这让我相信我的匹配器没有问题。

我不知道的是:

  • 如何根据 udev 规则文件阻止或覆盖自动挂载,以便我可以mount在规则文件中放置自己的命令。(我曾经在那里有一个挂载命令,但它导致错误并且驱动器无法访问)。
  • 真的有多么有效udevadm control --reload。(我似乎无法复制使用所取得的一些部分成功GROUP="urbackup", MODE="0666"。)
  • 如果udev规则是可行的,我想做的就是修改已安装的驱动器权限。
  • 如果 udev 规则文件名开头的数字对我的用例确实很重要,我尝试过较小的数字(如 )10和较大的数字(如 )100

Ubuntu 20.04。

以下是一些详细信息:我拥有的最新规则是ATTRS{vendor}=="ASMT", ATTRS{model}=="2105", ACTION=="add", GROUP="urbackup", MODE="0666", RUN+="/usr/bin/mount -o umask=001,dmask=007,fmask=117,gid=134,uid=1000 /dev/%k /media/eddie/Interstellar"。——udevadm test显示运行命令,但在重新加载规则并实际插入驱动器后,似乎没有任何变化。

更新:如果我将命令稍微改为: ATTRS{vendor}=="ASMT", ATTRS{model}=="2105", ACTION=="add", GROUP="urbackup", MODE="0666", RUN+="/usr/bin/mount -o umask=001,dmask=007,fmask=117,gid=134,uid=1000 /dev/%k /media/Interstellar"--- 并将文件名设置为以 开头10-,则在关闭 USB 驱动器电源后,我会收到Transport endpoint is not connected错误。在文件名开头使用 时,我不会收到此错误70-,但随后它表现得好像我根本没有创建 udev 规则一样。

答案1

简洁版本:

如果更改自动安装的外部驱动器上的组是您唯一需要的自定义内容,则 udev 规则不是正确的解决方案。对于这种情况,fstab编辑是可行的方法。我通过尝试Disks提供编辑 HDD 分区上的安装选项的 UI 发现了这一点。在玩了一会儿之后,我意识到它只是一个用于创建fstab条目的 UI。特别是,对于这个问题,我需要添加gid=<groupId>到安装选项。我还使用了umaskdmaskfmask值,以及uid=<userId>,但我不确定其中哪些是绝对必要的。以下是 UIDisks帮助我写入 FSTAB 的完整行:

LABEL=Interstellar /media/Interstellar auto nosuid,nodev,nofail,x-gvfs-show,umask=001,dmask=007,fmask=117,gid=134,uid=1000,noauto 0 0

相关内容