LDAPの利用(4/7)

4.LDAPによるsambaの認証

Windows NT/2000/XPマシンのユーザー認証の際に,sambaはsmbpasswdファイルを2回検索します。1回目はマシンアカウントの認証で,2回目はユーザーアカウントの認証です。そのため,非力なマシンで大量のユーザーの認証をしようとすると,取りこぼしが起きます。かといって,別のマシンにユーザー登録すると,その同期が大変です。
LDAPを使うことで,これらの欠点を解消することができます。
ここでは,既にsambaとLDAPはそれぞれ動いているものとし,sambaの認証をLDAPに移行するための変更手順を示します。

この二つのサービスは複雑なので,両方を同時にうまく動かすことはなかなか難しいことです。くれぐれもそれぞれが正常に動いている状況の下で,二つのサービスを統合することを考えてください。

(1)sambaサーバの設定

既に動いているsambaの設定変更は次の2点です。

1)/etc/samba/smb.confの変更

#まず,認証に(smbpasswdでなく)LDAPを使うという宣言をします(samba3.0*以上)。
passdb backbend = ldapsam:ldap://localhost
#次にLDAPの管理者を指定しますが,現在動いているLDAPの設定ファイル/etc/openldap/slapd.conf
#に書いてあるとおりを記してください。(下記は例です)

ldap admin dn = cn=smbadmin,ou=people,dc=ikkzz,dc=ed,dc=jp
#sambaでは,Linux用のパスワードとWindows用のパスワードの2種類を使っています。
#パスワードを変更すると,この二つが異なってしまい,ややこしくなるので,同じにしておきます。

ldap passwd sync = yes
#次は,LDAPのデータツリー上のどの枝を,認証に使うのかの指定です。
#余計なクォーテーションやスペースを入れないようにしてください。
ldap suffix = dc=ikkzz,dc=ed,dc=jp
#ユーザーが登録されている枝を,上記の枝からの相対アドレスで指定します。
#下のように記せば,絶対アドレスではou=people,dc=ikkzz,dc=ed,dc=jpを指定したことになります。

ldap user suffix = ou=people
#グループが登録されている枝を,上記ldap suffix = の枝からの相対アドレスで指定します。
#下のように記せば,絶対アドレスではou=groups,dc=ikkzz,dc=ed,dc=jpを指定したことになります。

ldap group suffix = ou=groups
#マシンが登録されている枝を,上記ldap suffix = の枝からの相対アドレスで指定します。
#下のように記せば,絶対アドレスではou=machines,dc=ikkzz,dc=ed,dc=jpを指定したことになります。

ldap machine suffix = ou=machines
#Windows NTに付属のユーザーマネージャー(Windows 9x用はNEXUS.EXE,NT用はSRVTOOLS.EXE)
#でユーザー管理ができるようにするには次の7行を付け加えてください。

add user script = /usr/sbin/smbldap-useradd.pl -m '%u'
add group script = /usr/sbin/smbldap-groupadd.pl '%g'
add machine script = /usr/sbin/smbldap-useradd.pl -w '%u'
delete user script = /usr/sbin/smbldap-userdel.pl -r '%u'
delete group script = /usr/sbin/smbldap-groupdel.pl '%g'
add user to group script = /usr/sbin/smbldap-groupmod.pl -m '%u' '%g'
delete user from group script = /usr/sbin/smbldap-groupmod.pl -x '%u' '%g'

2)secret.tdbの作成

secret.tdbは,sambaユーザーの追加/変更の権限を持つ人物(上のldap admin dn)のパスワードを格納しておくファイルです。

[root@ysava root]# /usr/bin/smbpasswd -w パスワード
settingstoredpasswordfor"cn=smbadmin,ou=people,dc=ikkzz,dc=ed,dc=jp"insecret.tdb

これで,sambaの設定は終りです。
次はLDAPの設定です。

(2)LDAPの設定変更

sambaとLDAPの連携がうまくいくようにLDAPの設定ファイル(/etc/openldap/slapd.conf)を変更します。

#sambaのために4行目が付け加わりました。絶対必要なのは最初の4行です。
#残りの2行はLinuxの認証をLDAPにさせるために必要です。

include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/samba.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/redhat/autofs.schema

#アクセス制御のための設定
#sambaのために二つの制御が真ん中に加わりました。上にあるものほど優先的に適用されます。
#この順序は変更できません。

access to attrs=userPassword
     by self write
     by * auth
access to attrs=lmPassword,ntPassword
     bydn="cn=smbadmin,ou=people,dc=ikkzz,dc=ed,dc=jp" write
     by*none
accesstodn.subtree="ou=people,dc=ikkzz,dc=ed,dc=jp""
     bydn="cn=smbadmin,ou=people,dc=ikkzz,dc=ed,dc=jp" write
     by*read
accesstodn.subtree="ou=group,dc=ikkzz,dc=ed,dc=jp"
     by * read

(3)perl関連

sambaは,Perlスクリプトを通してLDAPと連携しています。そこで最後にPerl関連の設定をします。

1)必要なファイルのダウンロードとインストール

  Fedora Core 2をすべてインストールしていると大抵のものはそろっているのですが,次の4つのファイルが不足していますので,DAG からダウンロードしてください。 

ダウンロード後,ファイルのあるディレクトリに移って,次のコマンドを入力してください。

[root@ysava root]# rpm -Uvh perl-*
[root@ysava root]# rpm -Uvh smbldap-tools*

2)smbldap_conf.pmの設定

/etc/samba/smbldap_conf.pmに適切な設定を記述します。

#設定が完了したSambaを起動させた状態で,netコマンドによってドメインSIDを取得します。
# net getlocalsid ドメイン名
#と,コマンドを打ち,返ってくる値を貼り付けます。

$SID='S-1-5-21-1234397898-2193333';
#LDAPサーバーのアドレス。同じマシンなら下記のままです。
$masterLDAP = "127.0.0.1";
$slaveLDAP = "127.0.0.1";
#LDAPのデータツリー上の認証に使う枝の指定
#smb.confのLDAP suffix ldap user suffix ldap group suffix ldap machine suffixと同じになります。

$suffix="dc=ikkzz,dc=ed,dc=jp";
$usersou = q(people);
$computersou = q(machines);
$groupsou = q(group);
$hash_encrypt= "MD5";
#次の二つはslapd.confのrootdnと同じものを指定します。
$binddn="cn=smbadmin,ou=people,dc=ikkzz,dc=ed,dc=jp";
$bindpasswd = 'パスワード';
#次の二つはLinuxのログインシェルとユーザーのホームディレクトリの場所を指定します。
$_userLoginShell = q(/bin/bash);
$_userHomePrefix = q(/home);
#次の三つは,Windowsから見たホームディレクトリとプロファイルを置く場所を指定します。
$_userSmbHome = q(\\\\SAMBAPDC\\homes);
$_userHomeDrive = q(X:);
$_userProfile = q(\\\\SAMBAPDC\\profiles\\ );

以上で,設定は終了です。サーバーを再起動して,上記の変更を有効にしてください。

前ページへ次ページへ