Sudo特权用户

介绍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 中利用别名实现群发功能一样。。

给个例子,,我想要用户zhangsanzhangsizhangwu都具有修改用户属性的特殊权限,但是他们并不属于一个组,如果单个给他们设定权限,又很麻烦,所以我们可以给他们定义一个别名,像是逻辑上给他们放到一个组里,但这个组是虚拟的,并不存在。

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命令修改时间时,就不会提示输入密码确认了。