导航菜单

Linux命令大全-sudo命令

陆兴东 2026-04-07 435 浏览 Linux命令

一、简介

sudo(英文全拼: super user do)命令主要功能是用来授权其它用户(非root用户)以root用户的身份去执行命令。简单的说,经由sudo所执行的命令就好像是用root用户亲身来执行一样。

二、语法

语法: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:更新用户的时间戳而不执行命令

三、实战

1、普通用户以root权限执行命令

[tom@CentOS7 ~]$ sudo systemctl restart sshd
[sudo] tom 的密码:

普通用户用root权限执行命令时,如果是第一次使用,此时需要输入当用用户的口令。

2、使用其它用户身份执行命令

[tom@CentOS7 ~]$ sudo -u root ls /root
anaconda-ks.cfg  initial-setup-ks.cfg  test  test1.txt  
公共  模板  视频  图片  文档  下载  音乐  桌面

3、查看可用权限

[tom@CentOS7 ~]$ sudo -l
匹配 %2$s 上 %1$s 的默认条目:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME
    HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE
    LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
    env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
用户 tom 可以在 CentOS7 上运行以下命令:
    (ALL) ALL

以上显示了普通用户使用root用户能执行的全部操作内容。如果不想让其执行这么多的操作,可以在配置文件中进行配置。

sudo的配置存放在/etc/sudoers文件中,如果日常工作中需要对某一个用户授权只能使用root用户执行某个操作时,此时可以使用visudo命令进行编辑。

打开sudoers配置文件,它们的常见配置示例如下:

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

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

可以根据自己在日常工作中的具体需要,在该配置文件中来调整某一个普通用户能使用root权限的什么命令。

4、编辑系统文件

[tom@CentOS7 ~]$ sudo vi /etc/hosts

三、知识扩充

su命令和sudo命令的区别如下:

命令特性

su

sudo

需要密码

目标用户密码

当前用户密码

会话持续

手动输入exit或Ctrl+D

单次命令或短时间内缓存

配置复杂度

简单

需要配置sudoers配置

安全性

需要知道root密码

颗粒度更细的权限控制

审计

有限

更详细的日志