sudo的用处不多说;
我在centos的配置,想想sudo很简单,之前改了很多都没test成功,权限,语法都试了好几回,现记录下
一:直接用visudo命令修改,之前是vim /etc/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种
Host_Alias
Cmnd_Alias
User_Alias
Runas_Alias
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