web-dev-qa-db-ja.com

getentがOpenLdapユーザーを表示しないのはなぜですか?

LDAP資格情報を使用してログインできるようにUbuntu10.04を構成しようとしています。

私が見つけたいくつかのチュートリアルで概説されているこれらの一般的な構成手順に従いました。

1)ライブラリをインストールします。

Sudo apt-get install libpam-ldap libnss-ldap nss-updatedb libnss-db nscd

2)libnss_ldapによってプロンプトが表示されたら、接続の詳細を入力します

3)ldapを使用するようにnsswitch.confを構成しました。

...
passwd: files ldap
group: files ldap
shadow: files ldap
...

4)構成されたpam.d common- *ファイル

「common-auth」の内容は次のとおりです。

auth    [success=2 default=ignore]      pam_unix.so nullok_secure
auth    [success=1 default=ignore]      pam_ldap.so use_first_pass
# here's the fallback if no module succeeds
auth    requisite                       pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth    required                        pam_permit.so
# and here are more per-package modules (the "Additional" block)
# end of pam-auth-update config

私はこれを2つのLinuxサーバーで試しました。どちらもLDAPユーザーを認識していないようです。例えば、 getent passwd <ldap username>は何も返しません。 id <ldap username> 戻り値 no such user

LDAP資格情報を使用してsshを実行しようとすると、auth.logに次のように表示されます。

Jun  2 14:16:50 hostnameXX sshd[1527]: pam_unix(sshd:auth): check pass; user unknown
Jun  2 14:16:50 hostnameXX sshd[1527]: pam_unix(sshd:auth): authentication failure; logname=uid=0 euid=0 tty=ssh ruser= rhost=xx.xx.xx.xx

更新

Ldap.confで次のコメントを外しました。

nss_base_passwd ou=xxx,dc=xxx,dc=xxx
nss_base_shadow ou=xxx,dc=xxx,dc=xxx
nss_base_group  ou=xxx,dc=xxx,dc=xxx

そして今少し進歩しています-私は今auth.logでこれを見ています:

Jun  2 16:15:03 <hostname> sshd[1566]: pam_ldap: error trying to bind as user cn=xxxx,ou=xxx,dc=xxx,dc=xx" (Invalid credentials)
Jun  2 16:15:05 <hostname> sshd[1566]: Failed password for invalid user xxxx from xx.xx.xx.xx port xxxx ssh2

Ldap.confで指定されているのと同じホストとベースdnを使用してldapsearchを実行すると、ldapユーザーアカウントを正常に照会して見つけることができます。

何が足りないのですか?たぶん、いくつかのサービスを開始する必要がありますか?助けてくれてありがとう。

4
Upgradingdave

Nslcdをデバッグモードで起動しました:nslcd -dそして、それがオブジェクトクラスposixAccountを探していたことをステートメントで見ました。 LDAPのすべてのエントリはinetOrgPersonタイプでした。 nis.schemaをslapd.confファイルに含めてから、posixAccountを補助オブジェクトクラスとして各エントリに追加する必要がありました。その後、ついにgetentを使用してLDAP内のアカウントを確認できるようになりました。

ここにクロス投稿:

https://serverfault.com/questions/282349/is-it-necessary-to-synchronize-users-between-ubuntu-client-and-ldap

3
Upgradingdave

Pamモジュールにpam_ldapがありますか?それが欠けていると、動作が説明されます。

1
zedman9991

私たちの(Centos)システムはLDAPを使用しています(Active Directoryに対して)。 /etc/ldap.confを設定しましたか?私たちのものは、nss_ *タグをLDAPのDNにマップします。あなたがそれをしていなければ、それはうまくいかないでしょう。これをチェックしてください openldap authチュートリアル

nscd、名前サービスキャッシュデーモンに役立つ可能性のあるサービスがあります。名前が示すように、キャッシュするだけなので、問題になる可能性は低いですが、問題を理解すると役立つ場合があります。 「スタック」することがあり、キャッシュが適切に更新されない場合はバウンスする必要があります。

1
Rich Homolka