好的,下面给你整理一份 Linux sudo
命令详解,从基础用法到进阶技巧,适合初学者和运维人员快速参考。
🛡️ Linux sudo
命令详解
一、什么是 sudo
?
sudo
是 Super User Do 的缩写- 用于在 Linux 系统中 以超级用户(root)或其他用户身份执行命令
- 解决直接使用 root 用户操作的安全问题
- 允许 普通用户 临时拥有管理员权限
二、基本语法
sudo [选项] 命令
常见示例:
sudo apt update # 使用 root 权限更新软件源
sudo systemctl restart nginx # 重启 nginx 服务
sudo mkdir /opt/mydir # 在 /opt 创建目录
三、常用选项
选项 | 说明 |
---|---|
-u 用户 | 指定以哪个用户执行命令,默认 root |
-i | 以目标用户的 login shell 执行,类似 su - |
-s | 以目标用户的 shell 执行命令 |
-k | 清除 sudo 缓存,下次需要输入密码 |
-K | 完全清除缓存并注销认证 |
-l | 列出当前用户可使用 sudo 的命令 |
-v | 更新 sudo 权限缓存(延长有效时间) |
-b | 后台执行命令 |
四、示例用法
1️⃣ 执行单条命令
sudo apt install git
- 提示输入当前用户密码
- 执行后权限提升到 root
2️⃣ 以其他用户身份执行
sudo -u postgres psql
- 切换到
postgres
用户执行psql
- 不需要知道 postgres 密码,只要当前用户有 sudo 权限
3️⃣ 打开 root shell
sudo -i
- 等同于
su -
- 进入 root 环境,可以执行多条命令
4️⃣ 查看可用 sudo 命令
sudo -l
输出示例:
User ajie may run the following commands on this host:
(ALL : ALL) ALL
- 表示
ajie
用户可以以 root 身份执行所有命令
5️⃣ 延长 sudo 缓存
sudo -v
- 如果在一定时间内重复使用 sudo,可以延长认证缓存,避免重复输入密码
6️⃣ 后台执行命令
sudo -b apt upgrade -y
- 命令会在后台执行,不阻塞当前终端
五、sudo 与安全
- 最小权限原则
- 不要给用户过多 sudo 权限
- 建议只授权必要命令
- 使用 sudo 日志
- sudo 操作会记录在
/var/log/auth.log
(Debian/Ubuntu)或/var/log/secure
(RHEL/CentOS)
- sudo 操作会记录在
- 避免直接使用 root
- 使用 sudo 可以保留操作痕迹
- 可以更安全地管理多用户系统
六、配置 sudo 权限
sudo 权限由 /etc/sudoers
文件控制。不要直接编辑,推荐使用 visudo
:
sudo visudo
- 添加普通用户权限示例:
ajie ALL=(ALL) ALL
- 只允许执行特定命令:
ajie ALL=(ALL) /usr/bin/systemctl, /usr/bin/reboot
- 免密码执行特定命令:
ajie ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
七、注意事项
- 输入密码时无回显,属于正常行为
- sudo 不同于 su
su
切换到目标用户,需要知道密码sudo
以当前用户认证临时提权
- sudo 配合管道
sudo command | grep something
,只提升左边命令权限- 如果管道中也需要 root 权限,需用
sudo sh -c "command | command"
八、常用实例汇总
功能 | 命令 |
---|---|
安装软件 | sudo apt install package |
更新系统 | sudo apt update && sudo apt upgrade -y |
启动服务 | sudo systemctl start nginx |
查看日志 | sudo tail -f /var/log/syslog |
编辑系统文件 | sudo nano /etc/hosts |
查看 sudo 权限 | sudo -l |
切换到 root | sudo -i |
以特定用户执行命令 | sudo -u username command |
发表回复