我们目前有一些 uid 为 5001-5010 的本地用户和一些 uid 范围为 1001-1010 的用户。
我们看到的问题是,当 5000 范围内的用户尝试进行身份验证时,无论谁尝试进行身份验证,它似乎都会继续尝试使用相同的 uid=1001。如果我将 5001 中的一个用户的 uid 更改为 1001,身份验证就会成功。
我无法完全说出在配置的哪个地方可能导致了这个问题。
pam文件
auth required pam_nologin.so
auth required pam_securetty.so
auth required pam_env.so
auth include system-auth service=system-auth
account include system-auth service=system-auth
session include system-auth service=system-auth
验证错误
Mar 1 14:52:08 dev-host apphttpd: pam_unix(pamwebapp:auth): authentication failure; logname= uid=1001 euid=1001 tty= ruser= rhost= user=user1
如前所述。如果我将用户更改为匹配 uid=1001,那么他们就可以进行身份验证。任何指导都将不胜感激。
谢谢
答案1
你说PAM 文件。有许多 PAM 文件,PAM 可能有点神秘,但基本上对于给定的服务(例如 SSH),存在/etc/pam.d/sshd
。其内容将类似于
auth requisite pam_nologin.so
auth include common-auth
account requisite pam_nologin.so
account include common-account
password include common-password
session required pam_loginuid.so
session include common-session
session optional pam_lastlog.so silent noupdate showfailed
如果没有 PAM 教程,那么要理解的基本内容就是include
第二列,其中引用或包括那/etc/pam.d/<filename>
。
您需要了解文件位于/etc/pam.d/
. 您发布了什么内容/etc/pam.d/login
。我pamd/login
的是
auth requisite pam_nologin.so
auth [user_unknown=ignore success=ok ignore=ignore auth_err=die default=bad] pam_securetty.so
auth include common-auth
account include common-account
password include common-password
session required pam_loginuid.so
session include common-session
session optional pam_lastlog.so nowtmp
session optional pam_mail.so standard
session optional pam_ck_connector.so
应该很快就会发现,PAM 文件会归结为少数几个核心 INCLUDE 文件。找到那些。还要注意类似的东西/etc/pam'd/sshd
只与通过 SSH 登录有关,而不是通过键盘连接到将由 处理的系统/etc/pam.d/login
。因此,您需要识别正在发生的任何进程或服务,这些进程或服务正在尝试进行身份验证,然后依赖于该特定的 PAM 文件。据我所知,PAM 不进行 UID 重新映射,如果发生这种情况,它发生在 PAM 之上/之前/之外。
默认 PAM 文件在不同的 Linux 发行版(redhat、sles、ubuntu、debian、mint 等)之间可能有很大差异。