OSS Fan ~OSSでLinuxサーバ構築~

作成日: 2012/04/24
更新日: 2014/09/25

OSSでLinuxサーバ構築

CentOS 5.8のLinuxユーザ・グループをLDAPで一元管理

トップページOSSでLinuxサーバ構築 > CentOS 5.8のLinuxユーザ・グループをLDAPで一元管理
このエントリーをはてなブックマークに追加

構成

サーバ構成

OSバージョン

CentOS release 5.8 x86_64

パッケージ一覧

libtool-ltdl-1.5.22-7.el5_4.x86_64.rpm ・・・openldap-serversが依存
openldap-servers-2.3.43-25.el5.x86_64.rpm ・・・OpenLDAPサーバ本体
openldap-clients-2.3.43-25.el5.x86_64.rpm ・・・ldapsearch等のコマンドを提供

クライアント構成

OSバージョン

CentOS release 5.8 x86_64

ソフトウェア一覧

openldap-clients-2.3.43-25.el5.x86_64.rpm ・・・ldapsearch等のコマンドを提供

サーバ構築

インストール

 OpenLDAPのCentOS 5.8へのインストールと初期設定に従ってインストールを行った状態で 以下の設定を行ってください。

設定

(1) ユーザアカウント登録用のオブジェクト作成

 まずはユーザアカウントを登録するためのオブジェクトを作成します。 アカウント登録のために作成するLDIF(LDAP Data Interchange Format)ファイルは /tmp/ldap_work ディレクトリに格納することにします。 viエディタで以下の通りファイルを新規に作成します。

# cd /tmp/
# mkdir ldap_work
# cd ldap_work/
# vi base.ldif
ファイル名:/tmp/ldap_work/base.ldif
dn: dc=ranonet,dc=net
objectClass: dcObject
objectClass: organization
dc: ranonet
o: ranonet

dn: cn=Manager,dc=ranonet,dc=net
objectClass: organizationalRole
cn: Manager

dn: ou=People,dc=ranonet,dc=net
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=ranonet,dc=net
objectClass: organizationalUnit
ou: Group

 作成したLDIFファイルを使用してオブジェクトを作成します。

# ldapadd -f base.ldif -x -D "cn=Manager,dc=ranonet,dc=net" -W
Enter LDAP Password:  ←パスワードを入力
adding new entry "dc=ranonet,dc=net"

adding new entry "cn=Manager,dc=ranonet,dc=net"

adding new entry "ou=People,dc=ranonet,dc=net"

adding new entry "ou=Group,dc=ranonet,dc=net"

(2) LDAP移行ツールの設定

 アカウント登録のLDIFファイルはゼロから作成しても良いのですが、 移行ツールを使用することでLinuxの登録情報から生成することができます。 始めはこの方が簡単なので移行ツールを利用します。 まずは移行ツールの設定を行います。

# cd /usr/share/openldap/migration/
# vi migrate_common.ph
ファイル名:/usr/share/openldap/migration/migrate_common.ph
※以下、該当箇所のみ変更※
$DEFAULT_MAIL_DOMAIN = "padl.com";
$DEFAULT_BASE = "dc=padl,dc=com";
   ↓変更
$DEFAULT_MAIL_DOMAIN = "ranonet.net";
$DEFAULT_BASE = "dc=ranonet,dc=net";

(3) Linuxユーザ・グループの作成

 LDAP移行ツールでLDIFファイルを生成するために、Linux上に移行対象となるグループとユーザを作成します。 ユーザにはパスワードも設定します。 まずはグループを作成します。作成するグループは admin と user とします。

# groupadd admin
# groupadd user
# tail /etc/group
sshd:x:74:
ecryptfs:x:101:
rpcuser:x:29:
nfsnobody:x:65534:
xfs:x:43:
haldaemon:x:68:
avahi-autoipd:x:102:
ldap:x:55:
admin:x:500: ←追加されたことを確認
user:x:501: ←追加されたことを確認

 続いてユーザを作成します。作成するユーザは user1(adminグループ所属) と user2(userグループ所属) とします。

