Chapter 37. SWAT: Samba Web 管理ツール

John H. Terpstra

Samba Team

April 21, 2003

Table of Contents

機能と利便性
ガイドラインと技術的なTips
SWATインストールの有効か
SWATを使用できるように有効化する
SSLを使うSWATのセキュア化
SWAT国際化サポートの有効化
概要と簡単な紹介
SWAT ホームページ
全体(Global)の設定
共有設定
プリンター設定
SWATウィザード
ステータスページ
表示(View)ページ
パスワード変更ページ

SWATの有用性に関連しては、数多くの様々な意見がある。完璧な設定ツールを作ろうとする 試みはとても大変な事なのにもかかわらず、個人的な興味の対象として存在している。 SWATはSambaをWebベースで設定するためのツールである。これは、Sambaを簡単に設定する ための手助けとなりえるウィザードであり、場面に応じて各smb.confパラメーターの ヘルプをWebベースで表示し、現在の接続状況をモニターリングする機能を提供し、ネットワーク 全体の、Microsoft Windowsネットワークパスワード管理ができる。

機能と利便性

SWATはSambaシステムの一部である。基本となるプログラム名はswatであり、 これはinetdのようなスーパーデーモンによって起動される。詳細は 説明の節を参照のこと。

SWATは特定のバージョンのSambaによってサポートされる、パラメーターを使うために、 Sambaコンポーネント全体を使う。Samba外部のツールとユーティリティとは異なり、 SWATは常時Sambaパラメーターが変更されることに追従している。SWATは各設定パラメーターに 対して、場面に応じて、マニュアルページのエントリから、直接 ヘルプを提供する。

ネットワーク管理者の何人かは、設定ファイル中にシステムの説明を書き込むことは良いアイデア だと思っている人もいるが、そういう人にとって、SWATは常にひどいツールである。SWATは、 何らかの中間的な形式でも、設定ファイルに格納しない。というよりは、パラメーターの設定のみを 書き込む。SWATがsmb.confファイルをディスクに書き込むときには、既定値の設定以外の パラメーターのみを書き込む。結果、パラメーターと同じように、すべてのコメントは保持されず、 smb.confファイル中から無くなってしまう。おまけに、パラメーターは内部での順番に 書き戻される。

Note

SWATを使う前には、 SWATは、書き込んだであろうすべてのコメントを削除した、完全に 最適化されたファイルで、smb.confファイルを完全に置き換え、ファイルには既定値の設定以外の 設定のみが書かれる。

ガイドラインと技術的なTips

この節では、どのようにSWATが動くかせるかという仕掛けの背景にある、秘密の闇を明らかにする 事と、どのようにセキュアに出来るかということと、どのように国際化のサポートを解決するか という事を説明する。

SWATインストールの有効か

SWAT操作のためにホストシステムを設定する試みの前にやるべきである、ごく最初のステップは、 それがインストールされているかを調べることである。これは、ある人にとっては取るに足らない ことに見えるかもしれないが、いくつかのLinuxディストリビューションでは、 ディストリビューションメディア上で、SWATを含む、インストール可能なバイナリパッケージを 提供しているにもかかわらず、SWATを既定値ではインストールしていない。

SWATがインストールされていることを確認したら、すべてのサポートしているテキストとWeb ファイルと同じように、インストールされているバイナリswatファイルを 有効化することが必要である。過去、多くのOSディストリビューションが、 swatバイナリ実行形式ファイルがインストールされているのにも かかわらず、サポートに必要なファイルを含めることに失敗している。

最後に、SWATが完全にインストールされたと思ったら、使用しているOSプラットフォームで 使われているinetd系スーパーデーモン(inetdかxinetd)用の制御ファイルで、SWATが 有効になっているかを調べてほしい。

SWATファイルの配置

SWATがインストールされたかを検証するため、最初に、システム上のswat バイナリファイルを捜す。それはおそらく以下のディレクトリ配下にあるだろう:

/usr/local/samba/bin 既定値のSambaでの位置
/usr/sbin ほとんどのLinuxシステムでの既定値の位置
/opt/samba/bin

実際の位置はOSベンダの選択か、Sambaをコンパイルしてインストールした管理者の決定によって 大きく変わる。

swatバイナリファイルを見つけるために使う方法にはいろいろある。 以下の方法を使うと便利である。

もしも、swatが現在のOSサーチパス中にあるならば、それを見つけるのは 簡単である。以下のように、swatが、どのようなコマンドラインオプションを 持っているかを調べてみればよい:

