我只希望用户“theuser”登录该主机。
我在 nslcd.conf 中尝试了以下内容:
pam_authz_search (&(objectClass=posixAccount)(IsActive=TRUE)(uid=theuser))
但所有人都可以登录。如果我使用“filter”命令而不是pam_authz_search,它可以工作,但getent只返回一个用户,即“theuser”。
更新: 操作系统是 ubuntu 12.10,我使用的是 libpam-ldapd 而不是 libpam-ldap
答案1
您可以使用 /etc/security/access.conf 文件控制谁登录服务器(无论用户数据库的来源如何)。对于此机制,您需要启用 pam_access 模块(通常用于帐户阶段)。可以在 /etc/pam.d/common-account 中为所有服务启用,也可以在 /etc/pam.d/sshd 中启用,使其仅对 ssh 连接有效。
请查看 access.conf 和 pam_access 的手册页以了解详细信息。
答案2
以 RHEL6 为例:
使用以下命令编辑 /etc/pam_ldap.conf:
pam_filter |(uid=myuid)
并保持 /etc/nslcd.conf 不变。这将允许您浏览使用“id someuser”的所有用户,但只允许“myuid”登录。
答案3
/etc/ssh/sshd_config 中还有 AllowUsers 和 AllowGroups,它们也可用于访问控制,假设他们只有 ssh 访问权限。