Ubuntu 打开软件中心/系统设置总是要输入密码?三步彻底关闭
环境:Ubuntu 26.04 LTS · 桌面版 · 普通个人电脑/虚拟机场景
一、问题描述
很多朋友在 Ubuntu 桌面环境下会遇到这种情况:已经配置了 sudo 免密(在 /etc/sudoers.d/ 里加了 NOPASSWD),但在软件中心、系统设置、磁盘管理这类图形应用里,每次操作依然会弹出"输入账号密码"的认证框,非常烦人。
二、原因分析(为什么 sudo 免密没用)
关键点在于:图形应用和管理员密码是两套不同的认证机制。
| 机制 | 用途 | 配置位置 |
|---|---|---|
sudo |
终端命令行提权 | /etc/sudoers / /etc/sudoers.d/ |
| PolicyKit(polkit) | 图形应用的权限认证(软件中心、设置等) | /etc/polkit-1/rules.d/ |
你通过终端 sudo 用的是前者;打开图形系统应用走的是后者(polkit)。所以哪怕 sudo 已经完全免密,polkit 照样会弹密码。
搞清楚原理后,解决办法就清晰了:给当前用户配置一条 polkit 免密规则。
三、操作步骤
第 1 步:确认当前用户名
bash
whoami
下面以用户名为 ubuntu 为例,请替换成你实际的用户名。
第 2 步:创建 polkit 免密规则文件
新建一个 .rules 文件,例如:
bash
sudo tee /etc/polkit-1/rules.d/50-username-nopassword.rules > /dev/null <<'EOF'
// 允许用户 "ubuntu" 免密执行任意 PolicyKit 操作
polkit.addRule(function(action, subject) {
if (subject.user == "ubuntu") {
return polkit.Result.YES;
}
});
EOF
文件名建议以数字开头(如
50-),数字越小优先级越高。权限保持默认即可。
第 3 步:检查文件权限(可选)
bash
sudo chmod 644 /etc/polkit-1/rules.d/50-username-nopassword.rules
sudo ls -l /etc/polkit-1/rules.d/50-username-nopassword.rules
确认文件为 -rw-r--r-- root root。
四、验证是否生效
用 pkexec 模拟一次需要管理员权限的操作,免密情况下会直接成功返回(退出码 0):
bash
timeout 15 pkexec --user root true 2>&1
echo "退出码: $?"
如果打印 退出码: 0,说明规则已生效。
五、收尾
之后打开软件中心、系统设置、磁盘管理等应用,都不会再弹密码框了。个别已经在运行的应用可能需要关闭后重新打开才会生效。
六、安全提醒
这条规则意味着:所有需要管理员权限的系统操作(安装/卸载软件、修改系统配置、更新驱动等)都不再询问密码,属于明显的安全降级。
- 仅建议用于个人电脑、虚拟机、可信环境;
- 如果机器上还有别人使用,或用来办公/存放重要数据,不建议开启;
- 想恢复密码验证,只需删除对应的
.rules文件即可:
bash
sudo rm /etc/polkit-1/rules.d/50-username-nopassword.rules
总结
| 问题 | 原因 | 解决 |
|---|---|---|
| 图形应用总弹密码 | 走的是 PolicyKit,不是 sudo | 添加 polkit 免密规则 |
一句话记住: 终端提权靠 sudo,图形应用认证靠 polkit,两个都要配,缺一不可。