frodo:~ # swat -?
Usage: swat [OPTION...]
  -a, --disable-authentication         Disable authentication (demo mode)

Help options:
  -?, --help                           Show this help message
  --usage                              Display brief usage message

Common samba options:
  -d, --debuglevel=DEBUGLEVEL          Set debug level
  -s, --configfile=CONFIGFILE          Use alternative configuration file
  -l, --log-basename=LOGFILEBASE       Basename for log/debug files
  -V, --version                        Print version

SWATサポートファイルの配置

swatがサーチパス中に見つかったならば、ファイルがどこに 配置されているかを識別するのは簡単である。これを行う簡単な別解は以下の通り:

frodo:~ # whereis swat
swat: /usr/sbin/swat /usr/share/man/man8/swat.8.gz

もしも上記による調査で、swatバイナリを見つけるのに失敗したら、 他の方法が必要である。以下が使える:

frodo:/ # find / -name swat -print
/etc/xinetd.d/swat
/usr/sbin/swat
/usr/share/samba/swat
frodo:/ #

この一覧は、このサーバーにインストールされているinetd系スーパーデーモン xinetdの制御ファイルを表示している。SWATバイナリファイルの位置は /usr/sbin/swatであり、それがサポートしているファイルはディレクトリ /usr/share/samba/swat配下にあることを表示している。

次に、swatが使うサポートファイルがどこにあるかを調べる。これは 以下のやり方で行う:

frodo:/ # strings /usr/sbin/swat | grep "/swat"
/swat/
...
/usr/share/samba/swat
frodo:/ #

この一覧の中にある/usr/share/samba/swat/エントリは、サポートファイルの 位置である。このディレクトリ配下にサポートファイルが存在しているかを調べるべきである。 以下は一覧の例である:

jht@frodo:/> find /usr/share/samba/swat -print
/usr/share/samba/swat
/usr/share/samba/swat/help
/usr/share/samba/swat/lang
/usr/share/samba/swat/lang/ja
/usr/share/samba/swat/lang/ja/help
/usr/share/samba/swat/lang/ja/help/welcome.html
/usr/share/samba/swat/lang/ja/images
/usr/share/samba/swat/lang/ja/images/home.gif
...
/usr/share/samba/swat/lang/ja/include
/usr/share/samba/swat/lang/ja/include/header.nocss.html
...
/usr/share/samba/swat/lang/tr
/usr/share/samba/swat/lang/tr/help
/usr/share/samba/swat/lang/tr/help/welcome.html
/usr/share/samba/swat/lang/tr/images
/usr/share/samba/swat/lang/tr/images/home.gif
...
/usr/share/samba/swat/lang/tr/include
/usr/share/samba/swat/lang/tr/include/header.html
/usr/share/samba/swat/using_samba
...
/usr/share/samba/swat/images
/usr/share/samba/swat/images/home.gif
...
/usr/share/samba/swat/include
/usr/share/samba/swat/include/footer.html
/usr/share/samba/swat/include/header.html
jht@frodo:/>

もしも必要とされるファイルが内ならば、SWATを使う前に、それらを入手してインストールする 必要がある。

SWATを使用できるように有効化する

SWATはネットワークスーパーデーモン経由で動くようにインストールすべきである。 使用しているUNIX/Linuxシステムが持っているものに依存するので、 inetdxinetdベースのシステムのどちらかを使う。

ネットワークスーパーデーモンの機能と配置はOSの実装により変わる。制御ファイルは /etc/inetd.confかディレクトリ/etc/[x]inet[d].dか 同様の位置に置くことが可能である。

古い形式のファイルに対する制御エントリは以下の通り:

	# swat is the Samba Web Administration Tool
	swat stream tcp nowait.400 root /usr/sbin/swat swat

新しい形式でのxintd用制御ファイルは以下の通り:

# default: off
# description: SWAT is the Samba Web Admin Tool. Use swat \
#              to configure your Samba server. To use SWAT, \
#              connect to port 901 with your favorite web browser.
service swat
{
	port    = 901
	socket_type     = stream
	wait    = no
	only_from = localhost
	user    = root
	server  = /usr/sbin/swat
	log_on_failure  += USERID
	disable = no
}

上記の中で、disableの既定値の設定はyesである。 これは、SWATが無効になっていることを意味する。SWATを有効にするには、上記のように、 このパラメーターをnoに設定する。

