パンダのメモ帳

技術系のネタをゆるゆると

CentOS 5.4にsmbldap-toolsを導入する

OpenLDAP と Samba を導入したCentOS 5.4に smbldap-tools をインストールする。

1. 要件と仮定条件

OpenLDAPとSambaの導入については以下の記事を参照。

なお、要件および仮定条件については上記の2記事に準ずる。

2. smbldap-tools とは?

smbldap-tools はLDAP+Samba環境におけるユーザー管理ツール。LDAPにユーザーやグループを登録する際、通常はLDIFファイルを作り手動で行う必要があるが、smbldap-toolsを使うことでユーザー管理を簡単に行うことができる。
また、Sambaは認証に userPassword属性ではなく sambaLMPassword属性と sambaNTPassword属性の2つの属性を用いるが、smbldap-toolsを使用することでそれらを一括更新することができる。もちろん、使い方次第で別々のパスワードを設定することも可能。
Sambaが使用する各LDAPエントリを自動で登録するツールも用意されており、これを使わないと設定は非常に面倒なことになるので実質LDAP+Samba環境を構築する場合は必須のツールと言える。

3. インストール

例によってyumからインストールする。標準リポジトリでは提供されていないが、rpmforgeを利用できるようにしておくことでyumからインストールが可能。

[root@localhost ~]# yum -y install smbldap-tools

2009年12月15現在、yumでインストールした場合のバージョンは 0.9.5-1 だった。以降の手順の確認は本バージョンで行っており、以前・以降のバージョンでは異なる場合があるので注意してほしい。

4. 設定

smbldap-toolsには初期設定用の対話型スクリプトが用意されており、それを実行することで自動的に設定ファイルが更新される。

[root@localhost ~]# cd /usr/share/doc/smbldap-tools-0.9.5
[root@localhost smbldap-tools-0.9.5]# ./configure.pl

このとき更新される設定ファイルは

  • /etc/smbldap-tools/smbldap.conf
  • /etc/smbldap-tools/smbldap_bind.conf

の2つ。当然、手動で編集することも可能だ。
2つの設定ファイルの内、smbldap_bind.conf にはLDAPの管理用パスワードが平文で保存される。パーミッションを 600 に変更し、root 以外は読めないようにしておく。

[root@localhost ~]# chmod 600 /etc/smbldap-tools/smbldap_bind.conf

5. smbldap-populateの実行

Samba関連のLDAPエントリを追加するために smbldap-populate コマンドを実行する。途中、rootのためのパスワードを聞かれるので入力する……が今回の運用では何に使うのかよくわからない。適当なパスワードで構わないかも。

[root@localhost ~]# smbldap-populate
Populating LDAP directory for domain HOGE (S-1-5-21-4205727931-4131263253-1851132061)
(using builtin directory structure)

entry dc=example,dc=jp already exist. 
entry ou=People,dc=example,dc=jp already exist. 
entry ou=Group,dc=example,dc=jp already exist. 
adding new entry: ou=Machine,dc=example,dc=jp
adding new entry: ou=Idmap,dc=example,dc=jp
adding new entry: uid=root,ou=People,dc=example,dc=jp
adding new entry: uid=nobody,ou=People,dc=example,dc=jp
adding new entry: cn=Domain Admins,ou=Group,dc=example,dc=jp
adding new entry: cn=Domain Users,ou=Group,dc=example,dc=jp
adding new entry: cn=Domain Guests,ou=Group,dc=example,dc=jp
adding new entry: cn=Domain Computers,ou=Group,dc=example,dc=jp
adding new entry: cn=Administrators,ou=Group,dc=example,dc=jp
adding new entry: cn=Account Operators,ou=Group,dc=example,dc=jp
adding new entry: cn=Print Operators,ou=Group,dc=example,dc=jp
adding new entry: cn=Backup Operators,ou=Group,dc=example,dc=jp
adding new entry: cn=Replicators,ou=Group,dc=example,dc=jp
entry sambaDomainName=HOGE,dc=example,dc=jp already exist. Updating it...

Please provide a password for the domain root: 
Changing UNIX and samba passwords for root
New password: (root用パスワードを入力)
Retype new password: (root用パスワードを再入力)

6. ユーザーアカウントの追加

ここまで設定することで、smbldap-toolsによるユーザーアカウントの管理が可能になる。試しに sambatest ユーザーを追加してみる。

[root@localhost ~]# smbldap-groupadd -a sambatest
[root@localhost ~]# smbldap-useradd -a -g sambatest sambatest
[root@localhost ~]# smbldap-passwd sambatest
New password: (sambatestユーザー用のパスワードを入力)
Retype new password: (sambatestユーザー用のパスワードを再入力)

Windowsクライアントからマイネットワークを開き、作成したユーザーでアクセスできることを確認する。

7. ユーザーアカウントの削除

ユーザーの削除は以下のコマンドで可能。

[root@localhost ~]# smbldap-userdel sambatest
[root@localhost ~]# smbldap-groupdel sambatest

8.おまけ

今回紹介した以外にも、smbldap-tools にはいくつコマンドが用意されている。

[root@localhost ~]# ls /usr/sbin | grep smbldap-
smbldap-groupadd
smbldap-groupdel
smbldap-groupmod
smbldap-groupshow
smbldap-passwd
smbldap-populate
smbldap-useradd
smbldap-userdel
smbldap-userinfo
smbldap-userlist
smbldap-usermod
smbldap-usershow

それぞれ "man コマンド名" でマニュアルが参照できるので、興味がある人は読んでみるのもいいかもしれない。