如何防止 PolicyKit 要求输入密码?

Sco*_*nce 30 sudo password policykit

多年来,我的sudoers文件中有以下内容:

scott   ALL=NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)

对于那些不知道的人,这可以防止sudo朋友(gksudo等)要求输入密码。然而,多年来,越来越多的曾经使用sudo过的东西已经转向使用 PolicyKit。

我正在寻找 PolicyKit 的等效配置,这样它就永远不会询问我的密码。

对于那些不喜欢我的要求的人,让我这样说:我理解默认配置的原因,它们是合理的。我也了解我想要进行的配置中固有的风险。尽管如此,这是我想要设置我的系统的方式。那些不完全理解上述内容的人不应该尝试我正在尝试的东西。

小智 18

您可以通过将操作替换为通配符来欺骗 PolicyKit 并禁止所有密码提示。

免责声明:以下内容将在全局范围内禁止属于 admin 组的每个人的所有密码提示,登录屏幕除外。这是非常危险的,永远不应该实施,因为你很可能最终会破坏你的系统!!

不要说你没有被警告!

注意:如果您运行的是 12.04 或更高版本,请将“admin”替换为“sudo”!

将“用户名”替换为您的实际用户名:

usermod -aG admin username
Run Code Online (Sandbox Code Playgroud)

切换到root:

sudo -i
Run Code Online (Sandbox Code Playgroud)

创建新策略:

gedit /var/lib/polkit-1/localauthority/50-local.d/disable-passwords.pkla
Run Code Online (Sandbox Code Playgroud)

添加以下内容:

[Do anything you want]
Identity=unix-group:admin
Action=*
ResultActive=yes
Run Code Online (Sandbox Code Playgroud)

保存并退出。然后去尝试一些通常需要密码的东西。:)

注意:您使用什么作为 .pkla 文件名并不重要。你可以随意命名它。

最后,这是您在禁止密码提示时需要的唯一策略,因为同样,它是全局性的。

  • 有人可以描述一下这将如何“破坏”系统? (5认同)
  • 是的,请。这将如何破坏系统?不是这个!在这之后你做的一些愚蠢的事情会破坏系统,但不是这个!这将允许您在没有密码的情况下在主机上执行任何操作。如果你做了一些愚蠢的事情,你就会破坏系统。如果你必须输入密码并且你做了一些愚蠢的事情,你会破坏系统。这本身只是让做一些愚蠢的事情变得更容易*一点。 (5认同)
  • @prusswan 您可以使用`Identity=unix-user:scott` 只允许用户“scott”执行操作。此外,如果您只想允许某些操作,您可以 grep /var/log/auth.log 并且 polkitd 将在提示您输入密码时输出您正在尝试的 polkit 的全名。`cat /var/log/auth.log | grep polkitd` 会给你一个非常快速的列表 (4认同)
  • “这是极其危险的”......那么也许不要让这些用户成为管理员! (3认同)

dou*_*oug 9

您可以创建一个 .pkla,无论是多合一或基于操作组的一对,都没有关系。

要参考 /usr/share/polkit-1/actions,请在文本编辑器中打开感兴趣的文件以获取操作 ID。

至于 .pkla 或 2,我发现放置它们的最佳位置在这里,它将受到任何更新的保护

/var/lib/polkit-1/localauthority/50-local.d
Run Code Online (Sandbox Code Playgroud)

因此,例如这里是我的主要内容,名为 package-manager.pkla 虽然它扩展了一点,而不仅仅是包管理策略的

[Install package file]
Identity=unix-group:admin
Action=org.debian.apt.install-file;org.debian.apt.update-cache;org.debian.apt.install-or-remove-packages;org.debian.apt.upgrade-packages
ResultActive=yes

[Install package synaptic]
Identity=unix-group:admin
Action=com.ubuntu.pkexec.synaptic
ResultActive=yes

[Change add repo]
Identity=unix-group:admin
Action=com.ubuntu.softwareproperties.applychanges;org.debian.apt.change-repository
ResultActive=yes

[usbcreator format]
Identity=unix-group:admin
Action=com.ubuntu.usbcreator.format
ResultActive=yes

[Install bootloader]
Identity=unix-group:admin
Action=com.ubuntu.usbcreator.bootloader
ResultActive=yes

[Add users]
Identity=unix-group:admin
Action=org.freedesktop.accounts.user-administration
ResultActive=yes
Run Code Online (Sandbox Code Playgroud)

请注意,从12.04开始,用于“admin”用户的组应更改为 sudo,即。

Identity=unix-group:sudo
Run Code Online (Sandbox Code Playgroud)

另请注意,每个部分可以将动作串在一起,没有空格,请使用 ; 在id之间

  • 看起来您正在为每个程序单独进行设置。这看起来相当乏味,特别是如果我后来安装了一些其他想要使用 PolicyKit 的程序。我正在寻找一种方法来进行影响一切的全局配置更改。 (3认同)