sudo小结
1、别名要用大写
2、使用“\”换行
3、使用白名单策略,尽量不要赋予ALL权限(建议先关后开)
4、禁止的权限放在最后,允许的权限放在前面,sudoers配置文件的权限匹配时从后到前的
5、成员必须是存在的(用户必须存在)
6、“!”表示禁止权限
7、命令、组员、组等,用“,”分隔开(英文逗号)
8、组前面一定要带“%”
su命令缺点
1、普通用户需要知道root密码,并且切换到root用户下,才能使用root权限(超级权限)
2、普通可以修改root密码
3、超级权限泛滥,容易造成人为重大失误,导致系统崩溃或数据损失
4、建议:如果是中小型公司,不超过3个管理员时,为了管理方便,使用su来共同管理是可以接受的。(个体越多,人为出错概率越大)
sudo命令优点
1、普通用户不需要知道root密码
2、不需要切换到root用户,就可以使用超级权限
3、可控制用户拥有哪些超级权限(授权,提权)
4、对权限精细化管理,防止超级权限泛滥;比如:对权限进行分类,不同部门使用不同的超级权限;只需对应开放满足每个部门不同员工等级完成其工作的超级权限。
sudo命令原理
sudo的参数
-l:查看用户自己拥有的sudo权限
[[email protected] ~]# sudo –l
……
户 YWchuji01 可以在该主机上运行以下命令:
(root) /usr/bin/free, /usr/bin/iostat, /usr/bin/top, /bin/hostname,
/sbin/ifconfig, /bin/netstat, /sbin/route
-u:指定以某个用户身份(角色,在配置有多个角色的情况下使用)执行特定的命令操作
[[email protected] ~]$ sudo -u ricky free
对不起,用户 YWchuji01 无权以 ricky 的身份在 bogon 上执行 /usr/bin/free。 (因为sudoers配置文件中该用户只配置了一个角色root,并没有ricky,所以无权限)
[[email protected] ~]$
-k :删除时间戳,下一个sudo命令要求提供密码;前提是该用户授权中不能有"NOPASSWD:"参数。时间戳默认5分钟也会失效
[[email protected] ~]$ sudo -k
[[email protected] ~]$
visudo –c:检查/etc/sudoers配置文件语法(如果使用visudo编辑,那么会自动检查语法,如果使用vi/vim等其它编辑器编辑,需要使用visudo –c检查语法,否则可能会导致故障出现;sudoers配置文件失效,所有用户都无法使用sudo权限)
[[email protected] ~]# visudo -c
/etc/sudoers:解析正确
[[email protected] ~]#
sudo配置文件
如果是服务器集群共用一台服务器的sudoers配置文件,可以使用分发软件把sudoers配置文件分发出去实现。
授权:
oldboy ALL=(ALL) /usr/sbin/useradd
root ALL=(ALL) NOPASSWD: ALL
用户/组/User_Alias 机器/Host_Alias = (角色/Runas_Alias) 命令/Cmnd_Alias
用户/组/别名:对哪个用户或组或别名下的用户进行授权,组前一定要加“%”
机器(主机名):即在哪些主机上执行sudo权限,可以通过ALL来匹配所有主机,一般都是使用ALL;
角色:执行sudo命令权限的用户身份,即提权到某个用户,一般都是root执行;也可以定义其它用户或多个用户来执行;ALL是匹配所有用户。
命令:授权给用户的超级权限,必须是绝对路径;定义时也可以使用正则:/usr/bin/passwd [A-Za-z]*(可以修改用户密码,但只能是英文大小的用户)
例子:
[[email protected] ~]# visudo
User_Alias CJYW=%YWCHUJI,YWchuji01,YWchuji02
Runas_Alias OP=root
Cmnd_Alias CJYW_CMD=/usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostname,/sbin/ifconfig,!/bin/netstat,!/sbin/route
CJYW ALL=(OP) CJYW_CMD
原文地址:http://blog.51cto.com/13691477/2114654