質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

LDAP

LDAPは、ディレクトリデータベースにアクセスするためのプロトコルです。ディレクトリデータベースとは、ネットワークに存在するメールアドレスや環境などさまざまな情報を一元的に管理するサービスのことで、クライアントはLDAPサーバにアクセスしてユーザ名から検索や追加などの操作することができます。

Q&A

解決済

1回答

11309閲覧

ldap認証について

gik

総合スコア152

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

LDAP

LDAPは、ディレクトリデータベースにアクセスするためのプロトコルです。ディレクトリデータベースとは、ネットワークに存在するメールアドレスや環境などさまざまな情報を一元的に管理するサービスのことで、クライアントはLDAPサーバにアクセスしてユーザ名から検索や追加などの操作することができます。

0グッド

1クリップ

投稿2017/09/13 11:17

編集2017/09/22 15:19

今centos7でldap認証をnss-pam-ldapd nscdを使って行いたいとも思い、

https://forum.zentyal.org/index.php?topic=23831.0
を見ながら行っているのですが、 authentication failedがでてしまいます。

やり方としては
yum install -y openldap-clients nscd
をインストールし
/etc/openldap/ldap.conf に

TLS_CACERTDIR /etc/openldap/cacerts # Turning this off breaks GSSAPI used with krb5 when rdns = false SASL_NOCANON on URI ldap://127.0.0.1 BASE dc=,dc= ←ドメインを入力

/etc/nsswitch.conf

Code: [Select] passwd: files sss ldap shadow: files sss ldap group: files sss ldap #initgroups: files #hosts: db files nisplus nis dns hosts: files dns # Example - obey only what nisplus tells us... #services: nisplus [NOTFOUND=return] files #networks: nisplus [NOTFOUND=return] files #protocols: nisplus [NOTFOUND=return] files #rpc: nisplus [NOTFOUND=return] files #ethers: nisplus [NOTFOUND=return] files #netmasks: nisplus [NOTFOUND=return] files bootparams: nisplus [NOTFOUND=return] files ethers: files netmasks: files networks: files protocols: files rpc: files services: files netgroup: files ldap publickey: nisplus automount: files ldap aliases: files nisplus

/etc/nslcd.conf

uid nslcd gid ldap uri ldap://127.0.0.1 ldap_version 3 base dc=,dc= ドメインを入力 binddn cn=Manager,dc=,dc= ドメインを入力 bindpw ディレクトリーパスワードを入力 scope sub //dcはドメイン名を入力 base group ou=Groups,dc=,dc= base passwd ou=People,dc=,dc= base shadow ou=People,dc=,dc= tls_reqcert never ssl no tls_cacertdir /etc/openldap/cacerts

ldapの登録の仕方はhttps://www.server-world.info/query?os=CentOS_7&p=openldap&f=1
を見たりしました

後nslcd -dを行うと
daemon may already be active, cannot acquire lock (/var/run/nslcd/nslcd.pid): Permission denied
というエラーが出ます

urlの部分はIPアドレスではなくドメインで書いてもダメでした
ファイヤウォールやselinuxの設定は終わっています。
どこが原因なんでしょうか?

希望としては
Last login: Sat Mar 19 18:38:42 GMT 2016 on pts/1
su: warning: cannot change directory to /home/ldapuser1: No such file or directory
id: cannot find name for group ID 2001
-bash-4.2$
こういう感じででてきてほしいです。

また別の方にヒントもらったのですが、ldapsearch -xはエラーでなくなりましたが、
ldapsearch -x -H ldap://127.0.0.1 -D "cn=Manager,dc=example,dc=com" -W -b "ou=People,dc=example,dc=com" "*"
getent passwd
もちゃんとldapユーザーが表示されます。

また、
/etc/pam.d/password-auth

auth required pam_env.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so account required pam_unix.so broken_shadow account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 1000 quiet account [default=bad success=ok user_unknown=ignore] pam_ldap.so account required pam_permit.so password requisite pam_pwquality.so try_first_pass retry=3 type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password sufficient pam_ldap.so use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so -session optional pam_systemd.so session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so session optional pam_ldap.so

/etc/pam.d/system-auth

auth required pam_env.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so account required pam_unix.so broken_shadow account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 1000 quiet account [default=bad success=ok user_unknown=ignore] pam_ldap.so account required pam_permit.so password requisite pam_pwquality.so try_first_pass retry=3 type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password sufficient pam_ldap.so use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so -session optional pam_systemd.so session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so session optional pam_ldap.so

になっています。

この後実はパスワードを変更したら認証できました。
変更コマンドは
ldappasswd -x -D "cn=Manager,dc=private,dc=jp" -S -w <バインドDNパスワード>
"uid=ldapuser,ou=People,dc=private,dc=jp"
を使いました。
uidとdcは環境に合わせました。

