SWAT の構成

Web ベースのインターフェースを介して Samba を管理する

SWAT (Samba Web Administration Tool) は、Web ベースの Samba 管理ツールです。このツールを使用すると、任意のコンピューターから Web ブラウザーを使用して GUI による画面で Samba の設定をすることができます。SWAT はそれ自体がサーバーであるため、すべてのサーバーと同じく最低限の構成が必要です。この記事を読んで、SWAT をインストールして構成する方法、そして SWAT を使用して Samba を管理する方法を学んでください。

Roderick W. Smith, Consultant and author

Roderick Smith author photoRoderick W. Smith はコンサルタントであり、『The Definitive Guide to Samba 3』、『Linux in a Windows World』、『Linux Professional Institute Certification Study Guide』など、UNIX や Linux に関する数々の著作もあります。彼は現在、ロードアイランドのウーンソケットに住んでいます。



2011年 10月 28日

この連載について

この連載は Linux システム管理タスクの学習に役立つだけでなく、LPIC-3 (Linux Professional Institute Certification レベル 3) 試験に備えるための教材にもなります。

連載の各記事についての説明とリンクについては、developerWorks の LPIC-3 ロードマップを参照してください。現在進行中のこのロードマップは、LPIC-3 試験の最新の目標 (2010年 11月) を反映しています。完成した記事はその都度ロードマップに追加されていきます。

概要

この記事では、以下の概念について学びます。

  • SWAT (Samba Web Administration Tool) の機能概要
  • SWAT のインストールおよび設定方法
  • SWAT を使用して Samba を構成する方法

この記事は、LPIC-3 Specialty「302 Mixed Environment Exam」試験の主題 312 の目標 312.5 の試験対策となります。この目標の重要度は 4 です。


前提条件

選択的な LPI-302 試験について

LPIC (Linux Professional Institute Certification) には、さまざまなレベルがあり、レベルが上がるにつれ、より深い知識と経験が必要になってくるという点で、他の多くの認定と似ています。LPI-302 試験は、LPIC レベル階層のレベル 3 に位置する選択的な Specialty 認定試験であり、Linux システム管理に関する高度な知識が求められます。

LPIC レベル 3 (LPIC-3) 認定を取得するには、2 つのレベル 1 試験 (101 と 102)、2 つのレベル 2 試験 (201 と 202)、そして LPIC-3 Core Exam (301) に合格しなければなりません。これらの試験に合格した後、LPI-302 などの選択的な Specialty 認定試験を受けることができます。

この記事では、読者が Linux コマンドライン関数の実用的な知識を持っていること、そして Samba 構成の基本を理解していることを前提とします。また、smb.conf 構成ファイルの全体的な構成を十分に理解していること、System V (SysV) 起動スクリプトとスーパー・サーバーの用途を含め、一般的なサーバーがどのようにして動作するかについても理解していることが必要です。


SWAT のインストールと実行

Samba バージョン 3.x では、SWAT は 2 つの主要な Samba サーバーである smbdnmbd とは別個のサーバーとなっています。そのため、主な Samba サーバーとは独立して動作するように SWAT を構成する必要があります。Samba をどのようにインストールしたかによっては、SWAT を別途インストールしなければならないこともあります。セキュリティーを強化するためには、SWAT が SSL (Secure Sockets Layer) 暗号化を使って動作するように構成してください。

注: 現在開発中の Samba 4 では、大幅なアーキテクチャーの変更が行われています。それには、SWAT に対する大幅な変更も含まれます。この記事では、Samba 3.x (現在、本番環境に推奨されているバージョン) での SWAT について説明します。

皆さん独自のフィードを作成してください

この連載に新しい記事が追加された際、あるいは内容が更新された際に通知を受けられるように、RSS、Atom、または HTML によるカスタム・フィードを作成することができます。それには、developerWorks RSS フィードにアクセスしてください。対象のゾーンとしては「Linux」を選択し、情報の種類としては「記事」を選択して、キーワードには「Linux Professional Institute」と入力します。そして最後にフィードの種類を選択します。

