17.5. Samba を PDC として使用する

Windows には、ユーザー管理の手間を軽減する「ドメイン」と呼ばれる機能が存在します(DNS のドメインとは別のものです)。Windows のドメインには、従来の Windows NT で構成される NT ドメインと Windows 2000 からの機能である Active Directory で構成する 2 つのドメインがあります。このガイドでは、Windows ドメインに関する詳細な解説には触れませんが、Samba は NT ドメインの PDC(プライマリドメインコントローラ)として動作させることが可能です。Samba 3.0 は、Windows 2000 Server/Windows 2003 Server で構築された Active Directory ドメインへ参加することはできますが、ドメインコントローラになることはできません。

PDC は、NT ドメイン内に 1 台だけ設置され、ユーザーの情報は PDC で一元管理されます。ドメインに参加した Windows クライアントのユーザー認証は、PDC により行われるようになります。したがって、Windows クライアントごとにユーザーを作成する必要がなくなります。また、Windows や Samba で複数のファイルサーバーを構築する場合、サーバーごとにユーザーの追加や削除を行わなければならず、ユーザーの管理タスクはかなり手間のかかる作業となります。そこで、PDC のメンバサーバーとして他のサーバーを登録し、メンバサーバーのユーザ認証を PDC で行うようにします。これにより、メンバサーバーとなったサーバーでは、ユーザー管理の手間を軽減することができます。つまり、PDC となる Samba サーバーでは、pdbedit コマンドを実行し、Samba ユーザーの登録とパスワードの設定が必要となりますが、メンバサーバー上で Samba ユーザーの登録やパスワードを設定する必要はありません。Samba ユーザーの認証は、PDC として動作している Samba サーバーで行われます。ただし、メンバサーバーの共有ディレクトリにアクセスする際には、Linux におけるアクセス権限の影響を受けますので、Linux システムのユーザーアカウントは作成する必要があることに注意しなければなりません。

ティップ

Samba 3.0 では、LDAP サーバーとの連携機能が強化されており、Samba と LDAP サーバーとを組み合わせることで、Linux と Samba のユーザー情報を LDAP サーバーで統合管理することができます。ユーザー数が 数百人以上の大規模な NT ドメインを構築されるのであれば、LDAP サーバーでの統合管理を検討する価値があります。ただし、LDAP サーバーの構築と Samba との連携は、それほど単純なものではなく、かなりのスキルと手間を必要とします。また、構築後の運用管理も決して簡単であるとは言えないのが現状です。ここでは、PDC の基本設定を解説するために、バックエンドデータベースに tdbsam を利用した PDC の設定について解説しています。

17.5.1. Samba サーバー側の設定

以下では、Samba を NT ドメインの PDC として動作させるための /etc/samba/smb.conf ファイルの設定例について解説します。

/etc/samba/smb.conf の編集

Samba を NT ドメインの PDC とするための[global]セクションは、以下のようになります。

[global]
        netbios name = MYNAME
        dos charset = CP932
        unix charset = UTF8
        display charset = UTF8
        workgroup = TURBODOC
        server string = Samba Server
        log file = /var/log/samba/smbd.log
        max log size = 50
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        passdb backend = tdbsam
        os level = 65
        preferred master = yes
        domain master = yes
        local master = yes
        admin users = administrator
        security = user
        domain logons = yes
        wins support = Yes
        logon path = \\%N\profiles\%u
        logon drive = H:
        logon home = \\homeserver\%u\winprofile
        logon script = logon.cmd
[netlogon]
        path = /var/lib/samba/netlogon
        read only = yes
        write list = ntadmin
[profiles]
        path = /var/lib/samba/profiles
        read only = no
        create mask = 0600
        directory mask = 0700

Samba を PDC とするために必要な設定は、基本的にはスタンドアローンなファイルサーバーの設定がベースとなりますが、いくつかのパラメータを追加する必要があります。os level、preferred master、domain master、security、encrypt passwords、domain logons の各パラメーターがドメイン管理に関するパラメータです。logon path、logon home、logon drive、logon script の各パラメータは、クライアントのログオン操作のためのパラメータです。NETLOGON 共有はログオンスクリプトを配置するための共有です。PROFILES 共有はユーザーディスクトッププロファイルを格納するための共有です。各ユーザーはここに書き込み可能なディレクトリを持ち、ディレクトリはすべてのユーザーから読み込み可能に設定する必要があります。

NETLOGON 共有用ディレクトリの作成

ログオンスクリプトを格納するための netlogon 用ディレクトリを作成します。上記の smb.conf で path=/var/lib/samba/netlogon と指定しているので、/var/lib/ の下に samba/netlogon を作ります。

# mkdir -p /var/lib/samba/netlogon

ログオンスクリプトの作成

ログオン時に実行させるプログラムを logon.bat に記述します。ネットワークドライブの自動割当や時間の自動補正などを行わせることができます。

設定がすべて終了したら、Samba サーバーを起動します。