/var/log/messagesでnscld ldap_result() failed no such objectのエラーがでました。
認証はできています。
/var/log/secureではエラーはでていません。
後、getent passwdを行うとuidで同じ人がグループID違いで2回でてきます。
これは一回2回でてくるuidを削除したらでてこなくなるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TaichiYanagiya

2017/09/13 12:38

CentOS のバージョンは 6, 7 のどちらでしょうか? 7 だと、sssd-ldap の方がいいかもしれません。
gik

2017/09/13 16:18 編集

cent os7です。書き忘れました。sssd-ldapよりnscdを使ってくださいと言われまして
gik

2017/09/13 17:21 編集

どちらでも認証ができれば大丈夫なんですが、認証ができない.....
gik

2017/09/20 13:16

認証はできた。といっていいのかわかりませんが、一応通りました。
TaichiYanagiya

2017/09/20 15:47

"no such object" だけではわかりません。どのような操作をしてそのログが出力されたのか、"no such object" を含む 1行すべて(プロセス名などの情報)と関連する上下の行を提示ください(開示できない文字列は置き換えて)。
gik

2017/09/20 16:01 編集

su - ユーザ名で認証したときに/var/log/messagesでNo such objectと書かれています。 ちゃんとエラ―内容次回書いてきます。 すいません。
gik

2017/09/22 15:18 編集

/var/log/messagesでnscld ldap_result() failed no such objectのエラーがでました。 認証はできています。 /var/log/secureではエラーはでていません。 後、getent passwdを行うとuidで同じ人がグループID違いで2回でてきます。 これは一回2回でてくるuidを削除したらでてこなくなるのでしょうか?
guest

回答1

0

ベストアンサー

まず、LDAP を確認しましょう。
ドメインを dc=example,dc=com とすると、ldapsearch でユーザーのエントリーが参照できることを確認します。

# ldapsearch -x -H ldap://127.0.0.1 -D "cn=Manager,dc=example,dc=com" -W -b "ou=People,dc=example,dc=com" "*"

uid, userPassword の他、Linux/UNIX ユーザーとして見せるため、 uidNumber, gidNumber, homeDirectory, loginShell (posixAccount クラスの属性) が必要です。

次に、NSS(nssswitch.conf), nslcd 経由で passwd 情報が参照できることを確認します。

# getent passwd (/etc/passwd に加えて LDAP ユーザーが出力されることを確認)

投稿2017/09/14 02:20

TaichiYanagiya

総合スコア12139

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gik

2017/09/14 08:56

確認します。
gik

2017/09/15 12:15 編集

ldapsearch -x -H ldap://127.0.0.1 -D "cn=Manager,dc=example,dc=com" -W -b "ou=People,dc=example,dc=com" "*" でエントリー参照できました。 これldapの認証まではできていることですよね? getent passwdもLDAP ユーザーが入ってました。
TaichiYanagiya

2017/09/15 14:22

ログインは SSH でしょうか、コンソールでしょうか? ログインに失敗した時刻の /var/log/secure にエラーか記録されていないか確認ください。 journal のログは nslcd が LDAP に接続できないものですが、現在は getent passwd で LDAP ユーザー情報を取得できているので、それ以前の時刻のものだと思います。
gik

2017/09/16 07:41

/var/log/secure確認します。 ログインはsu - ldapユーザー名で行いました。 ログの意味はnslcd が LDAP に接続できないものですか、ldapサーバーがきちんと設定されていないのかとばかり思っていました。 ほかに見る場所ありますでしょうか?
gik

2017/09/20 13:15

すいません。認証できて別のエラーがでてきて、/var/log/secure確認するの忘れました。 今度確認します。 uid登録した同じ名前の人が2つでてきてしまい、困っています。 また/var/log/messagesでNo such objectというエラーがでます。 この件はどう考えたらいいでしょうか? 実は一つ考えているのがuidを削除して新しく登録してみようと考えているのですが この考え方であっているというかせっかく認証できたのがまただめになってしまうかと 思うと心配で。今日はできませんでした。 せっかく認証できたのにエラーがでてきてしまいちょっとどうしたらいいか... すいません。アドバイスお願います。 /var/log/secureアドバイスもらったのにすいません。次回ちゃんと見てきます。
TaichiYanagiya

2017/09/22 15:41

> getent passwdを行うとuidで同じ人がグループID違いで2回でてきます。 uid=A,gidNumber=X と uid=A,gidNumber=Y が違う DN で登録されているのではないでしょうか? ldapsearch -LLL (略) '(&(uid=A)(gidNumber=X))' dn ldapsearch -LLL (略) '(&(uid=A)(gidNumber=Y))' dn もし、そうであれば、どちらかの DN を削除すればいいと思います。
gik

2017/09/24 16:10

ありがとうございます。やってみます。返事が遅くなりすいません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問