sudo详解

sudo

作用:定义某用户A以另外哪一个用户的身份通过哪些主机执行某命令,用户A执行命令时使用自己的密码,

密码有效期5分种,过后再执行其他命令,需再次输入密码。

sudo COMMAND     #以某用户的身份执行相关命令

sudo的配置文件:/etc/sudoers  

1)权限440

2)每行定义了一个sudo条目,sudo条目格式:

who   which_hosts=(runas)  TAG:command     #TAG为标签,如果TAG定义为NOPASSWD,则执行命令时,无需输入密码

      在哪些主机    以哪个用户身份 执行什么命令

eg:  root     ALL=(ALL)    ALL

3)sudo支持别名机制:类似定义的组

  User_Alias 对应who------用户别名

   Host_Alias对应which_hosts-----------主机别名

       Runas_Alias对应runas----------runas别名

  Cmnd_Alias对应command

别名遵循EBNF语法,别名的名字只能使用大写英文字母

用户别名:

     User_Alias  USERADMIN =  X,X,X,X 

    其中X可以是:用户名、uid,uid前需加#、组名:组名前需加%、其他用户别名

     备注:X前面加!表示取反,除了该X之外

eg:

     User_Alias   FULLTIMERS = hodoop,%sysadmin

主机别名:

    Host_Alias  HOST = X,X,X,X

    其中X可以是:主机名、IP、网络地址、其他主机别名

eg:

     Host_Alias   CUNETS = 128.130.0.0/255.255.0.0

runas别名:

     Runas_Alias  OP = X,X,X,X

    其中X可以是:用户名、#uid、%组名、其他Runas别名

eg:

      Runas_Alias   OP = root,operator

命令别名:

     最好使用命令的绝对路径

     其中X可以是命令执行路径、目录(此目录下的所有命令)、其他显示定义过的命令别名

      Cmnd_Alias REBOOT = /usr/sbin/reboot

备注:别名必须先定义,而后才能使用。

visudo命令

用来编辑/etc/sudoers文件

sudo命令

sudo

     -l     #查看当前用户可执行的sudo命令

     -k    #让认证信息立即失效,下次使用sudo仍需输入密码

eg:hadoop以管理员身份执行useradd,usermode命令

管理员登陆:

#useradd hadoop

#passwd hadoop

#visudo

hadoop ALL=(root) /usr/sbin/useradd,/usr/sbin/usermod  #增加一行,保存退出

切换hadoop登陆

#su - hadoop

$sudo /usr/sbin/useradd tom   #以管理员命令执行添加用户tom操作

[sudo]password for hadoop:输入hadoop密码

5分钟内,执行sudo命令,不用认证密码。可以让认证信息失效,下次使用sudo仍需输入密码

$sudo -k

$sudo -l   #查看当前用户可以执行的sudo命令

###让hadoop输入useradd不需要输入密码,而输入usermod需要输入密码###

#visudo

hadoop ALL=(root)  NOPASSWD:/usr/sbin/useradd,PASSWD:/usr/sbin/usermod

示例:让hadoop用户、hadoop组、useradmin组可以完成用户添加、修改、删除,密码修改权限(除修改管理员密码外)

#visudo

User_Alias USERADMIN = hadoop, %hadoop, %useradmin

Cmnd_Alias USERADMINCMND = /usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdel, /usr/bin/passwd, !/usr/bin/passwd root

USERADMIN ALL=(root) NOPASSWD: USERADMINCMND

仍然存在漏洞:

      只是不能执行sudo /usr/bin/passwd root 命令,但是执行sudo /usr/bin/passwd是以管理员身份运行,改的是root的密码,所以还是可以修改管理

员密码的

解决方法:glob通配符

     Cmnd_Alias USERADMINCMND = /usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdel, /usr/bin/passwd [a-zA-Z]*, !/usr/bin/passwd root

 用户使用sudo执行命令时,会记录日志:/var/log/secure文件   权限660

111
原文地址:https://www.cnblogs.com/zmdsg/p/7281940.html