ラベル LDAP の投稿を表示しています。 すべての投稿を表示
ラベル LDAP の投稿を表示しています。 すべての投稿を表示

2025年11月4日火曜日

LDAP とローカルで同じユーザー名をつけたら一度ログアウトしましょう,という話

 情けない話なので備忘録.
ローカルで user1 を作成しログインした状態で,同名ユーザーを LDAP で user1 としou=SUDOers となるグループに設定していた.このとき,ユーザー名は同じに見えるのだけれど,user_id がローカルは 1001,LDAP は 10001 となっていたので,「ユーザー名は正しく見えるのにファイル生成で変に permission denied されるぞ」「ユーザー名は正しく見えるのにsudoできないぞ?」という事態が起きていた.
% sudo ls
sudo: あなたは passwd データベースに存在しません

どうやってわかったかというと,id コマンドは認証系 (LDAP) のユーザー名と user_id を表示してくれて,
% id user1
uid=10001(user1) gid=10001(user1) groups=10001(user1),11000(admin),10000(user)

そのシェルで whoami したらローカルでログインした該当 user_id が認証システムにないと言われたためである.
% whoami
whoami: cannot find name for user ID 1001

ls-n オプションをつけるとユーザー名ではなくユーザーIDを表示してくれるのでそれもよいかもしれない.
%ls -l
合計 383M
drwxr-xr-x.  6 user1 user1 4.0K 10月 22 01:43 .
drwxrwxrwx. 83 user1 user1 8.0K 10月 22 06:41 ..
...
drwxr-xr-x. 14 user1 user1 4.0K 10月 21 21:48 zlib-1.2.9
%ls -ln
合計 383M
drwxr-xr-x.  6 10001 10001 4.0K 10月 22 01:43 .
drwxrwxrwx. 83 10001 10001 8.0K 10月 22 06:41 ..
...
drwxr-xr-x. 14 10001 10001 4.0K 10月 21 21:48 zlib-1.2.9

ログアウトしてログインしたら解決したという情けない話であった.とはいえ認証系でおかしい時にログアウトするのは勇気がいるけれど.
(危ない操作をする場合は,タブ1つはログインしっぱなしにしておけとか,違う tty でログインしておけ,とか言っていましたね)

2025年11月3日月曜日

ldappasswd が Invalide credentials (49) を返してくる

 タイトルの通りですが,LDAPのパスワードを変えようと ldappasswd を使うのだが,  
と返されうまくいかない.原因は
(1) 認証に利用しているrootdnが異なる
(2) 認証に利用しているパスワードが異なる,特に平文を使っている場合,それがハッシュ化される時のハッシュ値が実行条件によって変化する
(3) 認証に利用しているパスワードへのアクセス権がない
などがあげられるらしいが,(2) はMD5にしているし,(1),(3) は他の ldap* コマンドは受け付けているので理由が全くわからなくて困ってしまった.

結局初期化はインスタンスごと作り直すことに.
 

こんな感じの Perl スクリプトでユーザーを追加する .ldif を作成.

 

シェルスクリプトで .ldif スクリプトを起動.

 

その後,既存インスタンスの削除,インスタンス生成,LDAP オブジェクトの生成(基本+自分),LDAP オブジェクトの生成( Perl で作った学生分)という感じ.

2025年11月2日日曜日

LinuxMint / AlmaLinux 環境に LDAP を入れる

長年やりたいと思っていた  LDAP/389DirectoryServer をインストールできた.こちらのサイトを大いにコピー参考させていただいた.大変ありがたい.


こちらの環境は以下の通りなので,Server 側は一部読み替えが必要です.
Server:LinuxMint 
Client:AlmaLinux8 

Server側設定

LDAP/389DirectoryServer をインストール

 

生成した .inf の一部を書き換える.

 

インスタンスの生成と動作確認
 
→Activeになっていることを確認

ポート開放

クライアントから接続するためのポートをあける

 
 

sssd.ldif を作成

意識が低いので公開鍵認証ではなくパスフレーズ認証です.元記事にあった公開鍵認証のためのスキーマは読みません.

 

sssd.ldif を読む

 

補足:
   
modify operation type is missing at line 2, entry "ou=Users,dc=example,dc=com"
と表示されてる場合,ldapadd ではなく ldapmodify を実行している.ldapmodify を使う場合は,ldifにどのような変更を行うか記述が必要らしい.


再度実行してみる

 

ldif の情報が登録できたか確認する.
 

クライアント設定

sssdインストール

 

sssd.conf は Quita の記事のほぼそのままです.

 

 

SSSD 起動

 
→Activeになっていることを確認

動作確認
 

ユーザー情報取得

 


認証をSSSDに変更

 

ログインしてみよう.

 

.bashrc が読めていないけれど,ログインもできたしsudoもできた.ようやく使えるようになった.

LDAP初期化

LDAP の設定を初期化する際は消す前に一度止める必要があるらしい.LDAP 設定でおかしいなと思ったら,次の一連のコマンドを実行してまっさらな .inf ファイルから再構築していた.この知識がない段階では,LDAP  がうまくいかなくなったら OS まるごと再インストールしていた.(TATが…)

 

参考

こちらのサイトも参考にはしていたのだけれど,おそらく aci 設定が適切でなくてユーザー情報は引けたがログインには至らなかった.

いつも頼りにしている Server World さんの設定はすごくシンプルなんだがうまくいかない.

OpenLDAP : LDAP サーバーの設定
https://www.server-world.info/query?os=Rocky_Linux_8&p=openldap&f=1
OpenLDAP : LDAP クライアントの設定
https://www.server-world.info/query?os=Rocky_Linux_8&p=openldap&f=3

はまったこと

sssd.ldif に書いたパスワードの末尾に空白があるとパスフレーズ認証が通らない.これは平文でも暗号化していても同じ.これでずっと悩んでいて,うまく行ったりうまく行かなかったりぱっと見の再現性がなくてめっちゃこまっていた.
また /root/ds01.inf の先頭行が空欄になっていたのも問題だったかもしれない.とにかく設定中にエラーなり警告なりが出てくれないので難易度が高すぎる.