有“31”台服务器由相同的 RedOS 映像(基于 CentOS 7)配置。它们进入 LDAP samba 域,并配置为通过基于 ldap 用户组的 ssh 进行授权。为此目的,进行了以下更改:
以 root 身份创建
echo "Domain admins" > /etc/ssh/access_groups.conf && chmod 600 /etc/ssh/access_groups.conf
修改/etc/pam.d/sshd
____missed default____
account required pam_nologin.so
account sufficient pam_localuser.so
account required pam_listfile.so onerr=fail item=group sense=allow file=/etc/ssh/access_groups.conf
account include password-auth
_______ missed default____
visudo /etc/sudoers.d/01-域-用户
#sudo admin users LDAP auth
"%mydomain.local\Domain admins" ALL=(ALL) NOPASSWD:ALL
systemctl 重新启动 sshd
此配置已成功应用于大约30台服务器并且正在运行。在服务器 31 上,该配置不起作用。尝试登录时,客户端显示连接已被服务器关闭。
debug3: failed to open file:C:/dev/tty error:3
debug1: read_passphrase: can't open /dev/tty: No such file or directory
t1_rushao@ruyansvap38's password:
debug3: send packet: type 50
debug2: we sent a password packet, wait for reply
Connection closed by 10.65.201.61 port 22
在服务器端
sshd[18238]: pam_sss(sshd:auth): authentication success; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.65.90.176 user=t1_rushao
sshd[18238]: pam_listfile(sshd:account): Refused user t1_rushao for service sshd
sshd[18238]: Failed password for t1_rushao from 10.65.90.176 port 59786 ssh2
sshd[18238]: fatal: Access denied for user t1_rushao by PAM account configuration [preauth]
如果我注释掉“account required pam_listfile.so...”我可以通过 ssh 作为域用户进行连接,但 sudo 也不起作用。同时,
id t1_rushao
uid=1006007868(t1_rushao) gid=1006000513(domain users) groups=1006000513(domain users),1006000512(domain admins)
sssd 服务正在工作,服务器上域用户的授权似乎也正在工作,我尝试了 kinit、net ads join 几次。/etc/security/access.conf 默认情况下被完全注释掉。
我已经不知道为什么这个配置在这台服务器上不起作用。我知道问题出在域组中的某个地方,系统无法将用户组与设置相匹配,但为什么呢?
可能的字符大小写问题:该
id
命令将组报告为domain admins
全小写,但您/etc/ssh/access_groups.conf
和/etc/sudoers.d/01-domain-users
两者都将组指定为Domain admins
初始大写。Unix/Linux 系统通常区分大小写,我没有理由相信这
pam_listfile.so
是该规则的例外。我知道这sudo
肯定是区分大小写的。尝试将 sudoers 配置中的组名称更改
access_groups.conf
为全小写,以匹配id
.sssd
(/etc/sssd/sssd.conf
以及任何文件)的配置/etc/sssd/conf.d/*.conf
可能在例如域的配置或设置方面有full_name_format
一些use_fully_qualified_names
差异case_sensitive
。您的工作服务器显然必须有
case_sensitive = false
,这似乎不是 sssd 的默认设置 - 也许非工作服务器缺少其中一些设置?电信公司,没错!确实有效。在最后一台服务器上,
sssd.conf
与其他服务器不同之处仅在于多了一行。re_expression = (?P<name>[a-z0-9._-]+)
在其他服务器上没有这样的线路。并且在所有服务器上都有 sssd.conf 设置
case_sensitive = False
我做了分析,这个文件是由
join-to-domain
RedOS 开发团队的脚本包自动配置的,该脚本包将服务器添加到 LDAP 域。就在几天前,发布了新版本的脚本,在这台服务器(几天前创建的)上,sssd 配置与其他服务器不同。结果,两个条件同时满足:
Domain admins
用空格分隔,并且 sssd 配置区分大小写。我已经在简单命名的组上进行了测试,并检查了小写配置的组名称并且它可以使用它。我禁用了re_expression
所有内容,并且所有内容都适用于Domain admins
组和任何不区分大小写的配置。有必要询问开发商为什么这样做。