sudo实现管理授权

sudo 命令

  1. ls -l /usr/bin/sudo
    在这里插入图片描述

  2. sudo -i -u zhangsan 切换身份

  3. 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 相关文件

  1. 配置文件
    /etc/sudoers
    /etc/sudoers.d/*
  2. 时间戳文件
    /var/db/sudo
  3. 日志文件
    /var/log/secure
  4. 配置文件支持使用通配符 glob
    ? 任意单一字符
    * 匹配任意长度字符
    [abc] 匹配其中一个字符
    [!abc] 除了这三个字符的其它字符
    \x 转义
    [[alpha]] 字母 示例 :/bin/ls [[alpha]]*
  5. 帮助文档 man 5 sudoers
  6. sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系管理员
  7. sudo可以提供日志,记录每个用户使用sudo操作
  8. sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机
  9. sudo使用时间戳文件来完成类似“检票”的系统,默认存活期为5分钟的“入场券”
  10. 通过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 …

你可能感兴趣的:(安全和加密)