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