Linux运维工程师在执行su – root时提示su: Permission denied如何解决

最近一直在整理公司的Zabbix监控系统,以前一直没有时间来自己做一些东西。保哥是个闲不住的人,最近有机会就将公司的监控系统理一理,折腾下,跟这个人博客一样,有空了就会来搞一搞。在添加监控过程中,发现其中有个别几台服务器使用普通用户登录操作系统,suroot下安装snmpd过程中,提示:su: Permission denied

1,验证账号密码

直接登录root账号是可以登录,可以看到账号密码均无问题。

2,检查系统日志

查看/var/log/message,仅有su: FAILED SU (to root) app01 on pts/1,一条有关记录。

#cat /var/log/audit/audit.log
type=SYSCALL msg=audit(1598604435.492:59640): arch=c000003e syscall=2 success=yes exit=3 a0=7fe9caa5e560 a1=2 a2=7ffc347fb790 a3=3 items=0 ppid=23209 pid=23234 auid=1002 uid=1002 gid=1002 euid=0 suid=0 fsuid=0 egid=1002 sgid=1002 fsgid=1002 tty=pts0 ses=7990 comm="su" exe="/usr/bin/su" subj=staff_u:staff_r:staff_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1598604435.508:59641): avc: denied { setuid } for pid=23235 comm="su" capability=7 scontext=staff_u:staff_r:staff_t:s0-s0:c0.c1023 tcontext=staff_u:staff_r:staff_t:s0-s0:c0.c1023 tclass=capability

问题分析

(1),将audit.log拷贝到测试服务器。
#scp -P 4120 /var/log/audit/audit.log app01@10.10.10.11:/home/app01
(2),在10.10.10.11服务器上安装setroubleshoot软件,用于帮助排错。

#yum install setroubleshoot
#sealert -a /home/app01/audit.log

没有相关无法登录的分析结果。
2,检查权限
(1),检查/usr目录权限
(2),检查/bin/su权限
(3),检查/usr/bin/passwd权限
检查以上权限,未发现有明显的设置错误。

3,检查配置文件

检查/etc/passwd及/etc/shadow,均未发现有明显的配置错误。

4,如何主动禁止su到其他用户呢?

为禁止普通用户su至root,需要分别修改/etc/pam.d/su和/etc/login.defs两个配置文件。
(1)去除/etc/pam.d/su文件中如下行的注释:
#auth            required        pam_wheel.so use_uid
(2)在/etc/login.defs文件中加入如下配置项:
SU_WHEEL_ONLY yes
经过上述配置后,普通用户将被禁止su至root,如果希望指定普通用户su至root,可以执行如下命令将该用户添加至wheel组中:
usermod -G wheel username

解决问题

检查/etc/pam.d/su文件,确实将”#auth            required        pam_wheel.so use_uid”的注释去掉了。注释后,故障解除。

总结

一个人藏的东西,一百个人也找不到。希望大家以后再工作中,不要随便生产环境中的设置,修改后记得填写变更说明。

原创文章,作者:保哥运维实战侠笔记,如若转载,请注明出处:https://www.shizhanxia.com/biji/385.html

发表评论

登录后才能评论