参考文档:
https://wiki.archlinux.org/index.php/Sudo_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29(有比较详细的使用介绍)
1 | /etc/sudoers |
当调用sudo,会在接下来5分钟内可以不再输入密码,这样却带来一个问题,就是别人
在这个时间点内用你的帐号修改信息,所以可以加入-k选项。即:
1 | $sudo -k |
再调用sudo,不管调用多少次,都需要输入密码
sudo命令:
-l:列出当前用户可以使用的所有sudo类命令
-k:如上所示,调用sudo不保存密码,即让认证信息失败
-u:后跟username,以制定用户的身份执行命令(root除外)
一个sudo条目:
1 | who which_hosts(runas) Tag:command |
表示root用户可以在任何主机上运行所有命令
如果只想允许以某个主机名登录用户执行命令:
用户名 主机名=(ALL) ALL允许wheel用户组成员无密码使用sudo:
%wheel ALL=(ALL) NOPASSWD: ALLwho:User_Alias
which_hosts:Host_Alias
runas:Runas_Alias
Tag:NOPASSWD,用户不再需要输入密码 PASSWD:需要输入密码(针对单个命令定义)
commmand:Command_Alias别名:类似定义组
1 | #man sudoers |
别名必须全部而且只能使用大写英文字母的组合
用户别名:
User_Alias USERADMIN=
系统用户的用户名
组名:使用%引导
还可以包含其他已经用户别名
Host_Alias:
主机名
IP
网络地址
其他主机别名
Runas_Alias:
用户名
%组名
其他的Runas别名
Cmnd_Alias:
命令绝对路径
目录(此目录所有命令)
其他事先定义过的命令别名
练习
hadoop,root,useradd,usermod
#visudo
1 | hadoop ALL=(root) /usr/sbin/useradd /usr/sbin/usermod |
即可成功
定义一个用户别名(hadoop,hadoop组,useradmin组),命令别名:
1 | User_Alias USERADMIN = hadoop,%hadoop,%useradmin |
/var/log/secure 记录了详细信息
注意日志的安全性