SWAT をインストールする

ソース・コードから Samba をビルドする場合 (目標 311.1 で説明)、SWAT はデフォルトの設定でビルドされて他の Samba コンポーネントと一緒にインストールされます。configure コマンドに --disable-swat オプションを指定すると、SWAT のコンパイルは行われません。デフォルトの設定に頼るのではなく、SWAT を明示的に使用可能にしたい場合には、configure--enable-swat オプションを指定します。

お使いのディストリビューションの保守を行っているところから提供されるバイナリー・パッケージを使って Samba をインストールする場合は、パッケージを調べて SWAT のインストール方法を確認してください。多くのディストリビューションでは、SWAT サーバーを含めた swat または samba-swat という名前のパッケージを提供しています。このパッケージは、基本 Samba パッケージとは別にインストールしなければなりませんが、自動的にインストールされる場合もあります。パッケージング・ツールを使用して、システム上にインストールされているパッケージを確認してください。

単独の SWAT パッケージが見つからないとしたら、別の Samba パッケージの一部としてインストールされている可能性もあります。SWAT バイナリーの名前は、当然のことながら swat です。したがって、この名前のプログラム・ファイルを検索すれば、SWAT がコンピューター上で使用できるかどうかを確かめることができます。Gentoo Linux を使用している場合、SWAT をビルドする samba パッケージを指定するときに、USE フラグに swat を設定しなければならないことに注意してください。

SWAT のインストールが完了すれば、SWAT の実行に移れます。SWAT は xinetd または inetd などのスーパー・サーバーを介して実行されるように設計されています。これらのスーパー・サーバーの構成はそれぞれに大きく異なるため、スーパー・サーバーごとに実行方法を説明します。

xinetd を介して SWAT を実行する

最近のほとんどの Linux ディストリビューションでは、xinetd をスーパー・サーバーとして使用します。お使いのコンピューターがどのスーパー・サーバーを使用しているか確信を持てない場合は、ps を使用して「inetd」というストリングを検索してみてください。

$ ps ax | grep inetd
17996 ?        Ss     0:00 /usr/sbin/xinetd -pidfile /var/run/xinetd.pid -stayalive -reuse

上記の例では、xinetd が実行されていることがわかります。ps の出力に inetd という名前のプロセスが示されている場合には、次のセクション「inetd を介して SWAT を実行する」の説明に従ってください。実行中のスーパー・ユーザー・プロセスが 1 つもないとしたら、xinetd または inetd をインストールしなければならない可能性があります。

xinetd サーバーが使用する構成ファイルは、/etc/xinetd.conf です。ほとんどのインストール済み環境では、xinetd サーバーの構成ファイルにはグローバル設定が格納され、その内容は /etc/xinetd.d ディレクトリー内にあるサーバー固有のファイルに依存します。SWAT の構成ファイルはおそらく /etc/xinetd.d/swat という名前で、その内容はリスト 1 のようになっているはずです。

リスト 1. SWAT 構成ファイルの例
service swat
{
        port            = 901
        socket_type     = stream
        protocol        = tcp
        wait            = no
        only_from       = localhost
        user            = root
        server          = /usr/sbin/swat
        log_on_failure += USERID
        disable         = yes
}

