分类: LINUX
2006-10-20 19:29:29
前一段不小心在/目录下执行了rm -rf *的代价就是让我损失了全部的重要数据,也越来越觉得用root用户太不安全了,所以决定学习一下sudo。
Sudo的特点是:
1、Sudo能够限制用户只在某台主机上运行某些命令。
2、Sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器。
3、Sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票(这个值可以在编译的时候改变)。
4、 Sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为411。
在/etc/sudoers的文件是sudo的主配置文件,使用vi
/etc/sudoers进行编辑,最好是使用visudo来编辑,因为visudo这个命令具有验证语法的功能。而且sudo文件里面是区分大小写的。关于sudo的配置看下面的配置文件示例:
# Host alias specification
Host_Alias INTER=inter1,inter2
Host_Alias MILAN=milan1,milan2
# Cmnd alias specification
Cmnd_Alias DUMP=/sbin/dump,/sbin/restore
Cmnd_Alias SHUTDOWN=/sbin/shutdown,/usr/bin/reboot,/usr/bin/halt
# User privilege specification
root ALL=(ALL) ALL
work ALL=NOPASSWD: ALL : INTER=/bin/rm
holmes INTER=(intermilan) DUMP
# Uncomment to allow people in group wheel to run all commands
%wheel ALL,!MILAN=(ALL) : SHUTDOWN
从上面的配置文件可以看到,在Host_Alias这一项中,定义了inter1和inter2两台主机为INTER组,milan1和milan2两台主机同在MILAN组里,在sudo里面使用的别名,能够让文件更容易更新,而且还可以以集合的方式去设置用户的权限。同理在Cmnd_Alias的设置和Host_Alias一样。
在sudo文件里面最关键的是关于用户权限的定义,以配置文件中的holmes INTER=(intermilan) DUMP为例,每一行权限包括以下信息:
1、指定启用sudo功能的用户名为holmes。
2、指定该sudo权限适用在inter1和inter2这两台主机上
3、以intermilan的用户身份执行命令
4、指定用户可以运行/sbin/dump和/sbin/restore命令
清楚以上的信息之后,也就很容易理解第二行的意思了,第二行的意思也就是指定work能够以root身份(括号内没有注明则表示root)在任何机器上运行命令,并且不用输入密码,但是在inter1和inter2的机器上执行/bin/rm命令的时候需要输入密码。
在该文中,前面带有%的则表示组,最后一行表示允许组wheel中的用户可以以任何身份在除milan1和milan2的机器上运行/sbin/shutdown,/usr/bin/reboot,/usr/bin/halt命令。
使用说明:
以work用户登录,然后执行sudo rm -rf test/
[work@inter1 root]$ pwd
/root
[work@inter1root]$ sudo rm -rf test/
Password: #输入work用户的密码