无需FQDN使用AD凭据执行sudo的权限问题
嗨,看起来你已经搞定了AD登录的大部分配置,但卡在了不带FQDN登录时的sudo权限上,我来帮你梳理几个最可能的原因和解决办法:
检查sudoers配置是否匹配无FQDN的用户名
大概率你之前的sudo规则是针对myuser@mydomain.com这种带域名的用户设置的,当你关闭FQDN登录后,系统识别的用户名变成了myuser,原有的规则就不匹配了。
你可以用visudo命令编辑sudoers文件(或者在/etc/sudoers.d/目录下的自定义配置文件里),把用户条目改成不带域名的格式:# 原来的规则可能是这样 myuser@mydomain.com ALL=(ALL) ALL # 修改成不带FQDN的版本 myuser ALL=(ALL) ALL如果是用AD组来授权sudo的话,同样把
%groupname@mydomain.com改成%groupname即可。确认SSSD的sudo服务配置
打开/etc/sssd/sssd.conf检查两个点:- 确保
services字段包含sudo,比如:services = nss, pam, sudo - 在
[sudo]段里也加上use_fully_qualified_names = False,避免sudo模块依然使用FQDN解析用户:[sudo] use_fully_qualified_names = False ldap_sudo_search_base = OU=Sudoers,DC=mydomain,DC=com # 这里替换成你的AD sudo规则存放路径
- 确保
刷新SSSD缓存并重启服务
SSSD会缓存用户信息和sudo规则,修改配置后一定要清除缓存让新设置生效:sss_cache -E # 清空所有SSSD缓存 systemctl restart sssd执行完后退出当前会话重新登录,再尝试sudo操作。
验证用户解析是否正常
用以下命令确认不带FQDN的用户能正确关联到AD用户:id myuser # 查看用户的UID、GID及所属组 getent passwd myuser # 检查用户的完整属性信息注意排查是否有本地用户和AD用户重名的情况,这会导致系统优先识别本地用户,从而影响sudo权限。
检查PAM的sudo配置
确保/etc/pam.d/sudo文件里包含SSSD的验证模块,这样sudo才会通过SSSD获取AD用户的权限信息,文件里应该有类似以下两行:auth sufficient pam_sss.so account sufficient pam_sss.so
一般来说,调整sudoers规则并刷新SSSD缓存就能解决这个问题,如果还是不行,可以再检查SSSD的日志(/var/log/sssd/sssd_sudo.log),里面会有详细的错误信息帮你定位问题。
备注:内容来源于stack exchange,提问作者user1709122

