sudo 命令
-
ls -l /usr/bin/sudo
-
sudo -i -u zhangsan 切换身份
-
sudo [ -u user ] command
-V 显示版本信息等配置信息
-u user 默认为 root
-l,ll 列出用户在主机上可用的和被禁止的命令
-v 再延长密码有效期5分钟,更新时间戳
-k 清除时间戳(1970-01-01),下次需要重新输密码
-K 与-k类似,还要删除时间戳文件
-b 在后台执行指令
-p 改变询问密码的提示符号
示例:-p ”password on %h for user %p:”
sudo 相关文件
- 配置文件
/etc/sudoers
/etc/sudoers.d/* - 时间戳文件
/var/db/sudo - 日志文件
/var/log/secure - 配置文件支持使用通配符 glob
? 任意单一字符
* 匹配任意长度字符
[abc] 匹配其中一个字符
[!abc] 除了这三个字符的其它字符
\x 转义
[[alpha]] 字母 示例 :/bin/ls [[alpha]]* - 帮助文档 man 5 sudoers
- sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系管理员
- sudo可以提供日志,记录每个用户使用sudo操作
- sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机
- sudo使用时间戳文件来完成类似“检票”的系统,默认存活期为5分钟的“入场券”
- 通过visudo命令编辑配置文件,具有语法检查功能
visudo -c 检查语法
visudo -f /etc/sudoers.d/test
sudo 别名
User_Alias Host_Alias(Runas_Alias) Cmnd_Alias
User_Alias ADMINUSER = adminuser1,adminuser2
Cmnd_Alias ADMINCMD = /usr/sbin/useradd,/usr/sbin/usermod,/usr/bin/passwd [a-zA-Z]*,!/usr/bin/passwd root
ADMINUSER ALL=(root) NOPASSWD:ADMINCMD,PASSWD:/usr/sbin/userdel
Defaults:wang runas_default=tom
wang ALL=(tom,jerry) ALL
sudo 示例
允许用户 zs 不输入密码就可以查看 /var/log/messages*
visudo -f /etc/sudoers.d/zs
zs ALL= NOPASSWD: /bin/cat /var/log/messages*, !/bin/cat /var/log/messages* *
允许用户 lisi 代理 zs 能够运行同上的命令
zs ALL= NOPASSWD: /bin/cat /var/log/messages*, !/bin/cat /var/log/messages* *
lisi ALL=(zs) NOPASSWD: ALL
[lisi@Centos6-43-6 ~]$ sudo -u zs sudo -u root cat /var/log/messages-20200220
特别注意:
上面的命令如果写成这样
zs ALL= NOPASSWD: /bin/cat /var/log/messages* 就会有很大的安全风险
那么 以zs 的身份就可以运行 sudo cat /var/log/messages /etc/shadow …