一、简介
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 /rootanaconda-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 HOSTNAMEHISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATELC_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密码 | 颗粒度更细的权限控制 |
审计 | 有限 | 更详细的日志 |