使用 Udisks2 无需密码挂载分区

使用 Udisks2 无需密码挂载分区

我正在尝试通过在 thunar 中单击它们或运行脚本来安装硬盘上的某些分区udisksctl mount -b /dev/sdb6 &,但我找不到不出现密码提示的方法。

我在群组中。一开始<myusername> wheel users我并不在该群组中,因此我将自己添加到群组中,以尝试让其正常工作。users

我的 fstab 如下所示:

#
# /etc/fstab
# Created by anaconda on Sun Mar 12 19:43:55 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/luks-d7a09ab1-cfa0-4910-ad28-041248fd55ed /                       ext4    defaults,x-systemd.device-timeout=0 1 1
UUID=d713df23-90c8-4ed3-9246-9467be868d5d /boot                   ext2    defaults        1 2
/dev/sdb6   /run/media/username/shared/ vfat    noauto,user,exec,rw,async,atime 0 0
/dev/sdb12  /run/media/username/extra/      ext4 noauto,user,exec,rw,async,atime    0 0

实际上,这样做的目的是在登录时安装这两个分区而不增加启动时间(它们是媒体分区),所以如果有办法在后台做到这一点那就更好了。

答案1

据我所知,udisks 需要一个 policykit 规则来允许未经身份验证的用户挂载磁盘。作为此页面建议,只需创建一个/etc/polkit-1/rules.d/10-udisks2.rules包含以下内容的文件:

// See the polkit(8) man page for more information
// about configuring polkit.

// Allow udisks2 to mount devices without authentication
// for users in the "wheel" group.
polkit.addRule(function(action, subject) {
    if ((action.id == "org.freedesktop.udisks2.filesystem-mount-system" ||
         action.id == "org.freedesktop.udisks2.filesystem-mount") &&
        subject.isInGroup("wheel")) {
        return polkit.Result.YES;
    }
});

答案2

pkaction如果您的版本为0.105或更低版本,Andrew M 的答案将不起作用。
要检查pkaction版本:

pkaction --version

pkaction 版本 0.105

如果pkaction版本为0.105或更低,则创建规则/etc/polkit-1/rules.d/10-udisks2.rules将不起作用。
对于或更低pkaction版本0.105(尚未测试过低于 的版本),请创建包含以下内容的0.105文件:/etc/polkit-1/localauthority/50-local.d/50-udisks.pkla

[udisks]
Identity=unix-group:sudo
Action=org.freedesktop.udisks2.filesystem-mount-system
ResultAny=yes
ResultInactive=no
ResultActive=yes
这允许sudo组中的任何人无需身份验证即可使用 udisks2 挂载分区。

Forrest Voight 的答案和此答案之间的区别在于,虽然两者都有效,但此方法不允许对所有操作进行统一的无密码身份验证。无密码身份验证仅在挂载分区时启用。

答案3

我可以使用以下设置向 udisk 应用权限。

/etc/polkit-1/localauthority/50-local.d/50-udisks.pkla

[udisks]
Identity=unix-group:users
Action=org.freedesktop.udisks*
ResultAny=yes
ResultInactive=no
ResultActive=yes

参考:https://mxlinux.org/wiki/system/mount-internal-partition-without-using-root-password/

答案4

Andrew M. 的答案适用于较新版本的 Ubuntu,但对于 Ubuntu 17.04 或更低版本,PolicyKit 配置的工作方式不同。

/etc/polkit-1/localauthority/50-local.d/99-allow-sudo-group-to-do-anything-without-password.pkla使用下列内容进行创建:

[AllowSudoGroupToDoAnythingWithoutPassword]
Identity=unix-group:sudo
Action=*
ResultAny=yes

允许群组内的用户sudo进行全面的无密码身份验证。

相关内容