sudo 命令详解

发布时间 2023-11-29 17:42:24作者: 湖中客

一、sudo 命令简介

sudo 是一个在 Linux 系统中用于执行特权命令的超级用户工具。sudo 命令默认安装在大多数 Linux 发行版中,它可以允许用户以 root 用户权限执行某些命令,只需在 linux 系统/etc/sudoers文件中配置用户和组执行 sudo 命令的权限,root 用户默认配置 sudo 权限。

二、sudo 命令语法

1、sudo 命令的基本语法如下:

# <command> 是要执行的命令。
sudo <command>

# sudo 命令的常用选项:
  -A, --askpass                 使用助手程序进行密码提示
  -b, --background              在后台运行命令
  -C, --close-from=num          关闭所有 >= num 的文件描述符
  -E, --preserve-env            在执行命令时保留用户环境
      --preserve-env=list       保留特定的环境变量
  -e, --edit                    编辑文件而非执行命令
  -g, --group=group             以指定的用户组或 ID 执行命令
  -H, --set-home                将 HOME 变量设为目标用户的主目录。
  -h, --help                    显示帮助消息并退出
  -h, --host=host               在主机上运行命令(如果插件支持)
  -i, --login                   以目标用户身份运行一个登录
                                shell;可同时指定一条命令
  -K, --remove-timestamp        完全移除时间戳文件
  -k, --reset-timestamp         无效的时间戳文件
  -l, --list                   
                                列出用户权限或检查某个特定命令;对于长格式,使用两次
  -n, --non-interactive         非交互模式,不提示
  -P, --preserve-groups         保留组向量,而非设置为目标的组向量
  -p, --prompt=prompt           使用指定的密码提示
  -r, --role=role               以指定的角色创建 SELinux 安全环境
  -S, --stdin                   从标准输入读取密码
  -s, --shell                   以目标用户运行 shell;可同时指定一条命令
  -t, --type=type               以指定的类型创建 SELinux 安全环境
  -T, --command-timeout=timeout 在达到指定时间限制后终止命令
  -U, --other-user=user         在列表模式中显示用户的权限
  -u, --user=user               以指定用户或 ID 运行命令(或编辑文件)
  -V, --version                 显示版本信息并退出
  -v, --validate                更新用户的时间戳而不执行命令
  --                            停止处理命令行参数

2、sudo 命令的使用

普通用户使用 sudo 命令需要输入 password 确认是否执行特权命令,而 root 用户使用 sudo 命令不需要输入 password, 因为在 /etc/sudoers 文件中默认配置,允许 root 用户可以在系统任何地方执行任何命令。

sudo 命令的常用示例:

# 更改用户密码:
sudo passwd user

# 更改用户组:
sudo usermod -G group user

# 更改用户主目录的权限:
sudo chown -R user:group /home/document

# 更改文件所有者和所属组
sudo chown user:group /home/file

# 更改文件权限
sudo chmod -R 755 /home/file

3、普通用户如何使用 sudo 命令

提示: username 不在 sudoers 文件中。此事将被报告。

# 方法1:使用 root 用户编辑 /etc/sudoers 文件,将 username 添加到 %wheel 组中。
# 例如:%hzk  ALL=(ALL) ALL
%用户名 ALL=(ALL) ALL

# 方法2:使用 root 用户编辑 /etc/sudoers 文件,将 username 添加到 %wheel 组中,设置不需要密码。
# 例如:%hzk  ALL=(ALL) NOPASSWD: ALL

%用户名 ALL=(ALL) NOPASSWD: ALL