更改身份验证的默认用户

更改身份验证的默认用户

当我尝试在 ubuntu 中执行某些操作时,系统会要求我使用 root 用户进行身份验证,但 ubuntu 不会为我提供哪个 root 用户的选项,它只是将其指定为设置我的机器的用户。我想知道如何更改它选择运行身份验证的用户?

例如,如果我想从 Ubuntu 软件中心安装软件,我会被要求通过用户 X 进行身份验证,而我想将其全局更改为用户 Y。

我也知道我可以从命令行使用 sudo 运行程序,但我不想这样做。

我正在使用 ubuntu 14.04。并且用户 Y 在 sudoers 文件中,而截至目前用户 X 不在。

答案1

一段时间以来,sudoers它并不是在 Ubuntu 和其他 Linux 发行版上控制用户权限的唯一方法。波尔基特允许更细粒度的权限控制。当您在较新版本的 Ubuntu 上使用 GParted 或 Synaptic 时,身份验证通常使用 polkit 进行。

要将用户(例如Y)设置为 polkit 的管理员,请在/etc/polkit-1/localauthority.conf.d/(例如99-custom.conf)中创建一个文件,其中包含:

[Configuration]
AdminIdentities=unix-user:Y

pkexec您可以使用以下方式测试其是否正确应用Y

$ pkexec bash -l
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run `/bin/bash' as the super user
Authenticating as: muru,,, (muru)
Password: 
==== AUTHENTICATION COMPLETE ===

由于您已经拥有管理员用户,因此您可以选择pkexec

$ pkexec bash
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run `/bin/bash' as the super user
Multiple identities can be used for authentication:
 1.  X,,, (Y)
 2.  Y,,, (X)
Choose identity to authenticate as (1-2): 

GUI 应该提供一个下拉列表。

答案2

TL;DR:将用户添加到 sudo 组可以解决这个问题,因为sudo usermod -aG sudo username两个都sudo 和 Polkit 使用该组。

在 Ubuntu 系统上赋予用户管理权力的通常和预期方式是将用户的帐户添加到sudo组。这不仅赋予他们通过 sudo 的权力,还赋予他们通过 Polkit 的权力。允许您在具有管理权限的用户之间进行选择的图形提示是 Polkit 提示,而不是 sudo 提示。穆鲁说,大多数提示您输入密码才能执行管理任务的图形程序都使用 Polkit,不是sudo。

但是要让用户成为管理员,允许他们使用 sudo 和 Polkit 以 root 身份执行操作,这样他们就会出现在使用 Polkit 时要进行身份验证的用户列表中,你做不是需要单独配置 sudo 和 Polkit我不建议这样做。只需将用户放入sudo组中即可。不要被名称所欺骗 - Polkit 尊重该组,就像 sudo 一样。


您的问题的措辞非常强烈地表明,您没有将用户添加到 Polkit 组,而是为该特定用户添加了自定义条目/etc/sudoers

...它只是将其指定为设置我的机器的用户。

安装 Ubuntu 时创建的用户被添加到该sudo组中。

您还提到(重点是我的):

用户 Y 在 sudoers 文件中但截至目前,用户 X 还不是。

Polkit 不使用/etc/sudoers,因此通过编辑该文件让用户能够运行sudo并不意味着他们能够通过 Polkit 获得能力。这可能是您实际上想要编辑该文件的一个可能原因——如果您通缉授予用户权限sudo但不授予 Polkit 权限。但是,您需要两者,而sudoUbuntu 中的组已为此配置,因此您应该只使用它。

自从你能够使用 sudo 命令以 root 身份运行命令,您可以添加username(当然,用实际的用户名替换它)通过运行以下命令添加到 sudo 组:

sudo usermod -aG sudo username

或者,如果您想使用 Polkit 来添加它,您可以运行此命令,该命令完成后具有完全相同的效果:

pkexec usermod -aG sudo username

运行上述任一命令后,username将能够通过 sudo 和 Polkit 以 root 身份执行任意操作。请注意,usermod需要-a标志,如图所示,否则它将消除您不想要的其他组的用户。

也可以看看如何将现有用户添加到现有组?


如果你有兴趣如何sudo 和 Polkit 都设置为向sudo组中的用户授予权限,答案可以从它们的配置文件中找到。默认情况下,/etc/sudoers包括以下几行:

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

/etc/polkit-1/localauthority.conf.d/51-ubuntu-admin.conf由组成:

[Configuration]
AdminIdentities=unix-group:sudo;unix-group:admin

因此,sudo 和 Polkit 都配置为授予属于adminsudo组之一或两者的用户管理权限。admin列出 组是为了与旧版本的 Ubuntu 兼容,其中admin代替sudo,以防您从此类版本升级并且拥有 中的用户帐户admin但没有sudo。但除了这种情况之外,您可能甚至不需要admin。运行getent group admin sudo将显示其中哪些组存在以及其中有哪些用户。在新安装的 14.04 系统上,它不会显示任何内容admin因此,使用sudo组而不是admin组来使用户成为管理员。

这些配置细节适用于 Ubuntu 14.04,因为你在问这个问题时正在运行,但也适用于撰写本文时的所有后续版本,直到 Ubuntu 17.10。在所有sudo当前支持的 Ubuntu 版本上,将用户添加到组是赋予他们完全 sudo 和 Polkit 权力的最有效和最合适的方法。


我想承认视频直播既要感谢对另一个答案(现已删除)的有用评论,这促使我写下这个答案,也要感谢我验证我提供的有关内容的信息在 Ubuntu 17.10 时仍然准确sudoers51-ubuntu-admin.conf

答案3

没有所谓的默认身份验证用户。默认情况下,Ubuntu 安装期间创建的用户(就您而言,X) 是管理员,即它隶属于 sudo 组。因此,当您执行诸如安装软件之类的高级任务时,系统会要求您输入 sudo 组中用户的密码。

现在当您添加新用户时,默认情况下,它是标准用户,必须手动将其添加到 sudo 组,或者一般来说,以管理员身份安装应用程序。将用户添加到 sudo 组后,在执行提升任务时,系统会要求您输入用户 Y 的密码(显然是以 Y 身份登录时)。

相关内容