sudo

sudo

	来自sudo包 
	man 5 sudoers
	sudo能够授权指定用户在指定主机上运行某些命令,如果未授权用户用尝试使用 sudo ,会提示联系管理员。
	sudo可以提供日志,记录每个用户使用sudo 操作
	sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机
	sudo使用时间戳文件来完成类似“检票”的 系统,默认存活期为5分钟的 “入场券”
	
	通过visudo 命令编辑配置文件,具有语法检查功能
		visudo –c  检查语法
	配置文件:
		/etc/sudoers, /etc/sudoers.d/
	时间戳文件:
		/var/db/sudo
	日志文件:
		/var/log/secure
	配置文件支持使用通配符glob: 
		?: 	任意单一字符
		*  :	匹配任意长度字符
		[wxc]: 	匹配其中一个字符
		[!wxc]: 	除了这三个字符的其它字符
		x :  	转义
		[[alpha]] : 	字母,示例: /bin/ls [[alpha]]*
	配置文件规则有两类:
		1 、别名定义: 不是必须的
		2 、授权规则: 必须的

sudoers

	授权规则格式:
		用户 登入的主机=( 代表用户)  命令
		user host=(runas)command
	示例:
		root ALL=(ALL)   ALL
	格式说明:
		user:  运行命令者的身份
		host:  通过哪些主机
		(runas) :以哪个用户的身份
		command:  运行哪些命令

别名

	Users 和runas:
		username
		#uid
		%group_name
		%#gid
		user_alias|runas_alias
	host:
		ip 或hostname
		network(/netmask)
		host_alias
	command:
		command name
		directory
		sudoedit
		Cmnd_Alias

sudo 别名

	别名有四种类型:User_Alias, Runas_Alias, Host_Alias,Cmnd_Alias
	别名格式:[A-Z]([A-Z][0-9]_)*
	别名定义:
		Alias_Type NAME1 = item1, item2, item3 : NAME2 =item4, item5

示例

	示例1:
		Student ALL=(ALL) ALL
		%wheel ALL=(ALL) ALL
	示例2: 
		student ALL=(root) /sbin/pidof,/sbin/ifconfig
		%wheel ALL=(ALL) NOPASSWD: ALL
	示例3
		User_Alias NETADMIN= netuser1,netuser2
		Cmnd_Alias NETCMD = /usr/sbin/ip
		NETADMIN ALL= (root)NETCMD
	示例4
		User_Alias SYSADER=wang,mage,%admins
		User_Alias DISKADER=tom
		Host_Alias SERS=www.magedu.com,172.16.0.0/24
		Runas_Alias OP=root
		Cmnd_Alias SYDCMD=/bin/chown,/bin/chmod
		Cmnd_Alias DSKCMD=/sbin/parted,/sbin/fdisk
		SYSADER SERS= SYDCMD,DSKCMD
		DISKADER ALL=(OP) DSKCMD
	示例5
		User_Alias ADMINUSER = adminuser1,adminuser2
		Cmnd_Alias ADMINCMD = /usr/sbin/useradd,/usr/sbin/usermod, /usr/bin/passwd [a-zA-Z]*,!/usr/bin/passwd root
		ADMINUSER ALL=(root) NOPASSWD:ADMINCMD,PASSWD:/usr/sbin/userdel
	示例6
		Defaults:wang runas_default=tom
		wang ALL=(tom,jerry) ALL
	示例7
		wang 192.168.175.136,192.168.175.138=(root)
		/usr/sbin/,!/usr/sbin/useradd
	
	示例8
		wang ALL=(ALL) /bin/cat /var/log/messages*

visudo命令

	visudo - safely edit the sudoers file
	visudo [-chqsV] [-f sudoers] [-x output_file]
	Options:
		-c, --check              	仅检查模式
		-f, --file=sudoers       	指定的sudoers文件定位
		-h, --help               	帮助信息
		-q, --quiet              	少量语法错误信息
		-s, --strict             	严格语法检查
		-V, --version            	显示版本信息
		-x, --export=output_file 	采用JSON格式写sudoers到指定输出文件

sudo 命令

	ls -l /usr/bin/sudo
	sudo –i –u wang  切换身份
	
	sudo - execute a command as another user
	sudo -h | -K | -k | -V
	sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user]
	sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command]
	sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-u user] [VAR=value] [-i|-s] [<command>]
	sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-u user] file
	Options:
		-A, --askpass               	为密码提示使用帮助项目
		-b, --background            	在后台运行命令
		-C, --close-from=num        	关闭所有文件描述符 >= num
		-E, --preserve-env          	当运行命令时保护用户环境
		-e, --edit                 	 编辑文件来取代运行的命令
		-g, --group=group           	以指定的组名或组id来运行命令
		-H, --set-home              	给目标用户的家目录设置HOME 变量
		-h, --help                  	显示帮助
		-h, --host=host             	在主机上运行命令 (if supported by plugin)
		-i, --login                	 使用目标用户运行登陆shell环境,也可指定运行命令
		-K, --remove-timestamp      	完全移除时间戳文件
		-k, --reset-timestamp       	使时间戳文件失效
		-l, --list                  	列出用户的特权或检查指定的命令
		-n, --non-interactive       	non-interactive 模式, 不使用提示
		-P, --preserve-groups       	保存组本身的取代设置给目标的
		-p, --prompt=prompt        	使用指定的密码提示
		-r, --role=role             	使用指定的角色来创建SELinux指定的安全上下文内容
		-S, --stdin                 	从标准输入中读取命令
		-s, --shell                 	使用指定的用户运行shell环境,同时可以指定命令
		-t, --type=type             	使用指定的类型创建 SELinux安全上下文
		-U, --other-user=user       	采用列表模式,显示用户的特权
		-u, --user=user             	以指定用户或id运行命令或编辑文件
		-V, --version               	显示版本信息
		-v, --validate              	在不运行命令的情况下,更新用户的时间戳
		--                          	停止处理命令行参数

	
	sudo [-u user] COMMAND
		-V	显示版本信息等配置信息
		-u	user 默认为root
		-l,ll	列出用户在主机上可用的和被禁止的命令
		-v	再延长 密码有效期限5 分钟, 更新时间戳
		-k	清除时间戳(1970-01-01),下次需要重新输密码
		-K	与-k 类似,还要删除 时间戳文件
		-b	在后台执行指令
		-p	改变询问密码的提示符号
		示例:-p ”password on %h for user %p:"
原文地址:https://www.cnblogs.com/shenxm/p/8451885.html