为什么我需要 root 权限才能在命令行卸载驱动器,而在 Nautilus 中不需要?怎么改?

van*_*den 28 command-line umount sudo

当我插入拇指驱动器、媒体卡或 USB 硬盘驱动器以通过命令行卸载它时,我需要使用:

sudo umount /media/the_device
Run Code Online (Sandbox Code Playgroud)

但是,我可以在像 Nautilus 这样的文件管理器中卸载设备,只需单击弹出按钮或使用设备上的右键单击上下文菜单。

差异的原因是什么?如何更改它以便我可以在不需要 root 权限的情况下从命令行卸载?改变它是一个坏主意吗?

编辑:如果它发生了变化,我正在运行 9.04。我已经运行了大多数 5.10--9.04 版本,据我所知,它一直都是这样。

Mar*_*nas 41

Nautilus 不会直接卸载设备;它通过 DBus 与系统守护进程 (udisks-daemon) 对话并要求它卸载。

该守护程序通过联系另一个系统守护程序 PolicyKit 来检查您是否被允许这样做。

PolicyKit 使用中定义的配置/usr/share/polkit-1/actions/org.freedesktop.udisks.policy(除非本地系统管理员在 中覆盖它/etc/polkit-1)。该文件告诉 PolicyKit 具有活动控制台会话的用户可以分离驱动器,因此 PolicyKit 与第三个守护程序 ConsoleKit 对话,以查看您是否有活动控制台会话。通过 gdm 登录算作一个控制台会话;通过 ssh 登录没有。

有一个命令行工具udisks可以让你在不使用 sudo 的情况下卸载设备,使用相同的机制:

udisks --unmount /dev/sdb1
Run Code Online (Sandbox Code Playgroud)

卸载文件系统;我也可以用

udisks --detach /dev/sdb
Run Code Online (Sandbox Code Playgroud)

这使我的 USB 钥匙上的 LED 变暗。

  • 我非常感谢您促使我进行这项研究。我想要一个命令行工具来卸载设备而不使用 sudo 很长一段时间。 (3认同)

Mar*_*erg 9

情况可能已经改变——在当前的 Ubuntu 10.04 umount 中,没有 sudo 用于 USB 驱动器。一般我认为命令

gvfs-mount -u /media/the_device
Run Code Online (Sandbox Code Playgroud)

(gvfs-mount 在 gvfs-bin 包中)应该总是有效的。