用户授权
	生产环境中,root用户密码只有极少数人知道,普通员工只能使用普通用户登录,
	如果普通用户需要执行特殊操作,有两种方法。
	(1)su -root ,切换到root执行特殊操作,然后再返回到普通用户
	(2)sudo 
	su
	优点:
	使用简单
	缺点:
	1、root密码容易泄露
	2、普通用户可执行的操作不可控
	sudo命令
	作用:给普通用户授权,让普通用户可以执行特定操作的权限
	缺点:需要进行配置授权
	优点:
	1、不需要切换到root用户(不需要知道root的密码)
	2、用户可执行的命令都是预先设置好的(可执行的权限是可控的)
	3、可以记录每个用户所执行过的命令
	sudo的使用
	第一步:通过sudo的配置文件为普通用户授权
	第二部:普通用户使用sudo来执行特定的操作
	sudo的配置文件
	/etc/sudoers  
	格式:
	用户名   主机=(切换的用户)  可执行的命令
	说明
	用户名:普通用户的名称
	主机:可以在哪个主机上执行特定的命令
	ALL 表示任意主机
	localhost 表示当前主机
	hostName 表示具体的主机名
	***.***.***.*** 表示一个ip地址(192.168.6.123)
	***.***.***.***/netmask 表示一个网段(192.168.6.0/24)
	切换的用户:切换到指定的用户来执行后面的命令,通常的都是root用户
	表示的方式
		1、(all)
		2、(root)
		3、 空
	可执行的命令:用户可以执行命令
		格式:命令1,命令2……
		补充:可以用通配符的方式
		例子:给test赋权,让这个用户可以在任意主机切换到root用户执行useradd
    test    ALL=(ALL)       /usr/sbin/useradd
	注意:修改sudo的配置文件,通常不用vi,而是用visodu命令
	使用visodu来修改配置文件,如果你修改的配置文件有错误,那么系统会提示有错,并且阻止保存。
    例子:让普通用户laowantong可以在任意主机上执行useradd和userdel命令
	1、创建用户laowantong
	useradd laowantong
	passwd laowantong
	2、修改sudo配置文件
	visudo
	laowantong ALL=(root)  /usr/sbin/useradd,/usr/sbin/userdel
	3、用普通用户laowantong登录系统,然后执行新建用户和删除用户的操作
	sudo useradd zhoubotong
	sudo userdel zhoubotong
	思考:为什么用sudo的时候,会提示输入密码
	为什么第二次不需要输入密码	
	普通用户在执行sudo的时候,会在/var/db/sudo/lectured/下生成该用户的一个秘钥,
	这个用户的秘钥有效期是5分钟,这样在5分钟之内再次执行sudo的时
	候,是不需要输入密码的。
	扩展授权格式
	test ALL=(root) /usr/sbin/useradd
	test ALl=(root)  ALL
	%gp01 ALL=(root)  /usr/sbin/useradd
	test  ALL=(root) /usr/sbin/*
	%gp01 ALL=(root)/usr/sbin/useradd,/usr/sbin/userdel
	%gp01 ALL=(root)NOPSAAWD:/usr/sbin/useradd,/usr/sbin/userdel  不用输入密码
	%gp01 ALL=(root)NOPASSWD:/usr/sbin/useradd,NOPASSWD:/usr/sbin/userdel 不用输入密码
	test ALL(root) NOPASSWD:ALL  不用输入密码
	%gp01  ALL(root)  /usr/sbin/*,!/usr/sbin/useradd   除了/usr/sbin/useradd 不能执行
	注意:如果直接是一个字符串,那么这几一个用户名
	如果在字符串前面有个%,那么这是一个用户组
	用户使用sudo的基本流程
	1、sudo
	-------->>>>>var/db/sudo/检查时间戳是否过期
	-------->>>>>如果过期,要求重新输入密码
	-------->>>>>记录时间戳到/var/db/sudo --检查/etc/sudoers 是否有授权
	-------->>>>>如果有执行命令
    -------->>>>>如果尚未过期--->>>>>检查/etc/sudoers 是否有授权
	-------->>>>>如果有执行命令
	-------->>>>>报错提示无权限,并退出sudo
	sudo配置文件的构成
	定义别名
	授权规则
	别名的类别
	Host_Alias:主机别名。别名字母必须都是大写,成员可以是主机、网段
	Host_Alias MYHOST = zhangsan,lisi
	Host_Alias MYHOST = ALL
	Host_Alias MYHOST =locahost,192.168.6.0/24,172,10.0.0/16
	User_Alias:用户别名。别名字母必须都是大写,成员都是系统中的用户,
	也可以是组
	User_Alias MYUSER =tom,jerry
	User_Alias MYUSER =tom,jerry,%gp01
	Cmnd_Alias:命令别名,成员都是系统中的命令,这里最好用命令的绝对路径。
	Cmnd_Alias MYCMD = usr/sbin/useradd,usr/sbin/userdel
	Cmnd_Alias MYCMD = usr/sbin/*,/usr/bin*
	Cmnd_Alias MYCMD = usr/sbin/*,/usr/bin* !/usr/sbin/useradd
	Runas_Alias:角色别名,成员通常都是root或者其他权限较高的用户,用的比较少
	注意:1、别名的名称中的字母必须都是大写
		 2、别名中的可以有数字和下划线,但是必须以字母为开头
	主机别名举例
	Host_Alias H1 = localhost,zhangsan,lisi,192.168.6.123,172.20.0.0/16
	用户别名举例
	User_Alias DEV = zs,ls,ww,%admin
	命令别名举例
	Cmnd_Alias CMND1 = /usr/sbin/useradd, /usr/sbin/userdel,/bin/*,/sbin/[a-g]*
    Cmnd_Alias CMND1 = /usr/sbin/useradd, NOPASSWD:/usr/sbin/userdel,/bin/*,!/bin/find,/sbin/[a-g]*	
	特殊写法
	User_Alias DEV = zs,ls,ww,%admin: NET = dehua,degang
	sudo的授权规则
	格式:
	授权用户 主机=[(切换到的用户)] [NOPASSWD:]命令1,[(切换到的用户)] [NOPASSWD:]命令2,
	[(切换到的用户)] [NOPASSWD:]命令3……
	说明:
    1、[]中的内容都是可省略的
	2、命令和命令之间用逗号分隔
	3、如果省略[(切换到的用户)],表示切换到root用户执行后面的命令
	4、如果(切换到的用户)写出(ALL),表示切换到所有用户,从所有用户中
	找出可以执行后面的命令并执行命令
	5、如果[NOPASSWD:]省略,则表示在用户首次使用sudo时候输入密码,密码有效期为5分钟
	timi ALL= /bin/*	
	timi ALL= /usr/bin/passwd, !/usr/bin/passwd root
	timi ALL= /bin/vi, !/bin/vi /etc/*
	或者
	Cmnd_Alias CMD_TIMI = /bin*,  /usr/bin/passwd, !/usr/bin/passwd root,/bin/vi, !/bin/vi /etc/*
	timi ALl= CMD_TIMI
	sudo-l
	User timi may run the following commands on this host:
	(root) /usr/bin/passwd
	sudo命令的选项
	-l:查看当前用户的授权信息
	-k:让当前主机上的sudo秘钥立刻失效
	visudo命令选项
	-c:检查sudo的配置文件是否有语法错误
	治理公司root权限泛滥的情况
	第一步:分析员工的类别
	分析梳理公司需要使用服务器的员工的数量和类别
	开发1、开发2……开发主管
	运营1、运营2……运营主管
	初级运维1、初级运维2、初级运维3
	中级运维1、中级运维2、中级运维3
	高级运维1、高级运维2、高级运维3
	第二步:分析各类员工要执行的操作
	开发:上传和下载、创建目录、文件、删除文件、目录
	开发主管:上传和下载、创建目录、文件、删除文件、目录
	运营……
	运营主管……
	第三步:结合要执行的操作给出必须的命令
	将命令反馈给各个部门,让他们检查是否满足日常的操作需求
	第四步:sudo授权
	定义命令别名
	定义用户别名
	定义主机别名
	sudo授权
	第五步:测试授权是否可用