上記の例は両方ともswatバイナリがディレクトリ /usr/sbinに配置されていることを仮定している。上記に補足すると、 SWATは他の制御情報と同じように、自身のヘルプファイルをそこからロードするディレクトリ アクセス点として使う。多くのLinuxシステムにおけるこのための既定値の位置は、 /usr/share/samba/swatである。Sambaが使う既定値の位置は、 /usr/local/samba/swatである。

SWATへアクセスするとログオンを要求される。もしも非rootユーザーでSWATにログオンすると、 パスワード変更機能へのアクセスと同じように、一定の設定範囲にのみアクセスが許可される。 非rootユーザーが見えるボタンは、HOMESTATUSVIEWPASSWORDである。この場合に変更 可能なページはPASSWORDだけである。

rootユーザーでSWATにログオンすると、完全な修正、更新権限を得られる。 表示されるものは、HOME, GLOBALS, SHARES, PRINTERS, WIZARD, STATUS, VIEWPASSWORDである。

SSLを使うSWATのセキュア化

多くの人が、Sambaをリモートから安全に管理することが出来るために、どのように SSLを使うSWATを設定するかについて問い合わせしている。以下はMarkus Kriegerの 好意による、そのやりかたである。

SWAT設定の変更点は以下のようになる:

  1. OpenSSLをインストールする。

  2. 証明書(ertificate)とプライベートキーを生成する。

    root# /usr/bin/openssl req -new -x509 -days 365 -nodes -config \
    	/usr/share/doc/packages/stunnel/stunnel.cnf \
    	-out /etc/stunnel/stunnel.pem -keyout /etc/stunnel/stunnel.pem
    
  3. [x]inetdからSWATエントリを削除する。

  4. stunnelを起動する。

    root# stunnel -p /etc/stunnel/stunnel.pem -d 901 \
    	 -l /usr/local/samba/bin/swat swat 
    

その後、単純に、URL https://myhost:901 を使ってSWATにアクセスし、証明書を受け付け、SSL接続を確立する。

SWAT国際化サポートの有効化

SWATは、使用しているWebブラウザーの言語設定に一致するように、そのメッセージを表示するよう 設定できる。これは、HTTPリクエストのAccept-LanguageヘッダーでSWATに通知される。

この機能を有効にするには以下のように行う:

  • 適切なmsgファイルを、Sambaのsource/po ディレクトリから、$LIBDIRにインストールする。

  • ブラウザーの言語設定を設定する。

msgファイルの名前はブラウザーによって送られる言語IDと同じである。 例えば、英語はen、日本語はja、 フランス語はfrである。

メッセージのいくつかが気に入らないか、使用しているロケール用のmsg ファイルがない場合、単にen.msgファイルを、 使用している言語の ID.msgファイル用のディレクトリにコピーし、各 msgstrに適切な文字列を埋める。例えば、it.msgを イタリア語のmsgファイルにするには、以下のようにする:

msgid "Set Default"
msgstr "Imposta Default"

以下同様である。もしも間違いを見つけたか、新しいmsgファイルを作成 したならば、連絡いただければ、次のSambaリリース中に入れることを考えます。 msgファイルはUTF-8でエンコードされるべきである。

もしも有効にした場合、この機能とdisplay charsetがブラウザーの 設定と一致していなかった場合、SWATは不正なメッセージを表示するかもしれないことに注意。 将来のSambaのバージョンでは、SWATは常時UTF-8でエンコードされたメッセージを表示する だろう。そうなれば、これをsmb.confファイルのパラメーターとして設定する必要はなくなる。

概要と簡単な紹介

SWATはSambaの設定に使え、Windowsネットワークの問題を解決するために便利な文書のように、 この本(ドキュメント)の内容のような、重要な参考資料への便利なリンクを得られる、 便利なツールである。

SWAT ホームページ

SWATタイトルページは最新のSamba文書を参照する機能を提供する。オライリーの Using Sambaという本と同様、Samba3-HOWTO(この文書)のように、 Sambaの各コンポーネントのマニュアルページはこのページからアクセス可能である。

Sambaの設定を検証したい管理者は、診断ツールのマニュアルページから有益な情報を得ても良い。 それらはSWATホームページからも入手可能である。診断ツールのうち、このページで言及されて いないが、特に便利なものは ethereal(訳注:今は wireshark)である。

Warning

