sudo的使用(Centos)

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