Linux sudo 命令

Linux 命令大全 Linux 命令大全

sudo 全称为 Super User DO,允许授权用户以其他用户(通常是 root 用户)的身份执行命令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

使用权限:在 /etc/sudoers 中有出现的使用者。

语法

sudo [选项] 命令

例如:

sudo apt update          # 以 root 权限更新软件包列表
sudo vim /etc/hosts     # 编辑需要 root 权限的文件

参数说明

  • -i: 模拟初始登录,加载目标用户的环境
  • -s: 运行shell
  • -u user: 以指定用户身份运行
  • -l: 列出当前用户可执行的sudo命令
  • -v: 验证用户凭据(延长sudo会话)
  • -k: 撤销sudo凭据缓存

实例

以 root 权限执行单个命令:

sudo apt update
sudo systemctl restart nginx
sudo mkdir /opt/myapp

切换到 root 用户shell:

sudo -i    # 登录shell,加载root环境变量
sudo -s    # 非登录shell
sudo su -  # 另一种方式

以其他用户身份执行命令:

sudo -u username command
sudo -u postgres psql  # 以 postgres 用户运行 psql

检查可用权限:

sudo -l

编辑系统文件:

sudo nano /etc/hosts
sudo vim /etc/nginx/nginx.conf

配置文件

sudo 的配置存储在 /etc/sudoers 文件中,应该使用 visudo 命令编辑:

sudo visudo

常见配置示例:

# 允许用户免密码执行所有命令
username ALL=(ALL) NOPASSWD: ALL

# 允许用户组执行特定命令
%wheel ALL=(ALL) /bin/systemctl, /usr/bin/apt

常见问题

用户不在 sudoers 文件:

# 需要 root 用户将目标用户加入 sudo 组:
usermod -aG sudo username  # Ubuntu/Debian
usermod -aG wheel username # CentOS/RHEL

缓存时间调整:

修改 /etc/sudoers 中的 timestamp_timeout(单位:分钟):

Defaults timestamp_timeout=30

su vs sudo 的区别

特性 su sudo
需要密码 目标用户密码 当前用户密码
会话持续 直到手动exit 单次命令或短时间缓存
配置复杂度 简单 需要配置sudoers
安全性 需要知道root密码 更细粒度的权限控制
审计 有限 更详细的日志

su 命令虽然简单直接,但在现代系统管理中,sudo 通常是更推荐的选择,因为它提供了更好的安全性和审计能力。

Linux 命令大全 Linux 命令大全