天天看点

Linux中sudo的使用

SUDO:switch user

概述:使用某个用户A或某些用户以其他用户B的身份去执行某些命令,执行该命令的权限依照用户B的权限。

实现与配置:

1.其配置文件:/etc/sudoers

2.配置配置文件:

法1:#vim /etc/sudoers

法2:#visudoers

3.语法格式:

username|alias   host=(username)   command_list

  用户名|别名        主机=(以谁的身份)    命令列表

例如:jerry ALL=(root) /usr/sbin/usermod, /usr/sbin/userdel, /usr/bin/passwd

设定jerry可以在所有主机上以root权限去执行/usr/sbin/usermod,/usr/sbin/userdel,/usr/bin/passwd这三个命令

由上可以看到,jerry可以执行/usr/bin/passwd,那么他不就可以修改root用户的密码了,为防止该行为我们可以这样设定。

jerry ALL=(root) /usr/sbin/usermod, /usr/sbin/userdel, /usr/bin/passwd, !/usr/bin/passwd root

4.使用别名:

●用户别名:

User_Alias USERMANAGER = jerry, redhat, centos, ubuntu

User_Alias POWERMANAGER = tom, gentoo, USERMANAGER

●命令别名:

Cmnd_Alias USERMANCMND = /usr/sbin/useradd,/usr/sbin/usermod,/usr/bin/passwd, !/usr/bin/passwd root

●主机别名:

Host_Alias MANHOST = ...

注:所有的Alias后面的名称中的字符必须全部使用大写字母,别名中还可以嵌套其他的别名。

5.在第一个字段处,不仅可以使用用户,也可以使用别名定义的组,如果要使用系统上通过"groupadd"添加的组,则需要在在该组前面加上"%".

例如:系统原本有一个组“mygroup”

%mygroup ALL=(root) /usr/sbin/useradd, /usr/sbin/usermod,/usr/bin/passwd, !/usr/bin/passwd root

使用别名定义:

USERMANAGER ALL=(root) USERMANCMND

6.日志信息

可以通过/var/log/secure查看使用sudo执行过的命令已经执行命令的用户的详细信息。

7.当某个用户被赋予了sudo可以执行的命令时,每当在两次命令执行的相隔的时间在默认时间之外时,就会被提示必须输入用户的密码,以确保命令执行者的真实身份。但是在这个默认时间内执行则不需要键入用户的密码,为了防止其安全性,这时可以使用:

#sudo -k                #####要求下次在使用sudo执行命令时必须输入密码

#sudo -l                #####显示当前用户可以使用的sudo的所有命令

当需要为某用户设置在使用sudo命令时,不在输入密码时,可以使用这样的格式:

jerry ALL=(root) NOPASSWD: /usr/sbin/usermod, /usr/sbin/userdel, /usr/bin/passwd, !/usr/bin/passwd root

jerry ALL=(root) /usr/sbin/usermod, /usr/sbin/userdel, NOPASSWD: /usr/bin/passwd, !/usr/bin/passwd root

注:NOPASSWD只对其后的命令生效。

本文转自 向阳草米奇 51CTO博客,原文链接:http://blog.51cto.com/grass51/796033,如需转载请自行联系原作者

继续阅读