# useradd -g admin user1
# useradd -g user user2
# tail /etc/passwd
smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
avahi-autoipd:x:100:102:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologin
ldap:x:55:55:LDAP User:/var/lib/ldap:/bin/false
user1:x:500:500::/home/user1:/bin/bash ←追加されたことを確認
user2:x:501:501::/home/user2:/bin/bash ←追加されたことを確認

 作成したユーザにパスワードを設定します。

# passwd user1
Changing password for user user1.
New UNIX password:  ←パスワードを入力
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:  ←パスワードを再入力
passwd: all authentication tokens updated successfully.

# passwd user2
Changing password for user user2.
New UNIX password:  ←パスワードを入力
BAD PASSWORD: it is WAY too short
Retype new UNIX password:  ←パスワードを再入力
passwd: all authentication tokens updated successfully.

(4) アカウント登録用LDIFファイルの作成

 追加したユーザとグループの設定ファイルから必要な行だけを切り出します。 これをLDAP移行ツールに入力してLDIFファイルを生成します。

# cd /tmp/ldap_work/
# vi group
ファイル名:/tmp/ldap_work/group
admin:x:500:
user:x:501:
# vi passwd
ファイル名:/tmp/ldap_work/passwd
user1:x:500:500::/home/user1:/bin/bash
user2:x:501:501::/home/user2:/bin/bash

 上記で作成したユーザとグループの定義ファイルをLDAP移行ツールに入力し、LDIFファイルを生成します。

# /usr/share/openldap/migration/migrate_group.pl group > group.ldif
# /usr/share/openldap/migration/migrate_passwd.pl passwd > passwd.ldif

 生成されたLDIFファイルの中身は以下の通りです。 移行ツールを使わずに、始めからこのファイルを作成しても良いです。

ファイル名:/tmp/ldap_work/group.ldif
dn: cn=admin,ou=Group,dc=ranonet,dc=net
objectClass: posixGroup
objectClass: top
cn: admin
userPassword: {crypt}x
gidNumber: 500

dn: cn=user,ou=Group,dc=ranonet,dc=net
objectClass: posixGroup
objectClass: top
cn: user
userPassword: {crypt}x
gidNumber: 501

ファイル名:/tmp/ldap_work/passwd.ldif
dn: uid=user1,ou=People,dc=ranonet,dc=net
uid: user1
cn: user1
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$1$XOLX4gC/$DhexWfiWqCehaZjYIErKH.
shadowLastChange: 15453
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 500
gidNumber: 500
homeDirectory: /home/user1

dn: uid=user2,ou=People,dc=ranonet,dc=net
uid: user2
cn: user2
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$1$TDVGIGO1$MxYs12.XodOPQ7o.B1Syt0
shadowLastChange: 15453
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 501
gidNumber: 501
homeDirectory: /home/user2

(5) Linuxユーザ・グループの削除

 必要なLDIFファイルが作成できたので、グループとユーザは削除します。

# userdel -r user1
# userdel -r user2

# groupdel admin
# groupdel user

(6) アカウントをLDAPへ登録

 生成したLDIFファイルを利用してLDAPにLinuxアカウントを登録します。

# ldapadd -f passwd.ldif -x -D "cn=Manager,dc=ranonet,dc=net" -W
Enter LDAP Password:  ←パスワードを入力
adding new entry "uid=user1,ou=People,dc=ranonet,dc=net"

adding new entry "uid=user2,ou=People,dc=ranonet,dc=net"

# ldapadd -f group.ldif -x -D "cn=Manager,dc=ranonet,dc=net" -W
Enter LDAP Password:  ←パスワードを入力
adding new entry "cn=admin,ou=Group,dc=ranonet,dc=net"

adding new entry "cn=user,ou=Group,dc=ranonet,dc=net"

