为 USB 记忆棒设置自定义挂载点和挂载选项

为 USB 记忆棒设置自定义挂载点和挂载选项

我有一个 USB 存储棒,里面有私人的东西,比如 SSH 密钥。我想用 0700 权限将此存储棒挂载到我自己的主目录。目前我在 /etc/fstab 中使用以下行执行此操作:

LABEL=KAYSTICK /home/k/.kaystick auto rw,user,noauto,umask=077,fmask=177 0 0

这很有效,但有一个小问题:在 Nautilus(Gnome 文件管理器)中,会显示挂载点“.kaystick”。我猜 Nautilus 只是扫描 /etc/fstab 文件并显示它在那里找到的所有内容。这个挂载点非常没用,因为当设备不存在时无法单击它,当设备存在时也无法单击它(因为那时它已经挂载)。我知道这是一个非常小的问题,因为我可以简单地忽略它,但我是一个完美主义者,所以我想摆脱 Nautilus 中这个没用的挂载点。

还有其他方法可以自定义特定 USB 设备的挂载点和挂载选项吗?也许可以在 udev 中配置?如果可以,怎么做?

答案1

我自己找到了。我添加了文件 /lib/udev/rules.d/99-kaystick.rules,内容如下:

IMPORT{program}="/sbin/blkid -o udev -p %N"
ENV{ID_FS_LABEL}!="KAYSTICK", GOTO="kaystick_end"
ACTION=="add", RUN+="/bin/mkdir -m 0 -p /home/k/KAYSTICK", RUN+="/bin/mount -o noatime,umask=077,fmask=177,utf8,uid=1000,gid=1000,sync /dev/%k /home/k/KAYSTICK"
ACTION=="remove", RUN+="/bin/umount -l /dev/%k", RUN+="/bin/rmdir /home/k/KAYSTICK"
LABEL="kaystick_end"

然后运行此命令重新加载 udev 规则:

udevadm control --reload-rules

现在,每次我插入 USB 棒时,都会创建一个目录 /home/k/KAYSTICK,并使用自定义挂载选项将棒挂载到此目录。移除棒时,棒会自动卸载,目录也会被删除。我之前尝试过的 /etc/fstab 解决方案无法自动卸载,所以这个解决方案要好得多。

相关内容