当前位置: 首页>>技术教程>>正文


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

, ,

问题描述

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

sudo umount /media/the_device

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

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

编辑:如果它发生了变化,我正在运行 9.04。我运行过大多数版本 5.10–9.04,据我回忆,一直都是这样。

最佳方法

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

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

udisks --detach /dev/sdb

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

次佳方法

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

gvfs-mount -u /media/the_device

(gvfs-mount 在 gvfs-bin 包中)应该始终有效。

第三种方法

当前的答案已被弃用。尝试:

gio mount --unmount *mounted location*

获取当前安装的分区,例如:

lsblk | grep media

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12802.html,未经允许,请勿转载。