Skip to content

sudo 免密配置

查看当前用户 sudo 权限

bash
sudo -l

输出示例:

User ubuntu may run the following commands on ubuntu:
    (ALL : ALL) ALL
    (ALL) NOPASSWD: ALL

NOPASSWD: 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 而非直接编辑文件。