知识宝库在此藏,一键关注获宝藏
上述更新到访问控制这一块,那么在运维人员日常工作中权限是绕不过的话题,sudo每年能力验证基本都考察,所以这期简单介绍一下sudo与su,这两个权限相关命令。
2022年能力验证考察的就是sudo 配置,确认我们是否对/etc/sudoers文件的配置规则、别名机制等是否理解。
![Linux测评延展知识 — sudo与su Linux测评延展知识 — sudo与su]()
2021年能力验证中考察的是su,在安全策略就有这么一条,其实就是要将#auth required pam_wheel.so use_uid 取消注释
![Linux测评延展知识 — sudo与su Linux测评延展知识 — sudo与su]()
1.sudo命令
sudo命令可以允许用户以某个其他用户身份执行某些命令。
1)使用方法:
![Linux测评延展知识 — sudo与su Linux测评延展知识 — sudo与su]()
sudo 命令可以让管理员(root)实现定义某些特殊命令谁可以执行。
2)配置sudo文件
必须以root 身份执行visudo 添加需要执行sudo 命令的用户
执行visudo,实际上修改的是/etc/sudoers文件
为什么不使用vim /etc/sudoers,因为visudo在修改完成后可以对语法进行检查
可使用visudo -c进行语法检查,当sudoers文件有语法错误时,所有的sudo命令都无法使用。
第一列:表示用户名,如果是用户组,可以写成“%组名”
第二列:表示允许登录的主机(白名单),ALL代表任意主机
第三列:表示以谁的身份去执行命令,ALL代表root身份
第四列:表示此账户可以执行哪些命令,多个命令之间使用逗号隔开,ALL表示任意命令
案例:本身test用户不能添加用户,要求使用sudo配置,将其设置为可以添加用户,并且可以修改口令(但是不能修改root用户密码)
usr/bin/passwd [a-zA-Z]* 表示可以使用 sudo passwd 用户名
!/usr/bin/passwd root 表示禁止对root用户使用passwd
疑问就在于/usr/bin/passwd [a-zA-Z]* 为什么不能写成 /usr/bin/passwd *?
* 代表通配符,表示0个或多个任意字符,若不加[a-zA-Z]则可以使用sudo passwd命令,直接可修改root口令, /usr/bin/passwd [a-zA-Z]* 主要是过滤掉sudo passwd 的情况,passwd后面一定要有空格和用户名。[]中可以放任意个字母,也可以再增加0-9代表第一位可以是数字,但是不能放特殊字符
PS:[a-zA-Z]可以改写成 [a-Z] 同样表示大小写字母。
可以对用户、用户组、命令等设置别名(组),需要使用时直接引用这个别名(组)即可
用户或者组的别名 --> User_Alias ADMINS = jsmith,mkike,%groupname (注:组前边需要添加%)
主机别名 --> Host_Alias FILESERVERS = fs1,fs2
可以切换的用户角色别名 --> Runas_Alias OP = root
命令别名 --> Cmnd_Alias SERVICES = /sbin/service,/sbin/systemctl
在/etc/sudoers文件中添加以下内容,即可实现sudo审计
echo "Defaults logfile=/var/log/sudo.log" >>/etc/sudoers
2.su命令
通过su命令可以从现有账户切换到其他账户,除了root,切换到其他账户都需要目标账户的密码。但实际还是存在一些访问控制功能的。
切换用户命令:su - [用户名] (- 代表重新加载该用户的环境变量)
其中pam_rootok.so 模块就代表了root无需口令即可su任何用户
#auth required pam_wheel.so use_uid,如果取消注释,则代表仅位于wheel用户组的用户,具有su命令的使用权限,其余账户无su权限,这里的wheel用户组为系统自创的一个用户组。
另外,其中的#auth sufficient pam_wheel.so trust use_uid,如果取消注释,则代表wheel组的用户为可信任的,wheel组的用户切换到其他账户不需要输入目标账户的口令,就像root一样,与第一行的pam_rootok.so模块类似。
原文始发于微信公众号(等保不好做啊):Linux测评延展知识 — sudo与su
评论