设置:Ubuntu 16.04.03 和 Unity I/F
用于挂载设备的基于 HAL 的 /etc/fstab 系统提供了仅限超级用户操作的安全性,还允许设置每个挂载点的读写属性(参见fstab 手册页)。
另一方面,根据本gvfs-mount
手册页:
gvfs-mount provides commandline access to various aspects of GIOs
mounting functionality.
Mounting refers to the traditional concept of arranging multiple file
systems and devices in a single tree, rooted at /. Classical mounting
happens in the kernel and is controlled by the mount utility. GIO
expands this concept by introducing mount daemons that can make file
systems available to GIO applications without kernel involvement.
有没有办法gvfs-mount
为所有设备或每个设备指定仅超级用户才能调用的权限?在使用时,有一种方法可以在设备挂载点上设置读写权限gvfs-mount
?
附言:如果不是,为什么不是?
答案1
在 Ubuntu 中,gvfs-mount
用于udisks2
音量监控的“本地”设备:
卷监视器提供一组表示
GDrive
物理设备或服务层次结构的对象。所谓的本机卷监视器提供对本地可用设备的访问,即那些出现在 /dev 中并可通过标准 POSIX 方式挂载的设备(GVolume
, ) 。GVfs 提供了这些设备的几种实现(hal、gdu、udisks2),并且只能有一种处于活动状态。GMount
mount
umount
您可以使用 Polkit 规则控制对 udisks2 的访问。相关的 polkit 操作包括:
$ pkaction| grep mount
org.freedesktop.udisks2.filesystem-mount
org.freedesktop.udisks2.filesystem-mount-other-seat
org.freedesktop.udisks2.filesystem-mount-system
org.freedesktop.udisks2.filesystem-unmount-others
你可以通过 Polkit 规则要求管理员访问权限,如下所示(例如/etc/polkit-1/localauthority/50-local.d/disable-mount.pkla
):
[Disable mount]
Action=org.freedesktop.udisks2.filesystem*
Identity=*
ResultActive=auth_admin
ResultAny=auth_admin
ResultInactive=auth_admin
这意味着用户需要 Polkit 管理员权限(默认情况下,sudo
Ubuntu 中的组或 root 用户)。将显示如下提示:
polkit 0.106 增加了对 JavaScript 规则的支持,这意味着你可以设置更细致的权限,但该版本在 Ubuntu 中尚不可用。
大概gvfs-mount
将实际的读/写权限留给挂载后端。
尽管如此, 中的规则/etc/fstab
仍然优先于其他规则gvfs-mount
。 对于/dev/sdb
中的规则/etc/fstab
:
/dev/sdb /mnt ext4 ro,noexec 0 0
gvfs-mount
只是抛出一个错误并udisksctl
使用规则挂载fstab
:
$ gvfs-mount -d /dev/sdb
No volume for device file /dev/sdb
$ udisksctl mount -b /dev/sdb
Mounted /dev/sdb at /mnt.
当然,udisksctl
要求获得 Polkit 授权,因为我创建了pkla
前面提到的文件。