Ubuntu 10.04で、LDAPでログインできるようにする[追記あり]

2017年10月12日パソコン・インターネット

最初に、重大なお知らせがあります。私は、LDAPについて、きちんと理解していません。とりあえず、Ubuntu 10.04で、LDAPで作ったユーザがログインできるように設定しただけです。なので、間違っている事を書いているかもしれません。その場合は、お知らせ下さい。

LDAPは、エルダップと読みます。

Ubuntu 10.04へのLDAPの設定は、次のページを参照しました。ほとんどの事が、ここに書いてあると思います。Thank you very much.

このページの存在は、次の記事で知りました。ご紹介、ありがとうございます。

一番先に、LDAPに関して見つけたのは、次の記事だったのですが、ちょっと難しかったです。まとめていただいて、ありがとうございます。

それでは、"OpenLDAP Server“にしたがって、設定をしていきたいと思います。

次のような手順になります。

  1. パッケージのインストール
  2. LDAPの基本設定
  3. 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ステップ目をキャプチャし損ないました。

libnss-ldap 2

libnss-ldap 3

libnss-ldap 4

libnss-ldap 5

libnss-ldap 6

libnss-ldap 7

libnss-ldap 8

libnss-ldap 9

もし、失敗したら、次のコマンドでやり直せます。

$ sudo dpkg-reconfigure ldap-auth-config

最後に、システムの認証方式を変更します。

$ sudo pam-auth-update

LDAP PAM

これらが終わったら、ホームディレクトリを作ります。

$ 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)

検索していたら、次の記事を見つけました。

[amazonjs asin="B01LZURAPK" locale="JP"]

Posted by お市のかた