这周我确实深入研究了 Google 和 AskUbuntu,但我未能找到我所面临的这个问题的令人满意的答案......
我使用 GNOME 提供的 GUI 在 Ubuntu 18.04 上创建了一个具有 ADMIN 权限的用户。每次访问该界面时,为了能够使用该屏幕创建新用户,我必须先单击屏幕顶部靠近 X(关闭窗口)按钮的“解锁”按钮。当我本地登录控制台时,此过程非常有效。
但是,当我尝试使用 xRDP 会话连接到我的 Ubuntu 并执行完全相同的过程时,我无法单击该按钮。当我远程连接时,屏幕顶部的“解锁”按钮变灰,当我将光标悬停在按钮上时会显示一条消息:“系统策略阻止更改。”
为了在该屏幕上获得相同的行为,我必须在 Ubuntu 安装上更改哪些策略,无论我是在控制台登录还是通过 xRDP 远程连接?
答案1
/etc/polkit-1/localauthority/50-local.d/46-user-admin.pkla
使用以下内容进行创建对我有用:
[user admin]
Identity=unix-user:*
Action=org.gnome.controlcenter.user-accounts.administration
ResultAny=auth_admin_keep
ResultInactive=no
ResultActive=no
答案2
该问题与 Polkit 技术有关。本地连接和远程连接时授予的权限不同。
请读到最后......
您可以通过浏览此目录中的 /usr/share/polkit-1/actions... 查看已实施的策略;您有两个文件可能控制用户帐户控制面板... 您必须查找 org.gnome-controlcenter.users-account.policy。在文件底部,您会看到类似以下内容
<allow_any>no</allow_any>
<allow_inactive>no</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
allow_inactive 值是控制远程会话中的权限的值....您可以尝试更改此文件中的值,看看这对您是否有好处....
更好的方法是保留此文件不变,但创建一个附加文件 (*.pkla),其中包含您要应用的例外情况.....pkla 文件内容示例
允许所有用户执行用户管理.....
[Allow Users administration]
Identity=unix-user:*
Action=org.gnome-controlcenter.users-account.policy
ResultAny=no
ResultInactive=yes
ResultActive=yes
将此文件保存在 /etc/polkit-1/localauthority/50-local.d/ 下
例如将其命名为 46-user-admin.pkla
然后再试一次,看看您是否可以在 xRDP 会话中执行用户管理....
为了更加严格,请更改行
身份=unix-用户:*
Identity=unix-user:%组名称%
因此只有群组才有机会管理此功能...
我希望这些信息足以帮助您开始并朝着正确的方向前进......
我们正在准备一篇关于这个主题的文章...准备好后,我们也会将其链接到此评论,以便如果您仍然有问题,您可以查看它
希望这有帮助
下次见
答案3
我遇到了解锁按钮无法通过 xrdp 或本地工作的问题。
为了修复它我这样做了:
注意:这基本上彻底消除了 ubuntu 20x gnome 用户面板上的解锁按钮
获取所有定义的 polkit 操作的列表:
/bin/pkaction
查找与用户管理相关的操作:
org.freedesktop.accounts.change-own-password
org.freedesktop.accounts.change-own-user-data
org.freedesktop.accounts.set-login-option
org.freedesktop.accounts.user-administration
org.gnome.controlcenter.user-accounts.administration
创建覆盖文件来设置您想要的权限,而不是 polkit 默认需要的权限。使用 nano 编辑器将创建文件并让您进入 nano 中的编辑模式:
sudo nano /etc/polkit-1/localauthority/50-local.d/46-user-admin.pkla
注意:文件名必须是唯一的。数字定义评估的顺序有关更多信息,请参阅 polkit 文档https://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html
在 46-user-admin.pkla 文件中添加覆盖设置。
- 首先添加一些内容来描述设置的作用:
例子:
[Authorize admin control of user settings]
- 确定覆盖适用于谁。这可以是用户/组、选定的用户/组等。使用分号分隔多个条目。以下条目定义为任何用户:
例子:
Identity=unix-user:*
- 引用从 pkaction 获取的有关用户管理操作的列表。添加条目以将定义的身份与操作关联。以下内容将任何 org.freedesktop.accounts.* 和任何 org.gnome.controlcenter.user-accounts.* 操作与定义的 Identity=unix-user:* 关联
例子:
Action=org.freedesktop.accounts.*;org.gnome.controlcenter.user-accounts.*
- 定义规则适用的条件。请参阅“授权条目”https://www.freedesktop.org/software/polkit/docs/0.105/pklocalauthority.8.html 了解有关 ResultXXX 语句所涉及的更多详细信息。
基本上:ResultActive 表示活动会话,ResultInactive 表示非活动会话,ResultAny 表示任何会话。
最终文件将如下所示:
[Authorize admin control of user settings]
Identity=unix-user:*
Action=org.freedesktop.accounts.*;org.gnome.controlcenter.user-accounts.*
ResultActive=yes
ResultInactive=yes
ResultAny=yes
- 保存文件并退出
- 激活更改的最干净的方法是重新启动,而不是简单地杀死/关闭 polkitd