設定ファイル

 /etc/group
 /etc/gshadow
 /etc/ldap.conf
 /etc/nsswitch.conf
 /etc/passwd
 /etc/shadow
 /tmp/ldap_work/base.ldif
 /tmp/ldap_work/group
 /tmp/ldap_work/group.ldif
 /tmp/ldap_work/passwd
 /tmp/ldap_work/passwd.ldif

クライアント設定

インストール

 LDAPを操作(検索、追加、削除など)するためのコマンドラインユーティリティ (クライアント)のパッケージ1つをインストールします。 DVDドライブにCentOS 5のDVD-ROMをセットし、以下のコマンドを実行します。

# mount /dev/cdrom /media/cdrom
# cd /media/cdrom/CentOS/
# rpm -ihv openldap-clients-2.3.43-25.el5.x86_64.rpm
Preparing...                ########################################### [100%]
   1:openldap-clients       ########################################### [100%]
# cd /
# umount /media/cdrom

設定

(1) LDAPクライアントの設定

 ログインする際にLinuxユーザとグループに関する情報は /etc/passwd と /etc/group だけでなく LDAPサーバへも問い合わせるように変更します。 ローカルのpasswdファイルとgroupファイルを優先し、そこに記述されていない情報をLDAPサーバに 確認するようにします。設定には認証設定ツールが提供されているので、これを利用することで LDAPやNSSなど必要な設定を一通り書き換えてくれます。

# authconfig-tui

lqqqqqqqqqqqqqqqqu Authentication Configuration tqqqqqqqqqqqqqqqqqk x x x User Information Authentication x x [ ] Cache Information [*] Use MD5 Passwords x x [ ] Use Hesiod [*] Use Shadow Passwords x x [*] Use LDAP [*] Use LDAP Authentication x x [ ] Use NIS [ ] Use Kerberos x x [ ] Use Winbind [ ] Use SMB Authentication x x [ ] Use Winbind Authentication x x [ ] Local authorization is sufficient x x x x lqqqqqqqqk lqqqqqqk x x x Cancel x x Next x x x mqqqqqqqqj mqqqqqqj x x x x x mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
lqqqqqqqqqqqqqqqqqu LDAP Settings tqqqqqqqqqqqqqqqqqk x x x [ ] Use TLS x x Server: ldap://192.168.0.10/____________________ x x Base DN: dc=ranonet,dc=net_______________________ x x x x lqqqqqqk lqqqqk x x x Back x x Ok x x x mqqqqqqj mqqqqj x x x x x mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

(2) ユーザのホームディレクトリの作成

 LDAPに登録されている情報に基づいてLinuxへログインしようとすると、 ログイン先の/homeディレクトリに該当ユーザのホームディレクトリが 存在しないという警告が出力されてしまいます。 確かにLDAPに登録した情報にはホームディレクトリに関する情報がありますが、 LDAPを参照するクライアントPCにはホームディレクトリを作成していません。 ログイン自体はできるのですが、何かと不便ですので、ログイン時に自動で ホームディレクトリを作成するように設定します。 viエディタでPAMの設定ファイルを編集します。

# cd /etc/pam.d/
# vi system-auth-ac
ファイル名:/etc/pam.d/system-auth-ac
※ファイルの末尾に追記※
(前略)
session     required      pam_unix.so
session     optional      pam_ldap.so
session     optional      pam_mkhomedir.so skel=/etc/skel umask=022 ←追記

動作テスト

 『クライアント設定』で設定したLinuxに対してTera Termでログインします。 その際にLDAPサーバに登録した user1 もしくは user2 を指定してログインします。 ログインできれば成功です。

プロフィール

らのっち

損害保険会社のIT企画部に勤務するSEです。OSSを勉強中です。

<所属>
日本PostgreSQLユーザ会とくしまOSS普及協議会

■■■ 当サイトは Internet Explorer 11 と Mozilla Firefox 43 で動作確認済みです。 ■■■