(注:記事は執筆時の情報に基づいており,現在では異なる場合があります)

表3●一般ユーザーがSambaパスワードを変更する方法
写真1●Windows NT/2000/XPにおいて,Ctrl+Alt+Deleteを押し下げると現れるパスワード変更メニューで変更
写真2●SWATから変更
(例)Linux/Sambaユーザーyamadaの追加
smbldap-useradd.pl -m -a yamada
(例)Linux/Sambaユーザーyamadaのパスワード設定
smbldap-passwd.pl yamada

 UNIX/Linux/Windowsが混在する環境では,LDAPを使った管理法が最も効率が良く,お勧めである。また,SambaでWindowsドメインを構築する(PDCとBDCを配置する)にも最適な方法である*2。ただ,現状では国内で販売されているディストリビューションで,LDAPに対応したSambaをパッケージとして配布・サポートしているのは,MIRACLE LINUXだけである。

(4)with-tdbsamコンパイル・オプション付きでモジュールを作成し,smb.confにencrypt password = YESとした場合に選択できるユーザー管理方法は次の通り。

●/etc/passwdファイルとTDBによるユーザー管理

●NIS(またはNIS+)とTDBによるユーザー管理

 このケースでは,(2)と同様に複数のコマンドを使ってユーザー管理を行う必要がある。Sambaのユーザー管理にはsmbpasswdコマンドではなく,pdbeditコマンドを使用しなければならない*3

(例)Linux/Sambaユーザーyamadaを追加し,パスワードを設定する
useradd yamada
passwd yamada
pdbedit -a -u yamada

 ユーザー管理に従来のsmbpasswdではなく,TDBを使うメリットは性能の向上にある。smbpasswdファイルは,ユーザー情報をテキスト・ファイルに保存するため,ユーザー数が数千,数万になるとユーザー・エントリの検索に時間がかかり,性能が大きく劣化してしまう。一方,TDBは索引を持ったデータベースなので,ユーザー数が増えても性能はあまり劣化しない。

 とはいえ,肝心のLinuxユーザーが/etc/passwdというテキスト・ファイルで管理されるため,Samba 2.2でTDBを利用するメリットはあまりない(このため,TDB機能を有効にするパッケージが配布されているLinuxディストリビューションはない)。

 Samba 3.0では,OSのユーザー登録をせず,TDBに登録するだけでSambaを利用できるようになる。TELNETやFTPでLinuxにログインせず,Windowsファイル・サーバーとしてだけ使う場合は,TDB単独の利用が有効であろう。

(5)with-nisplussam with-nisplus-homeコンパイル・オプション付きでモジュールを作成し,smb.confにencrypt password = YESとした場合は,ネームサービス・スイッチ(/etc/nsswitch.conf)とPAM(/etc/pam.d/system-auth)の設定により,以下のようなNIS+(NISPLUS)を使ったユーザー管理方法を選択できる*4

●NIS+をユーザー情報データベースとして使用(Sambaをドメイン・コントローラとして運用することも可能)

●nis homedirを指定したときに参照するautomountのmapデータベースとしてNIS+を使用

 このケースでは,NIS+の使用が前提となり,NISでは運用できない。また,encrypt password = Noとすると(1)でNISを使う場合と同様に,Windowsクライアントのレジストリ設定が必要になり,いろいろな問題が起きる。

 この機能は, smbpasswdファイルの代わりに, NIS+テーブルのsmbpasswd.org_dirを参照するように設定して利用する。NIS+の管理は容易ではないし,大規模向きではないので利用は推奨しないが,設定方法だけ簡単に紹介しておく。なお,用語解説や詳しい説明はしないので,NIS+に精通している方以外は使わない方がいいだろう。

(i)smbpasswd の移行

 NIS+テーブルを作成する権限のあるprincipalでSambaのソース・ファイルにある以下のスクリプトを実行する。

