如何要求所有挂载式应用程序使用其他内部硬盘分区的密码进行挂载(使用 udev)

如何要求所有挂载式应用程序使用其他内部硬盘分区的密码进行挂载(使用 udev)

我试图通过阻止任何不需要密码的分区安装来阻止对同一物理硬盘(布局:gpt)上具有不同文件系统的其他分区的访问。

FSTAB 负责使用带密码的挂载。如果它不在 FSTAB 中,则需要密码。

对于 Nautilus 和 udisks,我尝试使用 udev 设置 ENV{UDISKS_ 命令,如下所示:

KERNEL=="sda10", ENV{UDISKS_PRESENTATION_NOPOLICY}="1", ENV{UDISKS_SYSTEM_INTERNAL}="1"

我已经验证了 ENV 是通过使用

udevadm info --name="/dev/sda10" --query=all

但这似乎并不能阻止(非 gksudo)Nautilus 或 udisks 在单击时安装分区。

我希望它在尝试时提示输入密码。如下所述:

http://manpages.ubuntu.com/manpages/precise/man7/udisks.7.html

如果设置,这将覆盖通常基于总线类型的检测,即设备是否被视为“系统内部”。 “0”表示“可移动”(即可自动挂载,普通用户可以挂载),任何其他值都表示“系统内部”(即无自动挂载,只有管理员可以挂载)。

提前致谢。

PS 相反使用这个

内核==“sda10”,环境{UDISKS_PRESENTATION_HIDE}=“1”

确实阻止 Nautilus 在设备部分显示分区。尽管隐藏可能不会阻止 udisk 安装它(没有尝试过)。

答案1

Reddit 上有解决方案:Ubuntu 如何允许在未经身份验证的情况下安装内部块设备?

顺便说一句:我使用的是 linuxmint-mate 19.1 (tessa) 和 18.3 (Sylvia),这两个都是基于 Ubuntu Bionic Package 的 LTS 版本。我没有在 ubuntu 本身上进行测试。

只需以 root 身份打开文件/var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla并更改行

Action=org.freedesktop.udisks.filesystem-*;org.freedesktop.udisks.drive-ata-smart*;org.freedesktop.udisks2.filesystem-mount-system;org.freedesktop.udisks2.encrypted-unlock-system;org.freedesktop.udisks2.filesystem-fstab;

到这个:

Action=org.freedesktop.udisks.filesystem-*;org.freedesktop.udisks.drive-ata-smart*;org.freedesktop.udisks2.encrypted-unlock-system;org.freedesktop.udisks2.filesystem-fstab;

如您所见,只需删除此部分行:

org.freedesktop.udisks2.filesystem-mount-system;

因此,每次请求在 Caja 中挂载分区时,都会打开一个身份验证请求窗口来挂载它;

您甚至不需要重新启动或退出用户会话。
对我来说,它非常完美。

答案2

我认为这应该可以通过规则来实现PolicyKit/polkit,而不是udev直接编辑规则。

默认情况下,在 12.04 上,默认允许挂载。

user@precise:~$ pkaction --verbose --action-id org.freedesktop.udisks.filesystem-mount
org.freedesktop.udisks.filesystem-mount:
  description:       Mount a device
  message:           Authentication is required to mount the device
  vendor:            The udisks Project
  vendor_url:        http://udisks.freedesktop.org/
  icon:              drive-removable-media
  implicit any:      no
  implicit inactive: no
  implicit active:   yes

应该可以创建一个覆盖此规则的本地规则(请参阅man pklocalauthority),并要求身份验证才能执行此操作。创建一个名为的文件,例如/etc/polkit-1/localauthority.conf.d/50-disable-automount.pkla包含:

[Disable automount]
Identity=unix-user:*
Action=org.freedesktop.udisks.filesystem-mount
ResultAny=auth_admin
ResultInactive=auth_admin
ResultActive=auth_admin

您可能需要调查一些进一步的细节(例如,有更具体的操作,例如org.freedesktop.udisks.filesystem-mount-system-internal可能仅适用于本地硬盘而不是 USB 记忆棒,并且您可以根据是否希望最近输入的密码就足够来选择auth_adminauth_admin_keep

我不完全确定 policykit 的一些语义,文档似乎有点稀疏,所以你可能需要多玩一会儿,但我认为这是正确的做法。请参阅这里用于 Ubuntu 中操作的默认 policykit 权限。

相关内容