Ubuntu 22.04 LTS下如何赋予用户使用udisksctl的权限?
Ubuntu 22.04 LTS下如何赋予用户使用udisksctl的权限?
兄弟我懂你这种没权限评论现有帖子只能开新帖的无奈😅,先理清楚你的情况:你想在开机不加载GUI的情况下挂载USB盘,用来做自动备份之类的操作,但执行udisksctl mount -b /dev/sda1 --no-user-interaction命令时遇到了权限错误:
Error mounting /dev/sda1: GDBus.Error:org.freedesktop.UDisks2.Error.NotAuthorizedCanObtain: Not authorized to perform operation
你试过创建10-udisks.pkla文件的方法,但在Ubuntu 22.04上重启后还是没用对吧?这是因为从Ubuntu 22.04开始,负责权限管理的polkit组件更新到了0.120+版本,不再支持原来的.pkla格式配置文件,改用JavaScript风格的规则文件了。给你具体的解决步骤:
首先创建一个新的polkit规则文件,打开终端执行:
sudo nano /etc/polkit-1/rules.d/10-udisks-mount.rules在打开的编辑器里写入以下规则(记得把
你的用户名替换成实际的系统用户名):// 允许指定用户无交互挂载磁盘 polkit.addRule(function(action, subject) { if (action.id == "org.freedesktop.udisks2.filesystem-mount-system" && subject.user == "你的用户名") { return polkit.Result.YES; } });如果你想让某个用户组(比如
wheel组)的所有用户都拥有这个权限,可以改成:// 允许wheel组用户无交互挂载磁盘 polkit.addRule(function(action, subject) { if (action.id == "org.freedesktop.udisks2.filesystem-mount-system" && subject.isInGroup("wheel")) { return polkit.Result.YES; } });保存文件(按
Ctrl+O,回车确认,再按Ctrl+X退出编辑器),然后重启polkit服务或者直接重启系统:sudo systemctl restart polkit最后测试一下之前的挂载命令,应该就能正常执行了:
udisksctl mount -b /dev/sda1 --no-user-interaction
备注:内容来源于stack exchange,提问作者DasKraut




