- ベストアンサー
LDAPユーザー認証で、設定後パスワード変更したいが、、、
RedHatLinux9+OpenLDAPで3台のサーバー(RedHat9+RedHat7+Solaris9)のユーザー認証させようと思ってます。 今現在ユーザー登録は、登録時に仮パスワードを発行、その後ユーザーに任意のパスワードに変更してもらうようにしています。でもこれだとその都度LDAPに登録しなおさないといけないわけですよね? LDAPからそのユーザーのエントリを削除してから入れなおすという順序になるんでしょうか? 追加ユーザー数が百近くあり、これは現実的ではないので、何かいい方法がないかと模索しています。 みなさんはこの辺をどう処理しているんでしょうか? よろしくお願いします
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
偉そうに回答なんて出来る立場(Solaris上のLDAP構築し、アカウント統合等をしたいと考えている段階)ではありませんが、興味を抱いた質問なので回答させて頂きました。 (1)ldapsearchで対象ユーザのLDIF形式ファイルを作成する。 (2)passwd/groupファイルからuid、userPassword等を取得してLDIF形式ファイルを編集。 (3)ldapmodify < ファイルで属性値の更新。
その他の回答 (2)
- k-841
- ベストアンサー率27% (129/465)
#1です。 >問題が起きる前にうまく処理できるような方法が無いものかと探しているんです。 「問題が起きる」要因を考えれば自ずと解決策は決まってくると思います。たとえば、パスワードの変更時にユーザがミスをおかすなどの理由で当該ユーザがサービスを受けられなくなるのを危惧するのであれば、passwdコマンドと同じようなインタフェイスを用意するとかですね。特にパスワードの変更は、エンクリプトしてldap_modify()をかける必要がある(通常の変更より複雑)ため、安全に利用できるインタフェースは必須かもしれません。 なお、 >ユーザのエントリを削除してから入れなおす という記述が気になりますが、単に既存のパスワードの属性値を変更するだけでしたら、MOD_REPLACEタイプでldap_modify()を実行すれば、変更したい情報だけが書きかわりますので、エントリを削除する必要はないはずです。詳しくは man ldap_modify などを参照して下さい。また、コマンドラインインタフェイスでは#2の方がおっしゃるようなldapmodifyが用意されています。
お礼
/etc/passwdとLDAPの暗号化方法が違うので ldifファイルを抽出してパスワードだけ変更というのが難しそうだったので /etc/passwdをchange.ldifという名前でldifに変換。 vi でchange.ldifをパスワ-ドを変更したユーザーだけにして ldapmodify -x -D "cn=Manager,dc=example,dc=net" -W < change.ldif としたらうまくいきました。 問題なさそうですが、どうなんでしょうか? よろしくお願いします
- k-841
- ベストアンサー率27% (129/465)
LDAPで認証はやったことがありませんので素人です。 よくわかりませんが、LDAPのパスワードエントリの変更をしたいだけですよね?openldapのAPIでldap_modify(3)がありますが、通常はエントリ中の特定の属性のみを変更します(普通のDBでもそういう作りだと思いますが)。これはごく一般的手法だと思いますが、どう現実的ではないのですか?ましてやたった100近くの追加ユーザ数ならば手動でやってもたかが知れています。問題点をもう少し詳しく補足していただければ、より的確なアドバイスが得られると思います。
お礼
すいません、わかりにくい質問で。 何が問題なのかというと まずユーザーがいつパスワードを変更したかわからないという事。(ずっと仮パスワードのままの人もいるので) そして専任の管理者という者がいない為、パスワード変更後、メールが使えない等問題が発生しても、すぐには対応できないという事。(3台のサーバーの内1台はメールサーバーです。) なので問題が起きる前にうまく処理できるような方法が無いものかと探しているんです。
お礼
恥ずかしながらldapmodifyはぜんぜん調べてませんでした。 これしかなさそうですね。 ありがとうございます