我正在尝试让 OpenBSD 服务器使用我的家庭网络的其余部分使用的同一 LDAP 服务器来对用户进行身份验证。虽然“获取密码”按预期列出了 LDAP 服务器中的用户,但我无法以其中任何一个用户身份登录。
我的 /etc/login.conf 有以下内容:
#
# ldap
#
ldap:\
:auth=-ldap:\
:x-ldap-server=kaitain.cory.albrecht.name,389,plain:\
:x-ldap-basedn=ou=People,dc=cory,dc=albrecht,dc=name:\
:x-ldap-filter=(&(objectclass=posixAccount)(uid=%u)):\
:tc=default:
但是当我尝试测试用户时,我得到以下信息:
root@opensecrets:/etc# /usr/libexec/auth/login_-ldap -d -s login cory ldap
Password:
load_ssl_certs says:
cacert none
cacertdir none
usercert none
userkey none
parse_server_line buf = host
parse_server_line port == NULL, will use default
parse_server_line mode == NULL, will use default
host host, port 389, version 3
setting cert info
clearing ssl set
ldap_open(host, 389) failed
host failed, trying alternates
ldap_open failed
reject
再加上日志中的这些行
Dec 17 15:30:19 <auth.warn> opensecrets.cory.albrecht.name opensecrets login_ldap: ldap_open(host, 389) failed
Dec 17 15:30:19 <auth.warn> opensecrets.cory.albrecht.name opensecrets login_ldap: ldap_open failed
让我想到 /etc/login.conf 的 ldap 部分是如何没有被读取的。在 login.conf 中将端口 389 更改为 38389 不会更改伪造/测试登录的输出。
我完全不知道如何确定导致 login.conf 无法完全解析的原因,我有点希望这是一件容易的事情,但我会因为忘记它而感到非常尴尬。
答案1
事实证明,几乎所有引导您安装 login_ldap、ypldap 和 ypind 的网页都遗漏了一件事。因为 /etc/login.conf 是 termcap 格式的文件,所以您需要对 login_ldap 例程执行“cap_mkdb login.conf”才能在生成的 /etc/login.conf.db 文件中实际查看您的配置。这与其他使用 termcap 格式但不需要将其编译成数据库文件的程序不同,例如 rtadvd。
包含此步骤的唯一网页是这个来自塔尔马斯卡(链接现已失效),而几乎所有其他演练似乎都源自Helion Prime 的这个(链接现已失效)其中没有提到您需要使用 cap_mkdb。