45107

226 分钟

#Bash 的 sudo 命令

sudo [OPTION]... 

功能

以其它用户的身份执行程序。

类型

可执行文件(/usr/bin/sudo),属于 sudo

参数

  • OPTION 选项:
    • -A, --askpass - 通过辅助程序(可能是 GUI)询问密码
    • -B, --bell - 询问密码时响铃;使用 --askpass 时此选项无效
    • -b, --background - 在后台运行程序
    • -C num, --close-from=num - 执行命令前关闭文件描述符大于或等于 num 的所有文件;num 不能小于 3
    • -D directory, --chdir=directory - 指定 directory 作为执行命令时的工作目录
    • -E, --preserve-env - 保留当前用户的环境变量;默认情况下,执行命令前会重置环境变量
    • --preserve-env=list - 保留当前用户的部分环境变量;使用逗号分隔
    • -e, --edit - 编辑文件而非执行命令;不能编辑可写目录里的文件
    • -g group, --group=group - 设置执行命令时的主要组
    • -H, --set-home - 执行命令时将 HOME 设为目标用户在 /etc/passwd 中配置的主目录
    • -h host, --host=host - 在指定的主机上远程执行命令
    • -i, --login - 运行目标用户在 /etc/passwd 中配置的登录 shell
    • -K, --remove-timestamp - 删除缓存的凭据
    • -k, --reset-timestamp - 无 CMD 参数时使缓存的凭据失效,下次必须输入密码;有 CMD 时必须输入密码并且不缓存凭据
    • -l, --list - 无 CMD 时列出 sudo 组的用户列表;有 CMD 时显示 CMD 的完整路径及所有参数
    • -N, --no-update - 不更新缓存凭据
    • -n, --non-interactive - 不提示用户输入;如果需要输入密码则报错
    • -P, --preserve-groups - 除实际组和有效组以为的组保持不变
    • -p prompt, --prompt=prompt - 指定密码提示符
    • -R directory, --chroot=directory - 指定 directory 作为执行命令时的 root 目录
    • -r role, --role=role - 使用包含指定角色的 SELinux 安全上下文执行程序
    • -S, --stdin - 将提示符写入标准错误输出,并从标准输入读取密码;而不是使用终端设备
    • -s, --shell - 如果有 SHELL 环境变量则运行该 shell;否则运行目标用户在 /etc/passwd 中配置的登录 shell
    • -t type, --type=type - 使用包含指定类型的 SELinux 安全上下文执行程序
    • -U user, --other-user=user - 与 -l 选项组合使用,列出 user 用户的权限
    • -T timeout, --command-timeout=timeout
    • -u user, --user=user - 以 user 用户身份执行命令;默认为 root 用户
    • -v, --validate - 更新用户缓存凭据
    • -h, --help - 显示帮助
    • -V, --version - 显示版本
  • CMD - 要执行的命令
  • ARGS - 传递给 CMD 的参数

#示例

以 root 用户的身份执行命令

$ ls /root
ls: cannot open directory '/root': Permission denied
$ sudo ls /root                 # 以 root 用户的身份执行命令
file1 file2 file3

以 root 用户的身份编辑文件

$ sudo -e /root/file            # 以 root 用户的身份编辑文件

以其它用户的身份执行命令

$ ls /home/user2
ls: cannot open directory '/home/user2': Permission denied
$ sudo -u user2 ls /root        # 以 user2 用户的身份执行命令
file1 file2 file3

#推荐阅读

#手册

更新: 2026/3/9

作者: PlanC

创建: 2026/3/9