当通过 xRDP 会话连接时,如何授权用户能够解锁用户 GUI 来创建新用户?

当通过 xRDP 会话连接时,如何授权用户能够解锁用户 GUI 来创建新用户?

这周我确实深入研究了 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 文件中添加覆盖设置。

  1. 首先添加一些内容来描述设置的作用:

例子:

[Authorize admin control of user settings]
  1. 确定覆盖适用于谁。这可以是用户/组、选定的用户/组等。使用分号分隔多个条目。以下条目定义为任何用户:

例子:

Identity=unix-user:*
  1. 引用从 pkaction 获取的有关用户管理操作的列表。添加条目以将定义的身份与操作关联。以下内容将任何 org.freedesktop.accounts.* 和任何 org.gnome.controlcenter.user-accounts.* 操作与定义的 Identity=unix-user:* 关联

例子:

Action=org.freedesktop.accounts.*;org.gnome.controlcenter.user-accounts.*
  1. 定义规则适用的条件。请参阅“授权条目”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 
  1. 保存文件并退出
  2. 激活更改的最干净的方法是重新启动,而不是简单地杀死/关闭 polkitd

相关内容