注意:编辑sudoers文件,请务必使用visudo命令。
1,最简单配置,让普通用户student具有root的所有权限
执行visudo之后,可以看见缺省只有一条配置:
root ALL=(ALL) ALL
在下边再加一条配置:
student ALL=(ALL) ALL
第一个ALL指代网络中的主机;第二个指代用户,也就是按哪个用户权限去行使命令;第三个指代执行命令
如 student ALL=(ALL) NOPASSWD: /bin/sh 代表只能执行sh
#Defaults requiretty 解决sudo: sorry, you must have a tty to run sudo
这样,普通用户student就能够执行root权限的所有命令
以student用户登录之后,执行:
sudo su -
然后,输入student用户自己的密码,即可切换成root用户。
2. 让普通用户student只能在某几台服务器上,执行root能执行的某些命令
首先需要配置一些alias,这样在下面配置权限时,会方便一些,不用写大段大段的配置。Alias主要分成4种
1) 配置Host_Alias:就是主机的列表
Host_Alias HOST_FLAG = hostname1, hostname2, hostname3
2) 配置Cmnd_Alias:就是允许执行的命令的列表
Cmnd_Alias COMMAND_FLAG = command1, command2, command3
3) 配置User_Alias:就是具有sudo权限的用户的列表
User_Alias USER_FLAG = user1, user2, user3
4) 配置Runas_Alias:就是用户以什么身份执行(例如root,或者oracle)的列表
Runas_Alias RUNAS_FLAG = operator1, operator2, operator3
5) 配置权限
配置权限的格式如下:
USER_FLAG HOST_FLAG=(RUNAS_FLAG) COMMAND_FLAG
如果不需要密码验证的话,则按照这样的格式来配置
USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD: COMMAND_FLAG
如:
Host_Alias HOST=test3
Cmnd_Alias COMM=/usr/bin/crontab,/sbin/ifconfig
User_Alias USER=cacti,sxf
USER HOST=(ALL) NOPASSWD: COMM
[root@test3 ~]# su - cacti
[cacti@test3 ~]$ ifconfig
-bash: ifconfig: command not found
[cacti@test3 ~]$ sudo ifconfig
Password:
sudo: ifconfig: command not found
[cacti@test3 ~]$ sudo /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 00:16:3E:01:B1:40
passwd为该用户默认密码
三:日志记录
touch /var/log/sudo
vim /etc/syslog.conf
添加 local2.debug /var/log/sudo
重启日志守护进程 ps aux |grep syslogd
kill -HUP pid
通常并不以root身份登录,但是当执行某些命令(command)时,需要用到root权限,所以通常都是用"sudo command"来执行command。
分享下使用sudo,不用输入密码的方法。
假设用户名为jbxue(属于admin组),使sudo不用密码的方法如下。
运行命令:sudo visudo 或者 sudo vi /etc/sudoers,如果vi来编辑,则保存时记得用"wq!"强制保存,否则会提示只读不能保存的。
就会编辑/etc/sudoers这个文件。
默认情况下,会看到有"%admin ALL=(ALL) ALL"一句话,就是允许admin组在所有主机上执行所有命令,当然是需要passwd的。
1. 如果想把admin组的用户都sudo不用密码那么可以将这一行换为:"%admin ALL=(ALL) NOPASSWD: NOPASSWD ALL"即可。
2. 如果仅仅想让jbxue用户sudo不需密码,则可添加"jbxue ALL = NOPASSWD: ALL"这样一行。
3. 如果让jbxue用户sudo不用密码即可执行某几个命令,可这样写"jbxue ALL = NOPASSWD: /usr/bin/abc.sh, /usr/sbin/adduser"
4. 欲知其他更多配置方式,请运行"man sudoers"看帮助文档吧。
情境分析:
在添加"jbxue ALL = NOPASSWD: ALL"这样一行;但是,jbxue执行sudo时还是需要输入密码,这是为什么?
原来:这一行在"%admin ALL=(ALL) ALL"组策略之前前,后面的组配置覆盖了前面的配置,而jbxue属于admin组,所以需要密码。
这时,只需要将%admin行用#注释掉即可。OK!然后立马就生效了,可能执行sudo时系统都会去读取/etc/sudoers的,所以立即就生效了。
附,公司内部机器上的一个/etc/sudoers配置:
您可能感兴趣的文章:
centos普通用户增加sudo权限的方法
centos中配置普通用户使用sudo命令的方法
用户无权限使用sudo的解决方法 centos sudoers用法
linux下sudo的日志功能
linux下运行Sudo的方法
经典:su sudo sudoers的用法详解
linux下Sudo的配置方法谈
不输入密码执行sudo命令的配置方法
centos启用sudo的简单方法
sudo的配置方法 /etc/sudoers配置文件说明
centos为普通用户添加sudo权限的方法
centos5.5中sudo日志文件的创建与跟踪
有关Sudo的日志功能详解
centos sudo日志文件的创建与跟踪
sudo日志记录到本地或远程的配置方法
linux下sudo的配置方法分享
如何在centos中启用sudo