好的,下面给你整理一份 Linux sudo 命令详解,从基础用法到进阶技巧,适合初学者和运维人员快速参考。


🛡️ Linux sudo 命令详解


一、什么是 sudo

  • sudoSuper 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 与安全

  1. 最小权限原则
    • 不要给用户过多 sudo 权限
    • 建议只授权必要命令
  2. 使用 sudo 日志
    • sudo 操作会记录在 /var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(RHEL/CentOS)
  3. 避免直接使用 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


七、注意事项

  1. 输入密码时无回显,属于正常行为
  2. sudo 不同于 su
    • su 切换到目标用户,需要知道密码
    • sudo 以当前用户认证临时提权
  3. 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
切换到 rootsudo -i
以特定用户执行命令sudo -u username command