在 Linux 系统中,sudo
是一个核心命令,全称为 SuperUser DO(或以超级用户权限执行)。它的主要功能是允许普通用户以提升的权限(通常是 root 用户权限)执行命令,而无需直接切换到 root 账户。以下是详细解析:
sudo
可临时授予 root 权限(或其他指定用户权限)。/etc/sudoers
配置文件,管理员可以精确控制哪些用户/组能使用 sudo
,以及能运行哪些命令。su
的区别特性 | sudo |
su |
---|---|---|
权限范围 | 仅针对单个命令 | 切换到 root 用户(需密码) |
密码要求 | 当前用户密码(默认) | root 用户的密码 |
日志记录 | 详细记录(/var/log/auth.log ) |
无明确日志 |
安全性 | 更高(最小权限原则) | 较低(直接获得 root shell) |
# 以 root 权限执行命令(需输入当前用户密码)
sudo apt update
# 以其他用户身份执行命令
sudo -u username command
# 编辑 sudoers 配置文件(使用 visudo 避免语法错误)
sudo visudo
/etc/sudoers
语法示例:
# 允许用户 alice 以 root 权限运行所有命令
alice ALL=(ALL:ALL) ALL
# 允许组 wheel 免密码使用 sudo
%wheel ALL=(ALL) NOPASSWD: ALL
visudo
编辑此文件,防止配置错误导致权限问题。sudo
操作会被记录,便于排查问题。报错 "User is not in the sudoers file"
解决方法:让 root 用户将你的账户加入 sudo
组(usermod -aG sudo username
)。
免密码使用 sudo
在 /etc/sudoers
中添加 NOPASSWD:
选项(谨慎使用)。
sudo
是 Linux 权限管理的核心工具,通过临时授权和细粒度控制,平衡了安全性与便利性。合理配置 sudoers
文件是系统管理员的重要技能。