You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动