SWATはデモモードで動かすように設定できる。これは、認証なしにSWATを 動かし、完全な管理機能が使えてしまうため推奨しない。このモードでは、root特権で通常の 操作をするようにsmb.confを変更できる。SWATでこの機能を使うためのオプションは、 -aフラグである。 これを動作中の環境で使ってはならない

全体(Global)の設定

グローバル(GLOBALS)ボタンは、smb.conf中のグローバルパラメーターの 設定が出来るページを表示する。パラメーターによって2レベルの画面がある:

  • 基本 共通設定オプションを表示する。

  • 詳細 より複雑な環境で必要な設定オプションを表示する。

基本編集機能から他に変更するには、詳細 ボタンをクリックする。ラジオボタンをクリックすることで行っても良い。次に、 変更ボタンをクリックする。

パラメーターをどこか変更した後は、他の場所に移る前に、変更 ボタンを押すようにすること。そうしないと変更結果は失われる。

Note

SWATは場面に応じたヘルプを提供する。各パラメーターが何であるかを調べるには、単に、 設定パラメーターの左にあるヘルプリンクをクリックする。

共有設定

現在設定されている共有の操作は、単に共有の選択共有の削除ボタンの間にあるプルダウンボタンをクリックし、 操作したい共有を選択する。設定を編集するには、 共有の選択ボタンをクリックする。共有を削除するには、 単に共有の削除ボタンをクリックする。

新しい共有を作るためには、共有の作成ボタンの隣に行き、 テキストフィールドに作成する共有の名前を入力し、次に 共有の作成ボタンをクリックする。

プリンター設定

現在設定されているプリンターの操作は、単にプリンターの選択プリンターの削除ボタンの間にあるプルダウンボタンをクリックし、 操作したいプリンターを選択する。設定を編集するには、 プリンター選択ボタンをクリックする。共有を削除するには、単に、 プリンターの削除ボタンをクリックする。

新しいプリンターを作るためには、プリンターの作成ボタンの隣に行き、 テキストフィールドに作成する共有の名前を入力し、次に プリンターの作成ボタンをクリックする。

SWATウィザード

SWATウィザードの目的は、Microsoft系をよく知っているネットワーク管理者が、最小の手間で Sambaを設定することである。

ウィザードページは、完全に最適化した形式でsmb.confファイルを再書き込みするツールである。 これは、Commitボタンを押したときにも起きる。2つの違いは、 Rewriteボタンは今まで行った変更を無視するのに対し、 Commitボタンは今まで行ったすべての変更を反映するということである。

Editボタンでは、動作するSambaサーバーを作成するために必要と思われる 最小限のオプションの編集(設定)ができる。

最後に、SambaサーバーがWINSサーバー、WINSクライアントとして参加、あるいはWINSサポートなし の、どれかタイプかに設定出来ることを決める、限定されたオプションが用意されている。 あるボタンをクリックすることで、ユーザーのホームディレクトリの表示(あるいは表示中止)を 選択できる。

ステータスページ

ステータスページは現的な目的で提供される。最初に、これはSambaデーモンの制御を行う。 Sambaサーバー環境下で作成できるデーモンは、smbd, nmbdwinbinddである。

デーモンは、個別、あるいは全体をまとめたグループで制御できる。さらに、自動的に 画面のリフレッシュを行うタイミングを設定しても良い。Microsoft Windowsクライアントが Sambaとやりとりをするように、新しいsmbdプロセスは継続して起動される。自動画面 リフレッシュ機能は、最小の効果で変更の状態を追従できる。

最後に、ステータスページはロックされたかもしれないファイルを解放するために、特定の smbdクライアント接続を終了する事に使うことも出来る。

表示(View)ページ

表示(View)ページは、最適化されたsmb.confを閲覧するためと、もしもマゾヒストな 場合、すべてのグローバル設定パラメーターとその値を見ることもできる。

パスワード変更ページ

パスワード変更ページは、ローカルマシン上のMicrosoft Windows ネットワークユーザーの、 作成、変更、無効化と再有効化ができる便利なツールである。ユーザーアカウントのローカル パスワードを変更するのにもこのツールを使える。

非rootユーザーでログオンした場合、新しい(二度打ちする)パスワードと同様古いパスワードも 入力しなければならない。rootでログオンした場合、新しいパスワード のみが必要である。

このツールのよくある使い方は、リモートのMicrosoft Windowsサーバー群に対してユーザーパスワードを 変更するということである。