Sudo是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登陆和管理时间,同样也提高了安全性。Sudo不是对shell的一个代替,它是面向每个命令的。
一:特点
A Sudo能够限制用户只在某台主机上运行某些命令。
B Sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器。
C Sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票(这个值可以在编译的时候改变)。
D Sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为411。
二:软件包
sudo-1.6.6-1Thiz.i586.rpm 在thizlinux 7.0的第一张光盘内
如果您的系统没有进行安装请使用rpm –ivh 进行安装
三:如何编辑
width="340" scrolling="no" height="310" frameborder="0" align="middle" src="http://seektool.googlepages.com/hexun_ggad.htm" marginheight="0" marginwidth="0"> Google adsense帐号申请 |
执行visudo命令:
如下面是一个极为简单的例子 :
加入如下几行:
Defaults syslog=auth
Defaults logfile=/var/log/sudo.log
Cmnd_Alias SHUTDOWN=/sbin/halt,/sbin/shutdown
root ALL=ALL
esnow ALL=ALL
xujh ALL=ALL,!SHUTDOWN
在这个例子当中 , esnow可以执行 root 所有的命令 , xujh 除了 halt
及 shutdown 不能执行以外 , 其它 root 能执行的命令他都能执行 .
这个档案有一个专属的 编辑器叫 visudo 可来编辑 /etc/sudoer 这个档案
在编辑完这个档案之后 , esnow 就可以用 sudo 这个命令转换成
superuser 来做原来只有 superuser 才能做的事 . 而关于使用 sudo
有一个记录档 , 在 /var/log/sudo.log , 里面记录著谁在什么时候利用
sudo 下了那些指令 . 顺便一提的是 : 利用下面这个命令可抓出那些人转换
成 superuser 但却没有成功 ......
/etc/sudoers中还可以定义用户别名、主机别名例如:
Host_Alias SERVER=no1
User_Alias ADMINS=abc,bcd
ADMINS ALL=(ALL) NOPASSWD: ALL
这样ADMINS不用口令就可以执行一切操作了。
SUDO的参数还有很多例如:
sudo –l 用来使用户查看自己目前可以在sudo中执行哪些命令。
sudo –V 显示sudo的版本号
sudo –h 显示执行sudo时所能输入的参数
sudo –b 将要执行的指令放在后台执行
sudo –p prompt 可以更改询问密码的提示语,其中%u会代换为使用者帐号名称,%h会显示主机名称
sudo -V | -h | -l | -L | -v | -k | -K | -s | [ -H ] [-S ] [ -b ] | [ -p prompt ] [ -c class|- ] [ -u
username/#uid ] command
四:如何使用
以esnow用户登录执行
sudo /sbin/shutdown -k 40 "aa"
提示密码:输入esnow用户的密码就执行了命令
以xujh用户登录执行
[xujh@www xujh]$ sudo /sbin/shutdown -k 40 "aa"
Password:
xujh is not in the sudoers file. This incident will be reported.
输入密码后,提示没有授权。
五:日志查看
vi /var/log/sudo.log
Feb 18 20:17:39 : esnow : TTY=pts/0 ; PWD=/home/esnow ; USER=root ;
COMMAND=/sbin/shutdown -k 40 aa
Feb 18 20:20:00 : xujh : user NOT in sudoers ; TTY=pts/1 ; PWD=/home/xujh ;
USER=root ; COMMAND=/sbin/shutdown -k 40 aa