![如何防止 PolicyKit 要求输入密码?](https://linux22.com/image/959654/%E5%A6%82%E4%BD%95%E9%98%B2%E6%AD%A2%20PolicyKit%20%E8%A6%81%E6%B1%82%E8%BE%93%E5%85%A5%E5%AF%86%E7%A0%81%EF%BC%9F.png)
多年来,我的sudoers
档案里一直有以下内容:
scott ALL=NOPASSWD: ALL
对于那些不知道的人来说,这可以防止sudo
朋友(gksudo
等)询问密码。然而,多年来,越来越多曾经使用过的东西sudo
已经转向使用 PolicyKit。
我正在寻找 PolicyKit 的等效配置,这样它就永远不会要求我输入密码。
对于那些不喜欢我的请求的人,我要说的是:我理解默认配置的原因,而且这些理由很合理。我也理解我想要进行的配置所固有的风险。尽管如此,这是我想要设置系统的方式。那些不完全理解上述内容的人不应该尝试我正在尝试的事情。
答案1
你可以使用与 Ubuntu Live CD 相同的技术通过欺骗 PolicyKit 并使用通配符替换操作来抑制所有密码提示。
免责声明:以下内容将全局禁止所有属于管理员组的用户的密码提示,但登录屏幕除外。这是极其危险的,绝不应该实施,因为您很有可能最终会破坏您的系统!!
别说你没有受到警告!
注意:如果您运行的是 12.04 或更高版本,请将“admin”替换为“sudo”!
将“用户名”替换为您的实际用户名:
usermod -aG admin username
切换到根目录:
sudo -i
创建新策略:
gedit /var/lib/polkit-1/localauthority/50-local.d/disable-passwords.pkla
添加以下内容:
[Do anything you want]
Identity=unix-group:admin
Action=*
ResultActive=yes
保存并退出。然后去尝试一些通常需要密码的事情。:)
注意:.pkla 文件名可以随意命名。您可以随意命名。
最后,这是抑制密码提示时您需要的唯一策略,因为它在全球范围内都是如此。
答案2
您可以创建一个 .pkla,可以是全部内容,也可以是基于操作组的几个内容,这并不重要。
请参阅 /usr/share/polkit-1/actions,在文本编辑器中打开感兴趣的内容以获取操作 ID。
至于 .pkla 或 2 个,我发现最好的存放位置是这里,这样可以防止任何更新
/var/lib/polkit-1/localauthority/50-local.d
例如,这是我的主要包,名为 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
请注意,从12.04用于“admin”用户组应该更改为 sudo,即。
Identity=unix-group:sudo
还要注意的是,每个部分的操作可以串联在一起,没有空格,在 id 之间使用 ;