source/script/mknissmbpwdtbl.sh

 これにより,NIS+ドメインにsmbpasswdというテーブルが作成される。次に,以下のコマンドでsmbpasswdファイルをNIS+テーブルにロードする。

cat smbpasswd | source/script/mknissmbpasswd.sh

また, デフォルトでは, smbpasswd.org_dirはownerとsmbというNIS+グループからしかアクセスできないので, smb.groups_dirに, 必要なprincipalを加えておく。つまり,マシンのprincipal(unix.XXX@domain. 形式のもの)をnisgrpadmコマンドなどを用いてsmb.groups_dirのメンバーに加える。

(ii)smb.confの修正

 smb.confを次のように修正する。

encrypt passwords = yes
smb passwd file = smbpasswd.org_dir

 以上で,複数サーバーのUNIX/Linux/Windowsユーザー管理がNIS+に統合できる。繰り返しになるが,利用は推奨されない。

(6)with-krb5コンパイル・オプション付きでモジュール作成し,smb.confにencrypt password = Noとした場合は,ネームサービス・スイッチ(/etc/nsswitch.conf)とPAM(/etc/pam.d/system-auth)の設定により,Kerberos5を使ったユーザー管理方法を選択できる。

 一般にKerberos5によるユーザー認証機能は,従来のLANMAN認証やNTLM認証よりも安全性が高いと思われているが,Sambaでsecurity=userで利用するにはencrypt password = Noとする必要がある。このため,パスワードが暗号化されずに平文のままネットワーク上を流れ,またWindowsクライアントのレジストリを変更する必要もある。つまり,現状のSamba 2.2ではKerberos5を利用するメリットはない。

 しかし,Samba 3.0ではsecurity=ADSとしてencrypt password = YESで利用できるようになる(最近のSamba 2.2では,この機能はベータ・リリースである)。つまり,Samba 3.0ではWindows 2000または2003サーバーでKerberos5認証されたWindows 2000/XPクライアントが,Sambaを安全に利用できるようになる(Sambaをドメイン・コントローラとして利用するsecurity=userではまだ対応の予定はない)。

 以上でSambaが対応するユーザー管理方法を(現在は推奨されない方式も含めて)すべて紹介した。

ユーザーからのパスワード変更

 管理者ではなく,一般ユーザーが自分のSambaパスワードを変更するには,以下の方法がある。ただし,表3[拡大表示]に示したように,ユーザー管理方法によってはそれらが使える場合と,使えない場合があるので注意が必要である。

●Windows NT/2000/XPにおいて,Ctrl+Alt+Deleteを押し下げると現れるパスワード変更メニューで変更

 「ログオン先」には,Sambaのホスト名またはNetBIOS名を入力する(写真1[拡大表示])。ただし,Sambaでドメインコントローラを構築している場合はドメイン名を入力する必要があるので注意しよう。

●Windows 95/98/Meのコントロール・パネルで変更

 この方法は,SambaをPDCにしてドメイン・ログオンしている場合だけしか使えないので注意が必要である。

●smbpasswdコマンドを使用

 引数なしでsmbpasswdコマンドを使用できるのは,(2)でsmbpasswdが格納されているLinuxマシンにログインしている場合に限られる。それ以外では,

smbpasswd -r Sambaマシン名 ユーザー名

というように,明示的にSambaマシン名を指定する必要がある。

●SWAT(Samba Web管理ツール)から変更

 SWATには,smbpasswdをローカル(マシン名指定なし)で実行する機能と,リモート(マシン名指定あり)で実行する機能がある(写真2[拡大表示])。先の「smbpasswdコマンドを使用」の場合と同様に,(2)でsmbpasswdが格納されているLinuxマシンにログインしている場合はローカル,そうでなければリモートとなるので,適切に使い分ける必要がある。

 以上のようにすることで,一般ユーザーは自分の(現行パスワードを忘れていなければ)パスワードをいつでも変更できる。

(ミラクル・リナックス 小田切 耕司)


(次回に続く)