虽然这篇文章被标记为重复,但它并不是重复的。在所谓的重复页面上,没有任何地方提到外部驱动器,也没有提到如何在 POLKIT 内部区分它们
我做了一些研究,发现我的问题已经被问过了。它重复了 是否可以让 ubuntu 在挂载 USB 驱动器之前询问我的密码?
问题是,他们根本没有回答那个人的问题。他没有问加密驱动器的问题。他的问题和我的问题一样,不是保护单个闪存/USB 驱动器,而是保护他的 Ubuntu 系统免受插入 USB/闪存驱动器的攻击
他和我都希望 Ubuntu 在安装任何插入的 USB 驱动器之前提示输入密码。我该怎么做?我找到了这个主题 如何让 Ubuntu 在挂载分区时要求输入密码? 但这适用于所有驱动器或特定驱动器。所有驱动器都不适合我的设置,因为我不需要它安装内部驱动器。单个驱动器设置也不起作用,因为在这种情况下 UUID 是未知的,因此无法提前设置。
我认为原始发帖人很好地陈述了问题,这不是误解问题的情况,只是回答者没有回答所提出的问题。
我去添加那个已经开始的主题,但弹出的指南建议我不要再问其他问题,如果主题没有答案的话。我希望我做了正确的事,创建一个新的主题。
编辑:要求更多解释。我有内部驱动器,在机器启动时不会挂载。它们是 dm-crypt 加密驱动器,在机器启动并登录后,当我在 cryptsetup 提示符下输入密钥时,它们会被挂载。因此要求所有驱动器的密码是行不通的。正如我提到的,未知的 USB/闪存驱动器的 UUID 是未知的,因此 fstab 中的特定驱动器设置也行不通。有没有办法要求所有外部驱动器都输入密码,但不要求内部驱动器输入密码?
我感谢大家提出的所有建议,即使是那些与我的问题无关的建议
再次编辑:想想看,udev 可以用来为此编写一些规则吗?我还不太了解 udev,但似乎这很有用
编辑:Anders 不确定我应该查看该页面上的哪些内容,但我不知道如何利用该页面上的信息实现我的目标。请分享您的想法
答案1
如果你明白发生了什么这答案那么很容易就可以将它改变成你想要的行为方式。
/etc/polkit-1/localauthority/90-mandatory.d/external_mnt.pkla
只需创建一个使用以下上下文命名的文件:
[external mount pass]
Identity=unix-group:admin;unix-group:sudo
Action=org.freedesktop.udisks.filesystem-mount
ResultActive=auth_admin_keep
当安装外部设备时应该询问密码,但安装内部设备时不应该询问。
在哪里可以找到有关这些内容的更多信息:在手册中: man pklocalauthority
和man polkit
。
关于评论:How does the system know to only ask on external drives?
为了知道这一点,你应该查看源代码udisks
,设备.c在第 6674 行开始一个 if 分支,内容是:
if (is_device_in_fstab (device, NULL))
{
action_id = NULL;
}
else
{
if (device->priv->device_is_system_internal)
action_id = "org.freedesktop.udisks.filesystem-mount-system-internal";
else
action_id = "org.freedesktop.udisks.filesystem-mount";
}
因此,您可以看到,这org.freedesktop.udisks.filesystem-mount
仅适用于不被视为内部的安装。那么什么被视为内部的?这也编码在该文件中,如果您好奇,只需查找即可。
注意:我刚刚测试过这一点,它对我有用。