sudo的使用
时间:2010-09-27 来源:fzguon
一、 介绍
sudo工具能够帮你把一部分系统管理的责任分摊给其他人,还不用给出完全的root访问权限。它是一个setuid程序,只需要输入用户自己的密码,就可以执行sudo后面的命令。使用sudo时关系到一个很重要的文件,那就是/etc/sudoers。该文件需要使用visudo来编译。该文件的内容如下所示:
#############################################################
# sudoers file. # This file MUST be edited with the 'visudo' command as root. # See the sudoers man page for the details on how to write a sudoers file. # Host alias specification # User alias specification # Cmnd alias specification # Defaults specification # User privilege specification root ALL=(ALL) ALL # Uncomment to allow people in group wheel to run all commands # %wheel ALL=(ALL) ALL # Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL # Samples # %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom # %users localhost=/sbin/shutdown -h now ################################################################## |
二、 配置/etc/sudoers
1. 最简单的配置
让普通用户support具有root的所有权限。执行visudo之后,可以看见缺省只有一条配置:
root ALL=(ALL) ALL
那么你就在下边再加一条配置:
support ALL=(ALL) ALL
这样,普通用户support就能够执行root权限的所有命令。
那一行”support ALL=(ALL) ALL”所代表的意义是:
用户账号 登入主机=(可以变换的身份) 可以执行的命令
举个例子,假设有一个开发人员需要在开发服务器上获得root访问权限,在其他服务器上就不行,那么我们这样做.
steven beta.xplore.cn=(ALL) ALL
2. 不需要密码
还有一个有用的标志,那就是"NOPASSWD:" 如果设置了这个标志,表示当前授权的帐号执行后面的帐号不需要输入当前帐号的密码:
xplore ALL=(ALL) NOPASSWD: ALL
这允许帐号xplore可以用任何帐号执行所有指令,还不用输入密码。
3. 针对用户组
其实第一列中也可以指定组帐号,表示允许所有属于这个组的帐号都获得这样的授权,语法上,只需要在组帐号之前加上一个%号,就像这样:
%mail WEBSERVERS=(mail) sendmail
现在,属于mail组的帐号都可以在WEBSERVERS定义的服务器上用mail帐号来执行sendmail指令
4. 使用Alias语法
如果你觉得在指定用户或者机器或者命令时列表太长(比如很多帐号授权相同,一个帐号需要指定的命令和机器列表过长),我们可以使用sudo列表里Alias语法,Alias的语法和shell环境变量中alias类似,你可以看成是一个变量:
USER_Alias ADMINS=wgzhao,kevin,steven
User_Alias WEBMASTERS=xplore,glemir,xinhe Runas_Alias DAEMONS=bind,www,ftp Host_Alias WEBSERVERS=www.xplore.cn,www.lawburn.com Cmnd_Alias APACHE=/usr/bin/apachectl WEBMASTERS WEBSERVERS=(www) APACHE ADMINS ALL=(DAEMONS) ALL |
[root@redflag ~]# sudo [-u username] [command]
参数说明:
-u:将身份变成 username 的身份
[support@redflag ~]$ sudo mkdir /root/testing password: <==输入support自己的密码 |