用户授权
生产环境中,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授权
第五步:测试授权是否可用
RH124学习笔记---用户授权su和sudo
猜你喜欢
转载自blog.51cto.com/14015577/2469283
今日推荐
周排行