/etc/sudoers
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
#第一个root是用户账号 第二列的ALL是登陆者的来源主机名,第三列=(ALL)是代表可以切换身份,第四列ALL是可执行的命令.
如果当前的普用户ok,能执行root的所有操作,那么我可要加一行ok ALL=(ALL) ALL 那么如果有很多人需要执行sudo,那不是要写很多行,所有就有了用户组了!
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
#%wheel代表wheel用户组,如果我们需要执行root所有操作的用户都加入到whell用户组,或者我们自定义的用户组,然后添加一行代码,就行了
限制用户sudo的权限:
比如说我只要用户ok去管理密码,不让他有别的权限:
只要在/etc/sudoers增加下面一行:
ok ALL=(root) /usr/bin/passwd
sudo就是可以用root的身份运行配置的命令:
ok ALL=(root) NOPASSWD:/usr/bin/passwd,NOPASSWD:/bin/su,NOPASSWD:/usr/bin/rz
上面的意思就是普通用户ok可以用root的身份来运行/usr/bin/passwd,/bin/su,/usr/bin/rz,并且是免输入密码
!去掉某个命令:
root ALL=(ALL) ALL
ok ALL=(root) NOPASSWD:/usr/bin/passwd,NOPASSWD:!/bin/su,NOPASSWD:/usr/bin/rz
#去掉/bin/su这个命
还有一点要注意就是执行配匹配规则是从后到前的,所以后面执行:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
ok ALL=(root) NOPASSWD:/usr/bin/*,NOPASSWD:!/bin/su,NOPASSWD:/sbin/*,NOPASSWD:/bin/*
可以看到没有说权限不足:
[ok@xtrabackup ~]$ sudo su
[root@xtrabackup ok]#
现在改变一下位置再试一下:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
ok ALL=(root) NOPASSWD:/usr/bin/*,NOPASSWD:/sbin/*,NOPASSWD:/bin/*,NOPASSWD:!/bin/su
发现显示报错:
[ok@xtrabackup ~]$ sudo su
Sorry, user ok is not allowed to execute '/bin/su' as root on xtrabackup.