Ubuntu 10.04で、LDAPでログインできるようにする[追記あり]
最初に、重大なお知らせがあります。私は、LDAPについて、きちんと理解していません。とりあえず、Ubuntu 10.04で、LDAPで作ったユーザがログインできるように設定しただけです。なので、間違っている事を書いているかもしれません。その場合は、お知らせ下さい。
LDAPは、エルダップと読みます。
Ubuntu 10.04へのLDAPの設定は、次のページを参照しました。ほとんどの事が、ここに書いてあると思います。Thank you very much.
- OpenLDAP Server (公式ガイド)
このページの存在は、次の記事で知りました。ご紹介、ありがとうございます。
一番先に、LDAPに関して見つけたのは、次の記事だったのですが、ちょっと難しかったです。まとめていただいて、ありがとうございます。
それでは、"OpenLDAP Server“にしたがって、設定をしていきたいと思います。
次のような手順になります。
- パッケージのインストール
- LDAPの基本設定
- LDAP認証の設定
工程1です。まず、パッケージのインストールです。
$ sudo apt-get install slapd ldap-utils
工程2です。次に、LDAPの基本設定です。
意味がわからないのですが、次のコマンドを、実行します。
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif
その次に、"backend.example.com.ldif"と言うファイル名で、次の内容を作ります。ファイルの場所は、どこでも良いです。"olcRootPW"に書く"secret"は、LDAPシステムのパスワードになります。変えておいてください。
# Load dynamic backend modules
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: back_hdb
# Database settings
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcSuffix: dc=example,dc=com
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=example,dc=com
olcRootPW: secret
olcDbConfig: set_cachesize 0 2097152 0
olcDbConfig: set_lk_max_objects 1500
olcDbConfig: set_lk_max_locks 1500
olcDbConfig: set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcAccess: to attrs=userPassword by dn="cn=admin,dc=example,dc=com" write by anonymous auth by self write by * none
olcAccess: to attrs=shadowLastChange by self write by * read
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=example,dc=com" write by * read
次のコマンドで、このファイルを読み込みます。
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f backend.example.com.ldif
それが終わったら、次のファイルを"frontend.example.com.ldif"と言う名前で作ります。これも、どこに置いても良いです。パスワードやUIDに気をつけて下さい。
# Create top-level object in domain dn: dc=example,dc=com objectClass: top objectClass: dcObject objectclass: organization o: Example Organization dc: Example description: LDAP Example # Admin user. dn: cn=admin,dc=example,dc=com objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword: secret dn: ou=people,dc=example,dc=com objectClass: organizationalUnit ou: people dn: ou=groups,dc=example,dc=com objectClass: organizationalUnit ou: groups dn: uid=john,ou=people,dc=example,dc=com objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount uid: john sn: Doe givenName: John cn: John Doe displayName: John Doe uidNumber: 2000 gidNumber: 10000 userPassword: password gecos: John Doe loginShell: /bin/bash homeDirectory: /home/john shadowExpire: -1 shadowFlag: 0 shadowWarning: 7 shadowMin: 8 shadowMax: 999999 shadowLastChange: 10877 title: System Administrator postalAddress: initials: JD dn: cn=example,ou=groups,dc=example,dc=com objectClass: posixGroup cn: example gidNumber: 10000
ファイルを作り終わったら、次のコマンドで読み込みます。パスワードは、先ほど指定したLDAPシステムのパスワードです。
$ sudo ldapadd -x -D cn=admin,dc=example,dc=com -W -f frontend.example.com.ldif Enter LDAP Password: adding new entry "dc=example,dc=com" adding new entry "cn=admin,dc=example,dc=com" adding new entry "ou=people,dc=example,dc=com" adding new entry "ou=groups,dc=example,dc=com" adding new entry "uid=john,ou=people,dc=example,dc=com" adding new entry "cn=example,ou=groups,dc=example,dc=com"
ldapsearchコマンドで、正しく設定されているか、確認します。
$ ldapsearch -xLLL -b "dc=example,dc=com" uid=john sn givenName cndn: uid=john,ou=people,dc=example,dc=com sn: Doe givenName: John cn: John Doe
工程3に移ります。認証の設定です。パッケージをインストールします。
$ sudo apt-get install libnss-ldap
インストールの途中で、設定変更画面に変わります。
いろいろ聞かれるので、"example", “com"に変更しておきます。
キャプチャしたものを貼り付けておきます。クリックで拡大します。全部で9ステップあるのですが、最初の1ステップ目をキャプチャし損ないました。
もし、失敗したら、次のコマンドでやり直せます。
$ sudo dpkg-reconfigure ldap-auth-config
最後に、システムの認証方式を変更します。
$ sudo pam-auth-update
これらが終わったら、ホームディレクトリを作ります。
$ cd /home $ sudo mkdir john $ sudo chown john.example john
これで、LDAPのID"john"でログインできるようになっているはずです。
ところが、johnでログインして、パスワードを変更しようとすると、次のエラーが出ます。
john@lucid:~$ passwd Enter login(LDAP) password: パスワード: 認証情報を回復できません passwd: パスワードは変更されませんでした john@lucid:~$ unset LANG john@lucid:~$ passwd Enter login(LDAP) password: passwd: Authentication information cannot be recovered passwd: password unchanged
/etc/pam.d/common-passwordを書き換えておく必要があります。
authtok try_first_pass
となっているのを、authtokを消します。
try_first_pass
手順は、次の通りです。
$ sudo service slapd stop $ sudo vi /etc/pam.d/common-password $ sudo service slapd start
次の情報を参考にさせていただきました。Thank you.
(追記 2010-12-14 01:18)
検索していたら、次の記事を見つけました。
- Ubuntu10.04でOpenLDAP | サラトガIT日記 (公式ガイドのデータベースの構造が、わかりやすく説明されています)
- OpenLDAP構築@Ubuntu10.10 – 情報系学生のメモ (公式ガイドの簡単な説明の他、LDAPのコマンドが説明されています)
ディスカッション
コメント一覧
まだ、コメントがありません