如何限制用户对 `gvfs-mount` 的访问?使用 `gvfs-mount` 时如何在设备挂载点上设置 `rw` 权限?

如何限制用户对 `gvfs-mount` 的访问?使用 `gvfs-mount` 时如何在设备挂载点上设置 `rw` 权限?

设置: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),并且只能有一种处于活动状态。GMountmountumount

您可以使用 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 管理员权限(默认情况下,sudoUbuntu 中的组或 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前面提到的文件。

相关内容