# /etc/init.d/smb start

これで、この Samba サーバーは NT ドメインの PDC として動作します。

ドメイン管理者のアカウントの作成

Samba で構築した NT ドメインのドメイン管理者を登録します。そのためには、以下のように Linux 上でユーザーを作成し、その後 pdbedit コマンドでドメイン管理者のユーザー登録とパスワードの設定を行います。

# useradd administrator
# pdbedit -a -u administrator
new password:
retype new password:
Unix username:        administrator
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-1065826466-4106255778-3569669988-1000
Primary Group SID:    S-1-5-21-1065826466-4106255778-3569669988-513
Full Name:
Home Directory:       \\homeserver\%u\winprofile
HomeDir Drive:        H:
Logon Script:         logon.cmd
Profile Path:         \\myname\profiles\%u
Domain:               TURBODOC
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          never
Kickoff time:         never
Password last set:    月, 05 11月 2007 12:01:39 JST
Password can change:  月, 05 11月 2007 12:01:39 JST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
クライアントのマシンアカウントを登録

ドメインに登録するクライアントのマシンアカウントを作成します。ユーザーアカウントと同様に、useradd コマンドを実行した後に、pdbedit コマンドで以下のように登録します。マシンアカウントを登録する場合は -m オプションを指定します。以下では、クライアントのコンピュータ名を winclient としています。

注意

useradd で指定するコンピュータ名の最後には必ず $ を付ける必要があります。

# useradd winclient$
# pdbedit -a -m winclient
Unix username:        winclient$
NT username:
Account Flags:        [W          ]
User SID:             S-1-5-21-1065826466-4106255778-3569669988-1001
Primary Group SID:    S-1-5-21-1065826466-4106255778-3569669988-513
Full Name:
Home Directory:       \\homeserver\%u\winprofile
HomeDir Drive:        H:
Logon Script:         logon.cmd
Profile Path:         \\myname\profiles\%u
Domain:               TURBODOC
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          never
Kickoff time:         never
Password last set:    月, 05 11月 2007 12:03:03 JST
Password can change:  月, 05 11月 2007 12:03:03 JST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

ティップ

クライアントが Windows 95/98/Me の場合はこの作業は必要ありません。

上記コマンドを登録するクライアントの数だけ繰り返します。

Samba ユーザーの作成

実際にログインする Samba ユーザーとパスワードを設定します。Linux 上にアカウントが無い場合は、事前に useradd で作成しておく必要があります。以下では、ユーザー jiro を作成しています。

# useradd jiro
# passwd jiro
# pdbedit -a -u jiro

上記コマンドをユーザーの数だけ繰り返します。

グローバル・グループの設定

Windows のドメインコントローラは、ドメインに属するユーザーをグローバルグループと呼ばれるグループで管理することができます。Samba 2.2 のころは、Windows ドメインコントローラがデフォルトで持っている Domain Admins と Domain Guest の 2 つのグローバル・グループのみに対応していましたが、Samba 3.0 では、net groupmap コマンドにより自由にグローバル・グループを作成できるようになりました。例えば、Linux 上のグループ document を Windows のグローバル・グループ Document Team として対応させるには、以下のように実行します。

# net groupmap add NTgroup="Document Team" UNIXgroup="document"
No rid or sid specified, choosing a RID
Got RID 1002
Successfully added group Document Team to the mapping db as a domain group

また、Domain Admins、Domain Guest など既に存在する Windows のグローバル・グループと Linux 上のグループを対応させるには、net groupmap modify コマンドを使用します。例えば、Linux 上でドメイン管理者のグループを作成している場合は、以下のように実行します。この例では、domainadm という管理グループを作成しているものとしています。

# net groupmap modify NTgroup="Domain Admins" UNIXgroup="domainadm"

また、net groupmap list コマンドを実行すると、グローバルグループの設定を参照することができます。

# net groupmap list

17.5.2. Windows クライアントの設定

構築したドメインに Windows クライアントを参加させるためには、Windows 側の設定が必要です。以下では、Windows XP Professional を例にドメインへの参加手順を紹介します。

  1. デスクトップの "マイ コンピュータ" のアイコンを右クリックし、"プロパティ" を選択します。

  2. 「システムのプロパティ」画面が表示されますので "コンピュータ名" タブを表示し、[変更]ボタンをクリックします。

  3. 以下のダイアログが表示されます。"ドメイン" をチェックし、/etc/samba/smb.conf の workgroup パラメータで指定したドメイン名を入力後、[OK]ボタンをクリックします。

  4. 以下のダイアログが表示されます。/etc/sammba/smb.conf の admin users パラメータで指定したドメイン管理者のユーザー名とパスワードを入力し、[OK]をクリックします。

  5. 以下のダイアログが表示されれば、ドメインへの参加は正常に完了しています。[OK]ボタンをクリックします。

  6. 変更を有効にするには、Windows の再起動が必要です。[OK]をクリックして再起動します。