简介:
1. sudo能够限制指定用户在指定主机上运行某些命令。
2. sudo可以提供日志,忠实地记录每个用户使用sudo做了些什么,并且能将日志传到中心主机或者日志服务器。
3. sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机。它默认的存放位置是/etc/sudoers。
4.sudo使用时间戳文件来完成类似“检票”的系统。当用户执行sudo并且输入密码后,用户获得了一张默认存活期为5分钟的“入场券”(默认值可以在编译的时候改变)。超时以后,用户必须重新输入密码。
命令格式:
sudo -K -L -V -h -k -l -vsudo [-HPSb] [-a auth_type] [-c class-] [-p prompt] [-u username#uid] {-e file [...] -i -s command}
参数:
-l : 列出当前用户可以执行的命令。
-u username#uid :以指定用户的身份执行命令。
-k:清除“入场卷”上的时间,下次再使用sudo时要再输入密码。
-K :与-k类似,但是它还要撕毁“入场卷”,也就是删除时间戳文件。
-b command :在后台执行指定的命令。
-e file :不是执行命令,而是修改文件,相当于命令sudoedit。
配置文件:visudo -f/etc/sudoers
打开关闭配置文件: e是重新编辑,x是不保存退出,Q是退出并保存。
权限设置:
用户名 ALL=(ALL) ALL
用户名 主机=(继承的身份1,身份2,…) 命令1,命令2…..
不需要密码验证:用户名 主机=(身份)NOPASSWD: 命令….
admin ALL=(root)NOPASSWD: ALL
禁止使用某条命令:用户名 主机=(身份) !命令1,!命令2…
组权限:%组名主机=(继承的身份1,身份2,…)命令1,命令2…
如果身份省略,默认root用户。
别名设置:
Host_Alias:定义主机别名;
User_Alias:用户别名,别名成员可以是用户,用户组(前面要加%号)
Runas_Alias:用来定义runas别名,这个别名指定的是“目的用户”,即sudo 允许切换至的用户;
Cmnd_Alias:定义命令别名;
实例:
Host_Alias AS01=localhost,st05,st04,10,0,0,4,192.168.1.0/24
#注:定义主机别名HT01,通过=号列出成员
Host_Alias AS02=st09,st10
#注:主机别名HT02,有两个成员;
Host_Alias AS01=localhost,st05,st04,10,0,0,4, 192.168.1.0/24:AS02=st09,st10
#注:上面的两条对主机的定义,可以通过一条来实现,别名之间用:号分割;
假如我们就一台主机localhost,能通过hostname 来查看,我们在这里就不定义主机别名了,用ALL来匹配所有可能出现的主机名;并且有 user_1、user_2、user_3 用户;
User_Alias SYSADER=user_1,user_2,%user_1
#定义用户别名SYSADER 下有成员 user_1、user_2和user_1用户组下的成员,用户组前面必须加%号;
User_Alias DISKADER=user_3
#定义用户别名 DISKADER ,成员有user_3
Runas_Alias OP=root
#定义Runas用户,也就是目标用户的别名为OP,下有成员root
Cmnd_Alias SYDCMD=/bin/chown,/bin/chmod,/usr/sbin/adduser,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root
#定义SYSCMD命令别名,成员之间用,号分隔,最后的!/usr/bin/passwd root 表示不能通过passwd 来更改root密码
Cmnd_Alias DSKCMD=/sbin/parted,/sbin/fdisk
#定义命令别名DSKCMD,下有成员parted和fdisk ;
SYSADER ALL= SYDCMD,DSKCMD
#表示授权SYSADER下的所有成员,在所有可能存在的主机名的主机下运行或禁止 SYDCMD和DSKCMD下定义的命令。
DISKADER ALL=(OP) DSKCMD