sudo 免密配置
查看当前用户 sudo 权限
bash
sudo -l输出示例:
User ubuntu may run the following commands on ubuntu:
(ALL : ALL) ALL
(ALL) NOPASSWD: ALLNOPASSWD: ALL 表示当前用户可以免密码执行所有 sudo 命令。
配置免密 sudo
WARNING
免密 sudo 提升了便利性,但也降低了安全性。仅在个人开发机或可信任环境中使用。
方法一:直接修改 sudoers 文件
bash
sudo visudo添加一行:
<username> ALL=(ALL) NOPASSWD: ALL方法二:新增独立配置文件(推荐)
在 /etc/sudoers.d/ 下创建独立配置文件,避免直接修改 /etc/sudoers:
bash
sudo visudo -f /etc/sudoers.d/<username>写入:
<username> ALL=(ALL) NOPASSWD: ALL
/etc/sudoers.d/下的文件会自动被/etc/sudoers通过#includedir指令加载。
仅对特定命令免密
如果不想完全放开,可以只对特定命令免密:
<username> ALL=(ALL) NOPASSWD: /usr/bin/systemctl, /usr/bin/docker验证
bash
# 用 sudo 执行一个需要 root 权限的命令,不应提示输入密码
sudo whoami
# 输出: root原理
sudo 的权限配置由 /etc/sudoers 和 /etc/sudoers.d/ 共同控制。语法格式:
<用户> <主机>=(<运行身份>) <标签>: <命令>| 字段 | 含义 |
|---|---|
<用户> | 适用此规则的用户名或 %组名 |
ALL(主机) | 适用所有主机 |
(ALL) | 可以切换到任意用户身份执行 |
NOPASSWD: | 免密码标签 |
ALL(命令) | 允许执行所有命令 |
visudo会在保存时进行语法检查,防止错误的 sudoers 配置导致无法使用 sudo。始终使用visudo而非直接编辑文件。