皆さんがお使いのデフォルトの SWAT 構成ファイルは、上記の内容と一部の詳細に違いがあるかもしれませんが、重要なポイントは同じです。システムに SWAT の構成ファイルがないとしたら、ファイルを作成するか、または SWAT サービスを定義するエントリーを /etc/xinetd.conf に追加してください。ほとんどのオプションにはデフォルト値 (お使いのディストリビューションで提供されたファイルで設定されている値、もしくは上記の例に記載したファイルで設定されている値) をそのまま使用しますが、以下のエントリーについては変更する必要があるかもしれません。

  • only_from の行は、アクセス制限を定義します。上記の例で xinetd がアクセスを許可するのは、SWAT が実行されているコンピューターに対してのみです。これは有用なセキュリティー対策ですが、Samba サーバーを別のコンピューターや複数のコンピューターから管理しなければならない場合には、他のアドレスを指定しても構いません。使用できるアドレスの種類はいくつかあります。詳細については、xinetd.conf の man ページを参照してください。
  • server の行は、SWAT バイナリーの完全なパスを指定します。指定するパスに swat バイナリーが存在することを確認してください。
  • disable = yes の行は、xinetd に SWAT を起動しないように指示します。SWAT を使用するには、この行が disable = no となるように変更する必要があります。

この最後の点は非常に重要です。多くのディストリビューションに付属の /etc/xinetd.d/swat 構成ファイルでは、セキュリティー対策としてデフォルトで SWAT が使用できないように設定されています。/etc/xinetd.conf で、以下の行によってサーバーを無効にすることもできます。

disabled = swat

このような行に swat が指定されている場合、これを削除しなければサーバーを起動することができません。

/etc/xinetd.d/swat で必要な変更を行った後は、xinetd に構成ファイルをリロードさせる必要があります。ほとんどのディストリビューションでは、xinetd の SysV 起動スクリプトに reload オプションを渡せば、xinetd に構成ファイルをリロードさせることができます。

# /etc/init.d/xinetd reload

以上の作業が完了すると、SWAT を使用できるようになります。ただし、SSL セキュリティーを有効にする場合は、使い始める前にセクション「SSL 暗号化を有効にする」を読んでください。

inetd を介して SWAT を実行する

inetd を使用している場合、構成プロセスは xinetd の場合と似ていますが、いくつかの重要な詳細に違いがあります。ご想像のとおり、inetd の構成ファイルは /etc/inetd.conf という名前です。inetd の最近のバージョンでは、xinetd と同じようにサーバーごとに構成ファイルを分けられるようになっているため、/etc/inetd.d ディレクトリーには複数の個別の構成ファイルが保管されていることがあります。

単独の /etc/inetd.conf ファイルを使用するか、/etc/inetd.d/samba 構成ファイルを使用するかに関わらず、Samba のエントリーは以下のように 1 行で構成されます。

swat  stream  tcp  nowait  root  /usr/sbin/tcpd  /usr/sbin/swat

この行に含まれる情報は、xinetd エントリーとほとんど同じです。ポート番号を判断するには、/etc/services 内で swap という名前が行の先頭にないかどうかを調べます。この例での /usr/sbin/tcpd エントリーには、xinetd の構成との共通点はありません。このエントリーは、クライアントがサーバーに接触しようとしたときに inetd が実行するプログラムを指定するためのものだからです。上記の例では、inetd は (/usr/sbin/tcpd というプログラム・ファイル名を使用して) TCP Wrapper を起動します。すると、TCP Wrapper は独自のセキュリティー・チェックを行って SWAT を起動します。つまり、行の最後のエントリー (/usr/sbin/swat) に指定されているプログラムです。

