CentOS7でOpenLDAPを使ってみよう!
第二回目となる今回は、OpenLDAPの導入から基本設定について詳しく説明します。
今回用いるサーバは、フリーソフトのOpenLDAPが利用できるCentOS7 です。
OpenLDAPの導入についての解説を行う前に改めてLDAPを使うことのメリット(目的)についての説明をします。
第一回目から繰り返しになりますが、LDAPを使うことでユーザ情報の一元管理が可能 になります。
例えば、A、B、C、Dという4台のサーバがある場合に、通常であればユーザ情報はそれぞれのサーバに持たせる必要があります。
そして、それぞれのサーバに重複して登録済みのあるユーザのパスワードを変更する場合、一台一台にログインしてパスワードを変更しなくてはなりません。
ここにLDAPサーバを導入することで、ユーザ情報はLDAPサーバだけに持たせて、A、B、C、Dの各サーバ側にはユーザ情報を持たせないで運用することが可能になります。
具体的には、A、B、C、Dの各サーバにログインする際のユーザ認証をLDAPサーバに問い合わせをする(任せる)ようにすることで、一元管理を実現させます。
ユーザ、パスワード情報をLDAPサーバで一元管理できれば,新規ユーザが増えた場合でも,LDAPサーバ1台にアカウントを作成するだけで全てのサーバにログインできるようになります。
また、一時的に無効にしたいユーザもLDAPサーバ側でフラグをつけてしまえば全てのサーバへログインできなくなります。
例として4台のサーバとしましたが、何十台、何百台といった大規模システムに活用することも可能ですし、また多数のアプリケーションをサポートできる豊富な機能により使い道は様々です。
今回は例としてLDAPでユーザ管理を出来るようにするところまでの説明を行います。
パッケージのインストール
CentOSにおけるLDAPサーバの機能は、openldap-serversパッケージをインストールすることで使用可能になります。
openldap-serversをインストールするにはopenldapが必要です。
そしてLDAPサーバの基本設定を行うには、LDAP関連コマンドも必要ですので、openldap-clientsもインストールする必要があります。
さらに、libtool-ltdlはopen-clientsの依存パッケージの為、yumを使って依存パッケージも含めてインストールしてください。
現状の確認
# yum list installed 'openldap*'
インストール済みパッケージ
openldap.x86_64 2.4.39-3.el7
OpenLDAPサーバとクライアントのインストール
# yum install 'openldap-servers' 'openldap-clients'
インストール中:
openldap-clients x86_64 2.4.39-6.el7 base 184 k
openldap-servers x86_64 2.4.39-6.el7 base 2.1 M
依存性関連でのインストールをします:
libtool-ltdl x86_64 2.4.2-20.el7 base 49 k
以下、省略
インストール:
openldap-clients.x86_64 0:2.4.39-6.el7 openldap-servers.x86_64 0:2.4.39-6.el7
依存性関連をインストールしました:
libtool-ltdl.x86_64 0:2.4.2-20.el7 perl.x86_64 4:5.16.3-285.el7 perl-Carp.noarch 0:1.26-244.el7
perl-Encode.x86_64 0:2.51-7.el7 perl-Exporter.noarch 0:5.68-3.el7 perl-File-Path.noarch 0:2.09-2.el7
perl-File-Temp.noarch 0:0.23.01-3.el7 perl-Filter.x86_64 0:1.49-3.el7 perl-Getopt-Long.noarch 0:2.40-2.el7
perl-HTTP-Tiny.noarch 0:0.033-3.el7 perl-PathTools.x86_64 0:3.40-5.el7 perl-Pod-Escapes.noarch 1:1.04-285.el7
perl-Pod-Perldoc.noarch 0:3.20-4.el7 perl-Pod-Simple.noarch 1:3.28-4.el7 perl-Pod-Usage.noarch 0:1.63-3.el7
perl-Scalar-List-Utils.x86_64 0:1.27-248.el7 perl-Socket.x86_64 0:2.010-3.el7 perl-Storable.x86_64 0:2.45-3.el7
perl-Text-ParseWords.noarch 0:3.29-4.el7 perl-Time-HiRes.x86_64 4:1.9725-3.el7 perl-Time-Local.noarch 0:1.2300-2.el7
perl-constant.noarch 0:1.27-2.el7 perl-libs.x86_64 4:5.16.3-285.el7 perl-macros.x86_64 4:5.16.3-285.el7
perl-parent.noarch 1:0.225-244.el7 perl-podlators.noarch 0:2.5.1-3.el7 perl-threads.x86_64 0:1.87-4.el7
perl-threads-shared.x86_64 0:1.43-6.el7
依存性を更新しました:
openldap.x86_64 0:2.4.39-6.el7
完了しました!
ldapサービス
Unit name |
slapd.service |
TCP Wrapper |
slapd |
Daemon program |
/usr/sbin/slapd |
Configuration |
/etc/openldap/slapd.conf,/etc/openldap/slapd.d/ |
Document files |
/usr/share/doc/openldap-servers-2.4.39/ |
Pid file |
/var/run/openldap/slapd.pid |
パケットフィルタリングの設定
CentOS7で firewall-cmd を有効にしている場合には、下記のコマンドを実行して通信を許可してください。
# firewall-cmd --permanent --add-service=ldap ldapを許可
success
# firewall-cmd --reload 設定を反映
success
アクセス制御の設定
CentOSでは、LDAPサーバでTCP Wrapperを使用したIPアドレスベースのアクセス制御を行うことができるようになっています。したがって、接続するクライアントに合わせて設定を行う必要があります。
# vi /etc/hosts.allow
slapd:192.168.0.
LDAPサーバの基本設定とサービスの起動
データベースチューニング設定
slapdがデータを保管するデータベースファイルは、/var/lib/ldapに作成されます。slapdを起動する前に、このディレクトリにデータベースチューニングのための設定ファイルを配置しておきます。
サンプルの設定ファイルが用意されていますので、そのファイルをそのままコピーします。
DB_CONFIGファイルのコピー
# cp -a /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
サービスの起動
データベースのチューニングの設定が出来たら、サービスを起動することができます。
# systemctl start slapd.service
# systemctl status slapd.service
slapd.service - OpenLDAP Server Daemon
Loaded: loaded (/usr/lib/systemd/system/slapd.service; enabled)
Active: active (running) since 金 2015-09-04 14:45:07 JST; 3s ago
Docs: man:slapd
man:slapd-config
man:slapd-hdb
man:slapd-mdb
file:///usr/share/doc/openldap-servers/guide.html
Process: 2921 ExecStart=/usr/sbin/slapd -u ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS (code=exited, status=0/SUCCESS)
Process: 2893 ExecStartPre=/usr/libexec/openldap/check-config.sh (code=exited, status=0/SUCCESS)
Main PID: 2923 (slapd)
CGroup: /system.slice/slapd.service
mq2923 /usr/sbin/slapd -u ldap -h ldapi:/// ldap:///
サービスの自動起動
インストールした時点では、セキュリティを考慮して自動的に起動されるようにはなっていません。
# systemctl enable slapd.service
LDAPデータベースの設定
サービスを起動しましたが、実際にLDAPサーバを利用するには、次のような作業を行う必要があります。
LDAPサーバ利用のための準備
- LDAPデータベースの基本設定
- LDAPスキーマの登録
- LDAPエントリの登録
これらの作業は、すべてldapadd、ldapmodify、ldapdeleteなどのLDAPクライアントユーティリティプログラムを使って行います。
LDAPサーバを利用して何のデータを登録・管理するかによって設定内容に若干違いがでますが、基本的な作業方法は共通の手法で行うことができます。
LDAPデータベースの基本設定
CentOSでは、openldap-serversパッケージをインストールすると、標準的なLDAPデータベースの設定がすでに行われています。
しかし、次の3つの情報は、利用者の環境に合わせて修正する必要があります。
- LDAPディレクトリツリーのDN(olcSuffix)
- LDAPデータベースの管理用のアクセス権である特権DN(olcRootDN)
- 特権DNのパスワード(olcRootPW)
LDAPデータベースツリーのDNは、いわばデータベースの名前に相当するものです。ユーザデータを登録するデータベースには、自由に名前を設定することができます。
一般的にはその組織のドメイン名などを元に作成しますので、本記事ではnedia.ne.jpというドメイン名を元に作成したdc=nedia,dc=ne,dc=jpという名称にして解説します。
特権DNは、Linuxシステムのrootユーザに相当するもので、そのLDAPデータベースの全てのデータにアクセスすることのできる権限を持ちます。
本記事では、特権DNをcn=Manager,dc=nedia,dc=ne,dc=jpとして解説します。
データ用ディレクトリの基本設定の確認
まずは、データ用ディレクトリの基本設定がどうなっているかを確認します。設定の確認は、次の例のようにldapserchコマントで行います。
ldapseachによる基本設定の確認
# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b 'olcDatabase={2}hdb,cn=config'
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn: olcDatabase={2}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap ①
olcSuffix: dc=my-domain,dc=com ②
olcRootDN: cn=Manager,dc=my-domain,dc=com ③
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
- ①は、実際のデータが格納されるディレクトリです。
- ②のolcSuffixがLDAPデータベースツリーのDNです。
- ③のolcRooDNがLDAP管理用のアクセス権である特権DNの設定です。
- olcRootPWは設定されていないことがわかります。 ※
※例) 設定されている場合
olcRootPW: xxxxxxxxxxxxx
と表示されます。
ldapseachの引数の「-Y EXTERNAL」は、認証方式の指定です。
また、-Hオプションは、接続するLDAPサーバの指定ですが、ここでは特殊な「ldapi:///」を指定しています。
これは、UNIXドメインソケットを使ってローカルなサーバーに設定を行うことを指定しています。
また、-dオプションは検索場所の指定です。ここでは、olcDatabase={2}hdb,cn=configを指定しています。
これはユーザデータを格納するための設定データが格納されているエントリです。
データ用ディレクトリの管理情報の変更
LDAPエントリのデータ修正は、ldapmodifyコマンドで行います。設定を行うためには次のようなLDIFファイルを作成します。
データ用ディレクトリの初期設定(hdb-init.ldif)
# vi hdb-init.ldif
dn: olcDatabase={2}hdb,cn=config ①
changetype: modify ②
replace: olcRootDN ③
olcRootDN: cn=Manager,dc=nedia,dc=ne,dc=jp ④
-
replace: olcSuffix ⑤
olcSuffix: dc=nedia,dc=ne,dc=jp ⑥
-
add: olcRootPW ⑦
olcRootPW: {SSHA}ofdjXMHz4fv+T9xaoSslDl7HYDLoQMe7 ⑧
- ①設定を行うDNです。先ほどldapsearchの-bオプションで指定したのと同じ、データベース設定設定が格納されているDNを指定します。
- ②このLDIFファイルでは修正(modify)を行うことを宣言しています。
- ③olcRootDNを書き換えることを指定しています。
- ④olcRootDNの値を指定しています。
- ⑤olcSuffixを書き換えることを指定しています。
- ⑥olcSuffixの値をしています。
- ⑦olcRootPWの属性を追加することを指定しています。
- ⑧olcRootPWの値を指定しています。
③と④、⑤と⑥、⑦と⑧は、それぞれ対になっています。
olcSuffix、olcRootDNは、すでに登録されているデータがあるため、属性値の修正となります。
olcRootPWは値が登録されていませんので、属性値の追加(add)を行います。
属性値には、次のようにslappasswdで作成したパスワードを指定します。
slappasswdコマンドによるパスワードの生成方法
# slappasswd
New password: xxxxxx 暗号化するパスワード入力
Re-enter new password: xxxxxx パスワードの再入力
{SSHA}ofdjXMHz4fv+T9xaoSslDl7HYDLoQMe7
データができたら、次のようにldapmodifyコマンドを使ってサーバへ設定を行います。
# ldapmodify -Y EXTERNAL -H ldapi:/// -f hdb-init.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={2}hdb,cn=config"
ちなみに間違った記述があった場合には、下記のようなメッセージが出て反映が行われません。
メッセージに出るヒントを元に記述内容を見直してください。
ldap_modify: Invalid DN syntax (34)
additional info: invalid DN
ldapmodifyコマンドの引数の-fオプションでは、先ほど作成したLDIFファイルを指定します。
先ほどのldapseachによる基本設定の確認コマンドで変更されているか確認します。
# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b 'olcDatabase={2}hdb,cn=config'
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn: olcDatabase={2}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
olcRootDN: cn=Manager,dc=nedia,dc=ne,dc=jp
olcSuffix: dc=nedia,dc=ne,dc=jp
olcRootPW: {SSHA}ofdjXMHz4fv+T9xaoSslDl7HYDLoQMe7
LDAPスキーマの登録
次に、このLDAPサーバで使用するスキーマを登録します。スキーマは、LDAPデータベースのエントリに登録することができるデータの種類や型を定義するものです。
LDAPでは、スキーマを柔軟に定義することができ、様々なアプリケーションのデータを格納することができます。
openldapパッケージをインストールすると、標準スキーマの登録に必要なldifファイルが/etc/openldap/schma/に用意されます。
CentOS標準では、coreスキーマだけが利用できるように設定されています。それ以外のスキーマを使いたい場合にいは、必要に応じて設定を追加する必要があります。
なお、定義されていないオブジェクトクラスは利用出来ません。今回の目的であるユーザ管理を行う上で必要となる オブジェクトクラス「account」 と 「posixAccount」は、 それぞれ、cosineスキーマ と nisスキーマ
で定義されていますので、この二つのスキーマを登録して利用出来るようにします。
スキーマの登録は、/etc/openldap/schema/に用意されているldifファイルを使い、ldapaddコマンドで行います。
下記は、スキーマ登録の例です。
cosine、nisスキーマの登録
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=cosine,cn=schema,cn=config"
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=nis,cn=schema,cn=config"
LDAPエントリの登録
LDAPサーバの設定ができたら、次にLDAPサーバで管理するデータを登録します。ここではLinuxアカウントの管理を行うのに最低限必要な、LDAPデータの登録方法について解説します。
Linuxアカウントの管理を行うためにLDAPサーバを利用する場合、一般的に最初に登録すべきデータは次のようなものです。
- 基本となる組織、ユーザアカウントを管理する組織、グループを管理する組織の登録
- 初期グループアカウントの登録
- 初期ユーザアカウントの登録
基本となる組織・ユーザアカウントを管理する組織・グループを管理する組織の登録
ユーザやグループの情報を登録する前に、その受け皿となる基本の組織、ユーザアカウントを管理するための組織、グループを管理するための組織を登録する必要があります。
登録するためには、次のようなLDIFファイル(init.ldif)を用意します。
LDAP初期エントリLDIFファイル(init.ldif)
# vi init.ldif
dn: dc=nedia,dc=ne,dc=jp ①
objectClass: dcObject
objectClass: organization
o: myorganization
dc: nedia
dn: cn=Manager,dc=nedia,dc=ne,dc=jp ②
objectClass: organizationalRole
cn: Manager
dn: ou=People,dc=nedia,dc=ne,dc=jp ③
objectClass: organizationalUnit
ou: People
dn: ou=Group,dc=nedia,dc=ne,dc=jp ④
objectClass: organizationalUnit
ou: Group
- ①最も基本となるnedia組織のエントリです。このエントリの下位にすべてのエントリを作成します。
- ②特権DN(cn=Manager,dc=nedia,dc=ne,dc=jp)のエントリです。特権DNのobjectClassには、必ずorganizationalRoleを指定します。
- ③ユーザを管理するための組織単位(ou=People,dc=nedia,dc=ne,dc=jp)です。/etc/passwdに相当するものです。
- ④グループを管理するための組織単位(ou=Group,dc=nedia,dc=ne,dc=jp)です。/etc/gruopに相当するものです。
このファイルを、次のようにldapaddコマンドで登録します。
LDAP初期エントリ登録
# ldapadd -x -D "cn=Manager,dc=nedia,dc=ne,dc=jp" -W -f init.ldif
特権DNのパスワード
Enter LDAP Password:
adding new entry "dc=nedia,dc=ne,dc=jp"
adding new entry "cn=Manager,dc=nedia,dc=ne,dc=jp"
adding new entry "ou=People,dc=nedia,dc=ne,dc=jp"
adding new entry "ou=Group,dc=nedia,dc=ne,dc=jp"
ldapaddの-Dオプションで指定しているのは、先ほどolcRootDNに登録したデータベース特権DNです。-fオプションで、先ほど作成したファイルを指定しています。
LDAP初期エントリ登録内容の確認
# ldapsearch -x -LLL -b "dc=nedia,dc=ne,dc=jp" "(objectClass=*)"
dn: dc=nedia,dc=ne,dc=jp
objectClass: dcObject
objectClass: organization
o: myorganization
dc: nedia
dn: cn=Manager,dc=nedia,dc=ne,dc=jp
objectClass: organizationalRole
cn: Manager
dn: ou=People,dc=nedia,dc=ne,dc=jp
objectClass: organizationalUnit
ou: People
dn: ou=Group,dc=nedia,dc=ne,dc=jp
objectClass: organizationalUnit
ou: Group
グループアカウントの登録
/etc/groupに設定されているグループアカウントと同等のエントリを登録します。
グループアカウントはposixGroupオブジェクトクラスを用いて設定します。
posixGroupオブジェクトクラスは、先ほど登録したnisスキーマで定義されているオブジェクトクラスです。
posiGroupオブジェクトクラス(nisスキーマ)
属性タイプ |
説明 |
cn |
一般名称 [Organization Unit] |
gidNubber |
グループ番号(必須項目) |
memberUid |
所属メンバーのユーザ番号 |
description |
説明 |
以下にsystem01,system02というグループを登録する場合の例を示しますので、この例にならって、必要なグループを指定してください。
グループアカウントLDIFファイル(group.ldif)
# vi group.ldif
dn: cn=system01,ou=Group,dc=nedia,dc=ne,dc=jp
objectClass: posixGroup
objectClass: top
cn: system01
gidNumber: 1001
dn: cn=system02,ou=Group,dc=nedia,dc=ne,dc=jp
objectClass: posixGroup
objectClass: top
cn: system02
gidNumber: 1002
このファイルを使って、次の例のようにエントリを登録します。
グループアカウントのエントリ登録
# ldapadd -x -D "cn=Manager,dc=nedia,dc=ne,dc=jp" -W -f group.ldif
ユーザアカウントの登録
/etc/passwdに設定されているユーザアカウントと、同等のエントリを登録します。
ユーザアカウントはposixAccountオブジェクトクラスを用いて設定します。
posixAccountオブジェクトクラス
属性タイプ |
説明 |
cn |
一般名称 [Common Name](必須項目) |
uid |
ユーザ名(必須項目) |
uidNumber |
ユーザ番号(必須項目) |
homeDirectory |
ホームディレクトリ(必須項目) |
userPassword |
パスワード |
loginShell |
ログインシェル |
gecos |
フルネームなど |
description |
説明 |
以下に、user01、user02というユーザを登録する場合の例を示しますので、この例にならって、必要なユーザをしてください。
ユーザアカウントLDIFファイル(user.ldif)
# vi user.ldif
dn: uid=user01,ou=People,dc=nedia,dc=ne,dc=jp
uid: user01
cn: User Tarou
objectClass: account
objectClass: posixAccount
objectClass: top
userPassword: {SSHA}id/UScQEgD0mm7ECT872kAr4W7amY3RK
loginShell: /bin/bash
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/user01
dn: uid=user02,ou=People,dc=nedia,dc=ne,dc=jp
uid: user02
cn: User Jirou
objectClass: account
objectClass: posixAccount
objectClass: top
userPassword: {SSHA}XItL0eeCd1EnMI+tuDaL3N3H0zbd0WrN
loginShell: /bin/bash
uidNumber: 1002
gidNumber: 1002
homeDirectory: /home/user02
オブジェクトクラスtopは基本となるオブジェクトクラスで、objectClass属性が必須項目となっています。
オブジェクトクラスaccountはコンピュータアカウントを表すもので、uidが必須項目となっています。
パスワードはslappasswdコマンドで作成します。
slappasswd
user01
{SSHA}id/UScQEgD0mm7ECT872kAr4W7amY3RK
user02
{SSHA}XItL0eeCd1EnMI+tuDaL3N3H0zbd0WrN
このファイルを使って、次の例のようにエントリを登録します。
ユーザアカウントのエントリ登録
# ldapadd -x -D "cn=Manager,dc=nedia,dc=ne,dc=jp" -W -f user.ldif
adding new entry "uid=user01,ou=People,dc=nedia,dc=ne,dc=jp"
adding new entry "uid=user02,ou=People,dc=nedia,dc=ne,dc=jp"
以上の作業でLDAPへのユーザ登録作業は完了です。
LDAPに登録したユーザを利用可能にする
LDAPユーザでログインできるよう認証方法の設定を変更します。
はじめにLDAP認証させるためのモジュールがインストールされていなければそれをインストールする必要があります。
# yum install nscd nss-pam-ldapd
# cp -a /etc/nslcd.conf /etc/nslcd.conf_org
# vi /etc/nslcd.conf
base dc=example,dc=com
→base dc=dc=nedia,dc=ne,dc=jp
Linuxアカウントのパスワード、グループ情報の参照にLDAPディレクトリサービスを使用するようにネームサービススイッチの設定変更を行います。
設定ファイルは/etc/nsswitch.confで以下のように編集を行います。
# cp -a /etc/nsswitch.conf /etc/nsswitch.conf_org
# vi /etc/nsswitch.conf
passwd: files sss ldap
shadow: files sss ldap
group: files sss ldap
Linux上に登録されていないアカウントでLDAP上に登録されているアカウントは認証は可能ですがホームディレクトリが存在しない状態です。
ログインできなくはないですがWarningが出るので、これを回避するためログインすると自動的にホームディレクトリが作成されるよう設定を変更します。
# authconfig --enablemkhomedir --update
nslcd を起動中: [ OK ]
nscd を起動中: [ OK ]
この設定後、LDAPに登録されているアカウントでSSHログインなどをすると自動的にホームディレクトリが作成されます。
LDAPユーザにログインが出来るか確認します。
# su - user01
最終ログイン: 2015/09/04 (金) 16:57:28 JST日時 pts/0
$ pwd
/home/user01
最後に、idコマンドを使ってLDAPに登録したユーザのユーザIDやグループIDを確認してみます。
# id user01
uid=1001(user01) gid=1001(system01) groups=1001(system01)
# id user02
uid=1002(user02) gid=1002(system02) groups=1002(system02)
ここまで出来れば作成したユーザでFTP接続なども出来るようになっているはずです。
クライアントサーバの設定
LDAPサーバ側の設定は完了しましたので、最後にクライアントサーバ側の設定方法について説明します。本記事の冒頭でA、B、C、Dの各サーバと表現した方のサーバとなります。
OpenLDAP クライアントをインストールしす。
# yum -y install openldap-clients nss-pam-ldapd
Linuxアカウントのパスワード、グループ情報の参照にLDAPディレクトリサービスを使用するようにネームサービススイッチの設定変更を行います。
設定ファイルは/etc/nsswitch.confで以下のように編集を行います。
# cp -a /etc/nsswitch.conf /etc/nsswitch.conf_org
# vi /etc/nsswitch.conf
passwd: files sss ldap
shadow: files sss ldap
group: files sss ldap
LDAP有効化、LDAP認証有効化、LDAPサーバ設定、LDAPベースDN設定、ホームディレクトリ自動生成設定を行います。
# authconfig --enableldap --enableldapauth --ldapserver=192.168.0.100 --ldapbasedn="dc=nedia,dc=ne,dc=jp" --enablemkhomedir --update
※--ldapserver=192.168.0.100 には、LDAPサーバのIPアドレスもしくは、URL(例:--ldapserver="ldap://192.168.0.100/")を入れてください。
nslcd を起動中: [ OK ]
nscd を起動中: [ OK ]
LDAPに登録したユーザが利用できるか確認します。
# su - user01
$ pwd
/home/user01
最後に、idコマンドを使ってLDAPに登録したユーザのユーザIDやグループIDを確認してみます。
# id user01
uid=1001(user01) gid=1001(system01) groups=1001(system01)
# id user02
uid=1002(user02) gid=1002(system02) groups=1002(system02)
LDAPで行うユーザ管理の説明は以上となります。
いかがでしたでしょうか?
私が実際にLDAPサーバを構築してみてわかりにくいと感じた部分は、一番最初のサーバ管理者パスワードを設定するところと、スキーマの追加の部分です。逆に言うとこれさえできてしまえば他の部分は特に難しいと感じた場所はありませんでした。
ユーザ管理の一元管理は企業のセキュリティ事故を防ぐ意味でもとても重要です。
削除したと思っていたユーザアカウントが実は残っていて、外部から重要機密を持ち出させてしまった。
ということのないようにユーザ管理はLDAPで一元管理するのがオススメです。
それでは。