为了安全及管理的方便,可将需要用root权限的用户加入到sudo管理,用root的权限来管理系统。利用sudo控制用户对系统命令的使用权限。
普通用户可以查看,但不能删除:
但是在/tmp公共环境下可以搞事情:
下面我们授予bqh1用户root权限。
执行如下visudo 或者 vi /etc/sudoers命令,即可打开sudo的配置文件进行编辑:
可以vi编辑器的功能:输入98jj
现在我们用普通用户创建一个用户:
如果不加sudo的话,相当于调兵没带虎符。
如何只授权于某些命令呢?例如:(touch、useradd、mkdir、rm)
注意:授权的命令得写全路径,全路径不知道的情况下可以用which查。
执行命令每次都让输入密码,如何屏蔽:
看效果,并没有提示输入密码:
案例:
定义一个管理员,别名ADMINS,在SERVER机器可以切换的角色有QHJS,能够拥有ADM和USER命令权限,不希望输入密码;再定义一个初级管理员,拥有USER权限,不需要密码,具体配置如下:
执行如下visudo 或者 vi /etc/sudoers命令,即可打开sudo的配置文件进行编辑:
可以vi编辑器的功能:输入98jj查看当前配置情况。
###################sudo 格式 ###################
#root ALL=(ALL) ALL
#User_Alias Host_Alias = Runas_Alias Cmnd_Alias
##################by sudo text#####################
定义用户或用户组别名:
User_Alias ADMINS = bqh, %home
User_Alias CHUJIADMIN=jyw
定义主机别名:
Host_Alias SERVERS = bqh-01, abchost
定义命令别名:
Cmnd_Alias USER = /usr/sbin/useradd
Cmnd_Alias ADM = /bin/rm
定义切换角色别名:
Runas_Alias QHJS = root
Runas_Alias QHJS1 = bqh
###################################################
定义用户规则:
ADMINS SERVERS = (QHJS) NOPASSWD:ADM, USER
CHUJIADMIN SERVERS = (QHJS) NOPASSWD:USER
我们切换到bqh用户下查看拥有哪些权限:
我们切换到jyw用户下查看拥有哪些权限:
我们添加新用户并加入到/home组下,再查看权限有哪些:
什么情况下使用上述别名:
大部分用ALL,工作中一般有多个系统用户,需要分类,分层次管理用户的时候才用定义。
sudo配置文件小结:
授权格则中的所有ALL字符串必须大写字母。
一行命令内容超长,可以用“”斜线换行。
“!”叹号表示非,就是命令取反的一审,即禁止执行的命令。
命令的顺序是从后向前,即把禁止的命令写到后面,如:/usr/sbin/*,!/usr/sbin/visudo