![]() |
Using SambaRobert Eckstein, David Collier-Brown, Peter Kelly 共著第一版 1999 年 11 月 1-56592-449-5, 注文番号: 4495 416 ページ, 34.95 ドル |
6.6 ログオンスクリプト
Samba は Windows のログオンスクリプトを実行する機能を提供している。ログオンスクリプト(.BAT や .CMD)は、ユーザがWindowsドメインにログオンした時にクライアント側で実行されるものである。スクリプトはUNIX側に保存されているが、ネットワーク経由でクライアントに転送されてユーザのログオン時に実行されることに注意すること。このスクリプトは、動的にログオンしたユーザのネットワークの設定を行うのに非常に有用である。スクリプトは Windows 側で実行されるので、Windows でのネットワーク設定コマンドを用いる必要がある。
NET コマンドについての詳細情報が必要な場合は、O'Reillyのハンドブック: Windows NT in a Nutshell, Windows 95 in a Nutshell, Windows 98 in a Nutshellを推奨する。
Samba にログオンスクリプトを提供させるには、
logon
script
オプションを以下のように設定する:[global] domain logons = yes security = user workgroup = SIMPLE os level = 34 local master = yes preferred master = yes domain master = yes logon script = %U.bat [netlogon] comment = The domain logon service path = /export/samba/logon public = no writeable = no browsable = noこの例では、
%U
変数を用いていることに注意すること。これにより、ログオンしたユーザ毎に別のスクリプトを実行できる。一般的に、ドメインにログオンした時のユーザやドメインに応じて、利用するログオンスクリプトを変更する。これにより、個別のユーザやクライアントに応じた設定のカスタマイズが可能になる。各ログオンスクリプトは
[netlogon]
共有に配置する必要がある。例えば、[netlogon]
共有は /export/samba/logon で、logon script が jeff.batの場合、ファイルは /export/samba/logon/jeff.bat に配置する必要がある。ユーザがスタートアップスクリプトが設定されているドメインにログオンすると、ユーザにはスクリプトが実行であることを示す小さいダイアログが表示され、MS-DOS ボックス中にスクリプトが生成する出力が表示される。このスクリプトは Windows が読み込んで Windows 側で実行されるため、UNIX 形式の復帰文字ではなく、DOS 形式の復帰/改行コードを用いる必要がある点に気をつけること。そのため、スクリプトは DOS や Windows ベースのエディタを使って作成するとよいだろう。
以下に、現在時刻をSambaサーバに合わせ、ネットワークドライブ
h
とi
をサーバ上の共有にそれぞれ割り当てるログオンスクリプトの例を示す。# Reset the current time to that shown by the server. # We must have the "time server = yes" option in the # smb.conf for this to work. echo Setting Current Time... net time \\hydra /set /yes # Here we map network drives to shares on the Samba # server echo Mapping Network Drives to Samba Server Hydra... net use h: \\hydra\data net use i: \\hydra\network6.6.1 移動プロファイル
Windows 95 や NT では、個々のユーザが自分の profileを保持することができる。プロファイルには以下のような情報が含まれる: ユーザのディスクトップの外見、スタートメニューに表示されるアプリケーション、壁紙や、その他の項目。プロファイルがローカルなディスクに格納されている場合は、特定のマシン上でのユーザの環境を定義するものになるため、 ローカルプロファイルと呼ばれる。一方プロファイルがサーバ上に格納されている場合は、 ユーザはサーバに接続する各クライアントマシンで、同一のプロファイルをダウンロードすることが可能である。ユーザがマシン間を移動しても、同じプロファイルを利用することが可能なため、これは 移動プロファイルと呼ばれる。これは、デスク上のマシンからログオンしたり、またある時は外出中に携帯マシンからログオンしたりといったユーザがいる場合に特に便利である。 図 6.6 ではローカルプロファイルと移動プロファイルを図示している
図 6.6: ローカルプロファイルと移動プロファイル
Samba は domain logons を yes に設定した上で、
logon path
をユーザのホームディレクトリに設定し、logon home
をユーザのホームディレクトリ内のプロファイルを格納するディレクトリに設定することで、移動プロファイルをサポートできる(monyo訳注、logon pathとlogon home の記述が逆)。このオプションは、ユーザを表す変数を使って、以下の例のように設定されることが多い:[global] domain logons = yes security = user workgroup = SIMPLE os level = 34 local master = yes preferred master = yes domain master = yes logon home = \\%N\%U logon path = \\%N\%U\profile2.0.6 以前の Samba のバージョンでは、Win9X マシンがプロファイルを別の共有に格納することが可能になっていたが、そのためクライアントは
ユーザが初めてログオンすると、Windows クライアントは user.dat もしくは ntuser.dat というファイルを作成する。どちらが作成されるかはクライアントで稼働しているOSに依存する。次にクライアントはデスクトップ上を構成する情報である、スタートメニュー、ネットワークコンピュータや プログラムフォルダ内の各フォルダの内容などをアップロードする。ユーザがログオンすると、これらの情報がサーバからダウンロードされ、ユーザが ログオンしているクライアントマシン上で利用可能になる。ユーザがログオフすると、これらの情報は次にユーザからの接続があるまでの間、サーバに書き戻される。プロファイルフォルダとして設定されたディレクトリを見ると、以下のようになっているだろう:logon path
を設定することができず、ホームディレクトリをマウントするために、「net use /home」と入力することが必要であった。これは2.0.6で改修された。# ls -al total 321 drwxrwxr-x 9 root simple Jul 21 20:44 . drwxrwxr-x 4 root simple Jul 22 14:32 .. drwxrwx--- 3 fred develope Jul 12 07:15 Application Data drwxrwx--- 3 fred develope Jul 12 07:15 Start Menu drwxrwx--- 2 fred develope Jul 12 07:15 cookies drwxrwx--- 2 fred develope Jul 12 07:15 desktop drwxrwx--- 7 fred develope Jul 12 07:15 history drwxrwx--- 2 fred develope Jul 12 07:15 nethood drwxrwx--- 2 fred develope Jul 19 21:05 recent -rw------- 1 fred develope Jul 21 21:59 user.datuser.dat ファイルはバイナリの設定ファイルであり、Windows によって自動的に作成される。このファイルは Windows 上からプロファイルエディタによって編集することが可能であるが、but they can be somewhat tricky to get correct. Samba はこの機能を Windows NT 5.0ベータ版(monyo訳注:現Windows 2000)までのクライアントに対して提供しているが、比較的新しい機能である。
Samba ドキュメント中の docs/textdocs/DOMAIN.txt と docs/textdocs/PROFILES.txt に、ログオンスクリプトを用いる際のヒントや方法が記述されている。
6.6.2 固定プロファイル
ユーザに 固定プロファイルを利用させることも可能である。これは移動プロファイルの一種であるが、変更することができない。例えば固定プロファイルを用いている場合、ユーザが火曜日にスタートメニューにコマンドを追加したとしても水曜日にログオン下時点では、それはなくなっている。固定プロファイルは、単純に user.dat ファイルを user.man に名前を変更して、UNIX サーバ上で読み込み専用にすればよい。これには、通常管理者がユーザに常に利用してほしい設定を含めておく。管理者が固定的なユーザ設定を作成するときには、以下のようにして行う:
固定プロファイルは殆んど用いられない。一方移動プロファイルは Samba が提供する Windows の便利な機能の一つになっている。
6.6.3 ログオンスクリプトのオプション
表 6.10には、通常 Windowsドメインのログオンスクリプトと一緒に用いられるオプションを集めた。
表 6.10: ログオンスクリプト関連オプション オプション
パラメータ
機能
デフォルト
範囲
logon script
文字列 (DOS path)
DOS/NT バッチファイルの名前
なし
グローバル
logon path
文字列 (UNC のサーバおよび共有名)
ユーザの移動プロファイルの位置
\\%N\%U\profile
グローバル
logon drive
文字列 (ドライブ名)
ホームディレクトリのドライブ名を指定する(NTのみ)
Z
:グローバル
logon home
文字列 (UNC のサーバおよび共有名)
ドメインにログオンしたクライアントに提供するホームディレクトリの位置を設定する
\\%N\%U
グローバル
6.6.3.1 logon script
このオプションを設定することで、DOS形式の改行コード(復帰、改行コード)の.BAT や .CMD ファイルを、ユーザのドメインログオン後にクライアント上で実行することができる。ログオンスクリプトは
[netlogin]
という名前の共有に格納される必要がある(詳細は section Section 6.5.1 を参照のこと)。このオプションでは、しばしば%U
や%m
変数(ユーザ名やNetBIOS名)を使うことで、ユーザやマシン毎に個別のスクリプトを指定することが可能である。以下に例を示す:logon script = %U.bat上記は、
[netlogin]
共有にある、ユーザ名に基づいたスクリプトが実行される。接続しようとしているユーザがfred
であり、[netlogin]
共有が /export/samba/netlogin ディレクトリだった場合、スクリプトのパスは /export/samba/netlogin/fred.bat になる。スクリプトはクライアントにダウンロードされて Windows 上で実行されるため、UNIXの改行コードではなくDOS形式の改行コード文字が用いられている必要がある。6.6.3.2 logon path
このオプションは、移動プロファイルの位置を設定する。ユーザがログオンすると、移動プロファイルがサーバからクライアントにダウンロードされ、ログオンしたユーザに適用される。ユーザがログオフすると、プロファイルはサーバにアップロードされ、次回のユーザのログオン時まで格納される。
ユーザのプロファイルを格納する専用の共有を作成した方が一般的により安全である:
logon path = \\hydra\profile\%Uこのオプションに関する詳細は、この章の前半部にある section Section 6.6, Logon Scriptsを参照のこと。
6.6.3.3 logon drive
このオプションにより、NTクライアントに対して
logon
home
オプションで指定したホームディレクトリを割り当てるドライブ名を指定する。このオプションは Windows NTクライアントのみで動作する。以下に一例を示す:logon home = I:利用するドライブ文字は、クライアントマシン上の固定的なドライブ名と重複しないようにする必要がある。デフォルトは Z であり、これは A:, C:, D: 等とは非常に離れているので、無難な設定といえよう。
6.6.3.4 logon home
このオプションは、DOS の NET コマンドによって用いられるユーザのホームディレクトリの位置を指定する。ホームディレクトリを Samba サーバ上の共有に設定する例を以下に示す:
logon home = \\hydra\%U任意のディレクトリを指定することが可能ではあるが、
[homes]
サービスと連携して用いるのが便利である。ホームディレクトリは、以下のようにすることでログオンスクリプト中でマッピングできる:NET USE I: /HOMEWindows NT の「ユーザマネージャ」を使い、ユーザのプロパティにある「ログオン環境」を設定することで、ホームディレクトリを自動的に設定することが可能である。
6.6.4 その他の接続スクリプト
ユーザがSambaの共有への接続を完了した後で、Samba サーバ側で共有を利用させる上での事前設定を行うスクリプトを実行させることが可能である。Samba は共有への接続前、および接続後の両方でスクリプトを実行させることが可能である。このオプションは Windows ドメインを利用していない場合でも利用可能である。 表 6.11 にこの設定を行うオプションを示す。
表 6.11: 接続スクリプト関連オプション Option
パラメータ
機能
デフォルト
範囲
root preexec
文字列 (UNIX コマンド)
共有に接続する際に
root
権限で実行されるコマンドを設定するなし
共有
preexec (exec)
文字列 (UNIX コマンド)
共有に接続する際にユーザ権限で実行される UNIX のコマンドを設定する
なし
共有
postexec
文字列 (UNIX コマンド)
共有との接続を解除した際にユーザ権限で実行されるコマンドを設定する
なし
共有
root postexec
文字列 (UNIX コマンド)
共有との接続を解除した際に
root
権限で実行される UNIX コマンドを設定するなし
共有
6.6.4.1 root preexec
ログオンコマンドの最初のものは、
root
preexec
である。このオプションに指定したUNIXコマンドは、共有への接続が完了する前に root 権限で 実行される。このオプションはroot権限が必要な場合だけに用いること。一例をあげるとroot
preexec
はCD-ROMをマウントすることで、クライアントから利用可能にする用途に利用したり、必要に応じて特定のディレクトリを作成したりするのに利用できる。root
preexec
オプションが設定されないとデフォルトでは何も行われない。以下に、CD-ROMをマウントするコマンドを設定する例を示す:[homes] browseable = no writeable = yes root preexec = /etc/mount /dev/cdrom2このコマンドはrootで実行されることに注意すること。セキュリティを保つためには、users should never be able to modify the target of the
root
preexec
command.6.6.4.2 preexec
二つ目のログオン前に実行されるオプションは
preexec
オプションである。これはexec
と呼ばれることもある。これはSambaが%u
変数に格納されているユーザ権限で実行するごく普通の非特権コマンドである。一般的な使用方法の一例をあげると、以下のようなロギングの実施があげられる:[homes]preexec = echo "%u connected to %S from %m (%I)\" >>/tmp/.log
コマンドが標準出力へ出力した内容はユーザからは確認できず、破棄されることに注意すること。
preexec
スクリプトの仕様を検討している場合、Samba から実行させる前に、それが正しく動作することを確認しておくべきであろう。6.6.4.3 postexec
ユーザが共有との接続を切断した時に
postexec
で指定されたコマンドをSamba サーバ上でユーザ権限で実行して必要な後処理を行うことが可能である。このオプションは本質的にpreexec
オプションと同じである。 繰り返しになるが、コマンドが%u
変数に格納されているユーザの権限で実行されることと、標準出力に出力された内容は無視されることを忘れないこと。6.6.4.4 root postexec
postexec
オプションに続き、root
postexec
コマンドが指定されていれば実行される。このオプションに指定された UNIX コマンドは、共有から切断する前に rootで実行される。このオプションは、root権限が必要な処理を行いたいときに限り使用すること。6.6.5 NIS や NFS との連携
最後になるが、Samba は NIS や NIS+ と連携する機能も持っている。Samba が動作しているサーバが複数台存在する場合、SMB クライアントが接続するサーバは、実際にそのユーザのホームディレクトリを提供しているサーバであることが望ましいであろう。Samba サーバがファイルをネットワーク越しのNFS 経由で提供し、それをSMBでクライアントに提供するために再度ネットワーク越しの送信が必要となる形は決して望ましい形ではない(最大の難点は、遅くなることである。通常のSambaのパフォーマンスの30%程度になってしまう)。 そのため、Samba に対して、NIS が適切なサーバ名を知っていることと、どのNIS マップを利用すればよいかを伝えるための一連のオプションが存在する。
表 6.12 に、ユーザが設定する必要のあるオプションの一覧を示す。
表 6.12: NIS オプション オプション
パラメータ
機能
デフォルト
範囲
nis homedir
真偽値
yes
の場合、ユーザのホームディレクトリのパスを入手するのに /etc/passwdではなくNISを利用する
no
グローバル
homedir map
文字列 (NIS マップ名)
ユーザのホームディレクトリを検索するNISマップを設定する
なし
グローバル
6.6.5.1 nis homedir と homedir map
nis
homedir
とhomedir
map
オプションは、NFS、オートマウント、NIS、(Yellow Page)を利用して、UNIX のホームディレクトリが提供しているSambaサーバに適用可能なオプションである。
nis
homedir
オプションを設定すると、ユーザにホームディレクトリを提供するサーバがNISにより検索されるようになる。homedir
map
オプションは、ユーザのホームディレクトリを提供するサーバを検索するのにどのNISマップを利用すれば良いかをSambaに通知する。クライアントはSMBを使った接続を行うので、ホームディレクトリを提供するサーバはSambaサーバである必要があり、また検索を行う関係上NISがインストールされている必要がある。一例を挙げると、ユーザ
joe
が[joe]
という共有に接続しようとしており、nis
homedir
オプションがyes
の場合、Samba はhomedir
map
で指定されたファイルを参照して、joe
のホームディレクトリを検索する。発見すると、Samba はホームディレクトリを保持するサーバ名をクライアントに返却する。そこでクライアントは、 ホームディレクトリを保持する マシンに対して接続を行い、共有にアクセスすることができる。NIS の検索が可能な場合は、以下のように設定する:[globals] nis homedir = yes homedir map = amd.map
© 1999, O'Reilly & Associates, Inc.