sudo #
sudo
(superuser do)命令允许授权用户以其他用户(通常是超级用户或 root)的身份执行命令。它提供了一种更安全的方式来执行需要提升权限的操作,而不需要直接登录为 root 用户。
语法 #
sudo [选项] [命令]
选项 #
选项 | 描述 |
---|---|
-A , --askpass |
使用辅助程序获取密码 |
-b , --background |
在后台运行命令 |
-E , --preserve-env |
保留用户环境变量 |
-H , --set-home |
将 HOME 环境变量设置为目标用户的主目录 |
-i , --login |
模拟目标用户的初始登录 shell |
-k , --reset-timestamp |
使时间戳无效(下次使用 sudo 时将提示输入密码) |
-l , --list |
列出用户可以运行的命令 |
-n , --non-interactive |
非交互模式,不提示输入密码 |
-s , --shell |
运行指定的 shell |
-S , --stdin |
从标准输入读取密码 |
-u , --user=<用户> |
以指定用户身份运行命令,默认为 root |
-v , --validate |
更新用户的时间戳,延长认证有效期 |
--help |
显示帮助信息 |
--version |
显示版本信息 |
示例 #
- 以 root 身份执行命令:
sudo apt update
- 以特定用户身份执行命令:
sudo -u username ls -la /home/username
- 列出当前用户可以使用 sudo 执行的命令:
sudo -l
- 切换到 root 用户的 shell:
sudo -i
或
sudo -s
- 编辑系统配置文件:
sudo nano /etc/fstab
- 在后台运行命令:
sudo -b apt upgrade
- 保留当前环境变量:
sudo -E apt upgrade
- 更新认证时间戳(延长免密码期限):
sudo -v
sudo 配置 #
sudo 的配置文件是 /etc/sudoers
,应该使用 visudo
命令来编辑此文件,以避免语法错误导致的问题:
sudo visudo
典型的 sudoers 条目格式:
用户名 主机名=(可切换到的用户) 命令
例如:
# 允许 admin 用户执行任何命令
admin ALL=(ALL) ALL
# 允许 webadmin 用户不需要密码执行特定命令
webadmin ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart apache2
注意事项 #
- sudo 命令的使用受到
/etc/sudoers
文件的控制。 - 首次使用 sudo 时,系统会提示输入当前用户的密码(不是 root 密码)。
- 默认情况下,sudo 会在一段时间内(通常是 15 分钟)记住密码,之后需要重新输入。
- 使用 sudo 的所有命令都会被记录在系统日志中,通常在
/var/log/auth.log
或/var/log/secure
中。