/etc/inetd.conf ファイルには、先頭のハッシュ・マーク (#) でコメント・アウトされた SWAT のエントリーが含まれる場合があります。その場合、SWAT を起動するには、このエントリーのコメントを外す必要があります。コメントを外し、必要に応じてエントリーを変更したら、inetd に構成ファイルをリロードするように指示します。それには、前に説明した xinetd 構成をリロードする方法と同じ方法を使用することができます。

SSL 暗号化を有効にする

前述のとおり、標準の SWAT 構成では暗号化をサポートしていません。前に示した xinetd 構成のように、アクセスをローカル・ホストに制限している場合、あるいは TCP Wrapper を使用して同様の制限を実装する場合には、暗号化がサポートされていなくても問題はありません。しかし、リモート・アクセス用に SWAT を使用する場合、暗号化を行わずに SWAT を実行すると、root パスワードが暗号化されずにネットワーク上を流れることになります。特に、Samba サーバーと同じサブネット上のコンピューターからではなく、主にインターネット上のコンピューターから Samba を構成するために SWAT を使用する必要があるとしたら、このようなリスクは許容できません。

セキュリティーを強化するための手段としては、SWAT 構成に SSL 暗号化を追加するという手段を採ることができます。そのためには、追加ソフトウェアをインストールして構成を変更する必要があります。追加で必要となるソフトウェアは、OpenSSL および stunnel です。大半のディストリビューションには、この両方のパッケージがパッケージ・データベースに用意されているので、簡単にインストールすることができます。

注: おそらく、最初は SSL 暗号化を使用せずに SWAT を構成してテストするのが最善の方法です。その場合、サーバーがその最も単純な構成では、期待通りに動作することを確認できます。問題が発生しても、SSL 構成の問題ではないことがわかっている上で、問題をデバッグすることができます。すべてが問題なく動作するようになったら、暗号化を使用するようにセットアップを変更してください。

OpenSSL および stunnel プログラムのインストールが完了したら、以下の手順に従います。

  1. 必要に応じて、stunnel のユーザーとグループを作成します。

    このステップは、stunnel パッケージのインストール時に自動的に行われている場合があるので、実行する必要がないこともあります。

  2. root として以下のコマンドを (1 行で) 入力して、SSL 証明書と秘密鍵を生成します。
    # openssl req -new -x509 -days 365 -nodes -out 
       /etc/stunnel/stunnel.pem -keyout /etc/stunnel/stunnel.pem

    上記のコマンドを実行すると、さまざまな情報 (ホスト名や E メール・アドレスなど) を入力するように求められます。このコマンドが作成する証明書の有効期間は 365 日間です。したがって、1 年後にこのステップを繰り返さなければならないことに注意してください。

  3. /etc/stunnel/stunnel.pem ファイルに設定された所有権を変更して、ステップ 1 で作成した stunnel ユーザーとグループが所有するようにします。
  4. /etc/stunnel/stunnel.conf ファイルを作成または変更します。

    リスト 2 に、構成ファイルの一例を記載します。システムにこのような構成ファイルがすでに含まれている場合には、ほとんどのオプションをそのまま使用しますが、このファイルには必ず、リスト 2 の終わりに示されている [swat] 以降の 3 行を含めてください。これらの行は、stunnel に SWAT 接続の処理方法を指示します。具体的には、stunnel はポート 901 でリッスンし、暗号解除したトラフィックをポート 902 に渡します。また、certkey の行が両方とも、前に生成した証明書ファイルを指していることも確実にしてください。

    リスト 2. stunnel ユーティリティーには固有の構成ファイルが必要です
    chroot  = /var/lib/stunnel/
    pid     = /stunnel.pid
    setuid  = stunnel
    setgid  = stunnel
     
    debug   = 7
    output  = /var/log/messages
     
    client  = no
    cert    = /etc/stunnel/stunnel.pem
    key     = /etc/stunnel/stunnel.pem
    
    # Accept SSL connections on port 901 and funnel it to
    # port 902 for swat. 
    [swat]
    accept   = 901
    connect  = 902
  5. xinetd または inetd 構成ファイルに新規 SWAT エントリーを作成します。

    この構成は、ポート 902 でリッスンすること、そして名前には swat ではなく、swat-stunnel を使用することを除けば、通常の暗号化されていない構成と同じです。また、接続を受け入れる場所は、ローカル・ホスト・インターフェースに制限する必要があります。

  6. xinetd または inetd に設定されている元の SWAT 構成を無効にします。
  7. /etc/services を以下のように編集します。
    1. swat エントリーを複製します。
    2. 複製したエントリーの名前を swat-stunnel に変更します。
    3. ポート番号を 902 に変更します。
  8. ディストリビューションによっては、/etc/default/stunnel4 を編集しなければ stunnel を起動できない場合もあります。その場合には、ENABLED の行を「0」から「1」に変更します。
  9. スーパー・サーバーを再起動します。
  10. stunnel を起動します。

    通常は root として「/etc/initd.d/stunnel start」と入力することで、その都度 stunnel を起動することはできますが、恒久的に stunnel を実行するためには SysV 構成の調整が必要になります。

以上の変更が完了すると、Web ブラウザーでプロトコルとして http:// ではなく https:// を指定して、暗号化された接続で SWAT にアクセスできるようになります。初めて接続するときには、信頼できない証明書であるという警告をブラウザーが出すはずですが、これは、証明書を自分自身で生成したためです。この証明書は信頼できるものとして許容してください。


SWAT の使用

SWAT の構成は完了したので、SWAT は使用できる状態になっています。SWAT にアクセスするには、任意の Web ブラウザーを使用することができます。SWAT にアクセスしたら、SWAT を使って Samba サーバーの管理を始めることができます。

SWAT にアクセスする

Samba サーバー・コンピューターでお好きな Web ブラウザーを使用して、URL (Uniform Resource Locator) として「http://localhost:901」と入力します。あるいは、他のコンピューターがアクセスできるように SWAT を構成してある場合には、サーバーにアクセス可能なコンピューターで、URL の localhost の部分をホスト名に置き換えて入力します。SSL 暗号化を構成してある場合、URL は http:// ではなく、https:// で開始してください。SWAT がローカル・ホスト以外のコンピューターからのログインを許容するように構成されているとしたら、Linux、Mac OS X、Windows など、あらゆるオペレーティング・システムの Web ブラウザーを使用することができます。これには、モバイル・フォンのブラウザーも含まれます。

サーバーに初めてアクセスすると、Web ブラウザーがユーザー名とパスワードの入力を求めるプロンプトを出します。ユーザー名には root と入力し、パスワードとして root のパスワードを入力すると、SWAT のメイン・ページが表示されます (図 1 を参照)。

図 1. SWAT の構成アクションを選択できる SWAT のメイン・ページ
SWAT コンソールのスクリーン・ショット。各セクションを操作するための構成ボタン (GLOBALS、SHARES、PRINTERS など) が表示されています。

Samba ロゴのすぐ下に並んだボタンを使って、特定の Samba 機能 ([global] セクション、ファイル共有、プリンター共有など) を構成することができます。SWAT による Samba 構成は、smb.conf ファイルを使った Samba 構成に慣れていれば、大抵は一目瞭然です。

SWAT ホーム・ページをスクロールダウンすると、Samba ドキュメントへのリンクが見つかります。このドキュメントは、さまざまな Samba デーモンの man ページ、構成ファイル、ユーティリティーなどで構成されています。

SWAT の機能を調べる

SWAT 構成の一例として、「GLOBALS (グローバル)」をクリックしてください。ページがリフレッシュされて、smb.conf の [global] セクションに設定可能なオプションが示されます (図 2 を参照)。さらに細かいオプションを表示するには、「Advanced (詳細)」をクリックしてください。デフォルトで表示される「Basic (基本)」ビューには、最も一般的なオプションしか示されません。

図 2. 多くの SWAT メニューにおいて、オプションを設定できる Web フォーム
グローバル・パラメーターの入力画面のスクリーン・ショット。基本ビューまたは詳細ビューの選択ボタン、値の確定ボタンとリセット・ボタン、そして編集可能な構成フィールドが表示されています。

このページで設定できるオプションをよく調べて、いくつか変更してみてください。変更を smb.conf ファイルに入力して構成をリロードするには、「Commit Changes (変更の確定)」をクリックする必要があります。

SHARES (共有)」または「PRINTERS (プリンター)」をクリックすると、それぞれファイル共有、プリンター共有を編集するためのページが表示されます。インターフェースは [globals] セクションのものと同様ですが、編集する共有をドロップダウン・メニューから選択した上で、「Choose Share (共有の選択)」をクリックする必要があります。新しい共有を作成するには、「Create Share (共有の作成)」ボタンの隣にあるテキスト・フィールドに共有の名前を入力してから、このボタンをクリックします。

その他、以下のアクションを実行するためのボタンがあります。

  • WIZARD (ウィザード)」ボタンをクリックすると、共通ドメイン構成の設定などといった一般的な構成を簡単に変更するためのページが表示されます。
  • STATUS (ステータス)」ボタンをクリックすると、Samba サーバーが管理しているアクティブ接続の数や、アクセスしているファイルなど、現在のステータスが表示されます。また、smbdnmbd、および winbindd サーバーを起動、停止、再起動することもできます。
  • VIEW (ビュー)」ボタンは、現在の smb.conf 構成ファイルを表示します。
  • PASSWORD (パスワード)」ボタンをクリックすると、ユーザーの管理 (パスワードの変更、ユーザーの追加、ユーザーの削除など) を行うためのページが表示されます。ユーザーの管理は、ローカル・マシンで行うことも、別の SMB (Server Message Block)/CIFS (Common Internet File System) サーバーで行うこともできます。

これらの機能のほとんどには、root からしかアクセスすることができません。一般ユーザーでも「HOME (ホーム)」、「STATUS (ステータス)」、「VIEW (ビュー)」、「PASSWORD (パスワード)」の各ページにアクセスすることはできますが、オプションの一部は使用することができません。一般ユーザーが使用する可能性が最も高いのは、自分のパスワードを変更するための「PASSWORD (パスワード)」ページです。


SWAT に関する注意事項

SWAT は便利なものの、制約や問題がないわけではありません。SWAT の唯一最大の制約は、include ディレクティブをサポートしていないことです。smb.conf では、このディレクティブを使用して構成を複数のファイルに分割し、さらにはクライアントごとに異なる構成ファイルを組み込むこともできます。このような構成に依存している場合、SWAT では不十分だと感じるでしょう。少なくとも Samba を構成するには役不足です (それでも、ユーザーがパスワードを変更できるようにするために SWAT を使用することはできます)。

もう 1 つの SWAT に関する重要な注意事項は、セキュリティー上のリスクです。このリスクを最小限にするには、ローカル・ホストのログインだけを許容するという対策を採ることができます。リモートからログインしなければならない場合には、前に説明したように SSL 暗号化を使用するように SWAT を構成するという対策もあります。しかし、このような対策を採ったとしても、あらゆるサーバーがセキュリティー上のリスクとなり得ます。それは、ソフトウェアに未知のバグが潜んでいたり、何らかの構成が誤っていたりする可能性があるからです。このようなリスクを認識して、適切な対策を講じてください。例えば、TCP Wrapper、xinetd オプション、あるいは iptables ファイアウォール・ルールを使用して、コンピューターへのアクセスを制限するなどです。インターネットに公開されるサーバーの部分が増えれば増えるほど、構成がさらされるリスクは大きくなります。


次回の予告

この連載の次回の話題、LPIC-3 の目標 312.6 では、Samba の国際化を取り上げ、コード・ページやその他の Samba オプションを使用して Samba サーバーで英語以外のファイル名をサポートする方法などを説明します。

参考文献

学ぶために

製品や技術を入手するために

議論するために

  • My developerWorks コミュニティーに加わってください。ここでは他の developerWorks ユーザーとのつながりを持てる他、開発者が主導するブログ、フォーラム、グループ、ウィキを調べることができます。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux
ArticleID=767308
ArticleTitle=SWAT の構成
publish-date=10282011