Sudo特权用户<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
介绍:sudo命令通过维护一个特殊用户对应其特殊权限的数据库,实现将特权分配给不同的用户。
环境:生产环境下,我们不太可能直接使用root身份进行日常管理。第一不安全,第二有可能我们同时会有好几个管理员,那么都用root进行登录的话,将无法判断到底是那个管理员做个什么管理工作。
而更多时候,我们同样的不允许普通用户能su作为root身份,这样也是出于安全考虑。
那么如此,我们该如何做呢?
解决思路:基于种种原因,我们可以这么做,以root的身份将不同的管理权限,分配给不同的管理员。
下面分别介绍给 单个用户、组分配特权。
1、 给单个用户设定特权
修改sudo的配置文件,全路径是:/etc/sudoes
即使不知道路径也没有关系,因为我们可以用visudo命令直接打开,。编辑配置以下内容:
用户名 主机名=特权
举个例子:让用户kaodaxia在主机host上具有创建用户的权限
visudo 回车添加如下内容
kaodaxia host=/usr/sbin/adduser,/usr/bin/passwd
这里需要注意的是,所给出的特权如/usr/sbin/adduser一定要给出绝对路径,因为普通用户的PATH变量可能没有这些特权命令的路径。而且多个特权命令中间要用逗号分开。
配置完成后,用户kaodaxia就可以有添加用户的权限了。使用如下命令格式操作特权命令。
比如想创建一个叫zhangsan的用户,就可以按下面的方式完成
sudo /usr/sbin/adduser zhangsan
sudo /usr/sbin/passwd zhangsan
思考 如何让用户kaodaxia能在主机benet上执行重启和关机的命令
2、 给组用户设定特权
给组设定特权就更简单了。基本和单个用户操作一样,只需要在组名前加上%的符号就可以了。下面给个例子吧。!!
如让组guanli的所有用户都具有root权限
visudo 回车
%guanli ALL=(ALL)
保存退出,表示guanli组所有用户在所有主机上具有所有权限,那可不就是root权限了吗,。
3、 别名配置
别名的配置有点类似组的概念,不,应该说是有点像我们学过的sendmail 中利用别名实现群发功能一样。。
给个例子,,我想要用户zhangsan、zhangsi、zhangwu都具有修改用户属性的特殊权限,但是他们并不属于一个组,如果单个给他们设定权限,又很麻烦,所以我们可以给他们定义一个别名,像是逻辑上给他们放到一个组里,但这个组是虚拟的,并不存在。
Visudo 回车
user_alias zhangyi=zhangsan,zhangsi,zhangwu
zhangyi benet=/usr/sbin/chmod
User_alias 是给用户定义别名,如在上面的例子给出的是zhangyi.然后给别名定义特权。
用户在使用sudo操作特权命令时,会提示输入密码确认。如果不想要密码确认,只需要在修改配置文件时,在 特权命令后面加上 NOPASSWD:ALL就可以了。。。
如 zhangsan benet=/usr/sbin/date NOPASSWD:ALL
那么用户zhagsan在主机benet上用date命令修改时间时,就不会提示输入密码确认了。
转载于:https://blog.51cto.com/kaodaxia/197093