PR

(注:記事は執筆時の情報に基づいており,現在では異なる場合があります)

図1●inetd利用時に追加するSWAT用設定
/etc/inetd.confファイルにこの1行を追加して,inetdを再起動すればSWATが利用できるようになる。
図2●xinetd利用時に追加するSWAT用設定
この設定を/etc/xinet.d/swatファイルとして保存する。xinetdに設定を反映させればSWATが利用できる。
図3●ユーザー認証を行わない場合のsmb.conf設定例
/home/sambaディレクトリを共有ディレクトリとして設定している。

SWATの起動設定

 Sambaの設定はsmb.confという設定ファイルを編集することで行うが,Sambaに慣れない初心者には記述が難しく,直接編集するのが困難な場合が多い。SambaにはSWAT(Samba Web Administration Tool)と呼ぶGUI管理ツールが用意されており,Webブラウザを用いてSambaの設定(smb.confの編集)が可能である。SWATはSambaをソースからコンパイルしてインストールした場合,Samba本体の実行バイナリと同様に/usr/local/samba/以下にインストールされる。

 Samba本体は通常デーモン(システム常駐ソフト)として動作させるのが一般的だが,SWATはそれとは異なり,inetdやxinetdといったスーパーサーバーと呼ばれるプログラムによって起動される。そのためSWATを利用するためには,まずinetdやxinetdからSWATを起動する設定を施す必要がある。自分のシステムがinetdを使用しているかxinetdを使用しているかは,psコマンドとgrepコマンドを次のように組み合わせて実行すると判断できる。

$ ps -A | grep inetd

 inetdが稼動中であれば「inetd」と,xinetdが稼動中であれば「xinetd」と表示される。

 スーパーサーバーの種別を把握したら,SWAT起動用の設定を追加する。最初に,SWATが利用するTCPポート番号をシステムに登録しておく。これには,/etc/servicesファイルに次の1行を追記する。

SWAT901/TCP

 次に,スーパーサーバーからSWATを起動する設定を行う。

 inetdを利用している場合は,/etc/inetd.confファイルに図1[拡大表示]の記述を追加する。

 なお,SWATの実行ファイル「swat」の格納場所は標準インストール先のものを記述しているが,環境によっては異なる場合がある。事前にfindコマンドやlocateコマンドなどでSWATの実行ファイルの場所を確認してから設定しよう。ただし,locateコマンドで検索できるのは,あらかじめ作成されたインデックス・ファイルであるため,Sambaをインストールした直後にlocateコマンドを実行しても,インデックスに反映されていないと検出できないことがある。その場合はupdatedbコマンドを実行してインデックスを最新の状態にしなければならないので,注意が必要である。

$ find / -name swat  
↑findの場合
$ locate swat  ←locateの場合

 設定が完了したら,inetdを再起動して設定を反映させる。これにはinetdにkillallコマンドでHUPシグナルを送信する。killallコマンドの実行には管理者(root)権限が必要である。

# killall -HUP inetd

 xinetdを利用している場合は設定が異なる。xinetdは,inetdに比べて細かなアクセス制御の設定が可能なことなどから,従来のinetdに代わる形で最近のLinuxディストリビューションに採用されている。xinetdで制御するサーバーの設定は,/etc/xinet.dディレクトリ内に,各サーバー名の設定ファイルで記述する。例えばSWATの場合,図2[拡大表示]のように記述したテキスト・ファイルをswatというファイル名で保存する。

 「only_from」の行では,SWATにアクセス可能なIPアドレス範囲を設定する。図2の設定では,SWATを稼働させているホスト自身(127.0.0.1)からと,192.168.0.0というネットワーク・アドレスを持つLAN内のマシンからのみアクセス可能に設定している。追加したいIPアドレスがあれば,半角スペースを区切り文字として追記する。設定完了後は,inetd同様,killallコマンドでシグナルを送信する。ただし,送信するシグナルがUSR1となる点が異なる。

# killall -USR1 xinetd

 設定後,http://localhost:901/(あるいは,http://サーバー名:901/)というURLにアクセスするとSWATへのログイン用の認証ダイアログが表示される。そこにLinux/UNIXシステムの管理者(root)のアカウント情報を入力してログインすると,写真2のようなSWAT画面が表示される。

 通常はこのSWATを使ってSambaの設定を行う。しかし,Samba 3.0beta2のSWATは筆者の環境ではいくつかの不具合が見られたため。これの利用は推奨できない。例えば,「Shares(共有)」メニューを使って,共有を新規作成しようとしてもsmb.confファイルに変更が反映されない場合があった。そのため,以下では,Sambaの設定ファイルであるsmb.confファイルを直接書き換える設定方法を紹介する。

ユーザー認証を行わないファイル共有設定

 まずは,最も簡単なファイル共有の方法を紹介する。この方法ではユーザー認証を行わず,パスワードも設定しない。セキュリティ面での問題はあるが,ユーザー管理が必要ないため設定や運用が楽である。個人利用やSamba 3.0の実験のため利用するファイル・サーバーなら,これでも良いだろう。

 Sambaを稼働させるには,最初に設定ファイルである「smb.conf」を設定しなければならない。同ファイルは,標準インストール環境では,/usr/local/samba/libディレクトリに配置する。インストール直後には同ファイルが存在しないため,エディタなどで作成する必要がある。

 smb.confファイルに記述する設定は,いくつかのセクションに分かれている。Sambaを運用する上で最も重要になるのが「global」セクションである。globalセクションでは,Sambaサーバーがシステム上で利用する文字コードの設定や,クライアントのWindowsマシンが取り扱う文字コードの設定,ログ・ファイルやパスワード・ファイルの保存場所などを設定する。これらは,Sambaの実体であるsmbdデーモン(サーバー)を起動する前に必ず設定しておく必要がある。

 最初に文字コード設定を施す。Part1で紹介した通り,Samba 3.0では文字コード設定が変更されている。具体的には,Windowsクライアントで利用する文字コードを「dos charset」,Sambaサーバー(Linux)で利用する文字コードを「unix charset」,SWATの表示に利用する文字コードを「display charset」というパラメータで設定する。

 Sambaサーバー(Linux)上では日本語EUCを用い,日本語版WindowsでSambaサーバーに接続して,SWATでの管理運用をWindowsから行う環境であった場合,次のように設定すると良いだろう。

dos charset = CP932
unix charset = EUCJP-MS
display charset = CP932

 次にセキュリティ・パラメータを設定する。セキュリティ・パラメータは,Sambaの運用形態を定義するための設定である。「security」パラメータで設定し,Sambaサーバーをワークグループ相当のファイル/プリント・サーバーとして運用する場合は,「share」あるいは「user」,Windowsドメインに組み込んで稼働させる場合は,「server」や「domain」,「adc」のいずれかを選択する。それぞれの設定の意味を表2に挙げた。

 認証なしのファイル共有を行う場合は「share」を選択すると良いだろう。これには,smb.confのglobalセクションに「security = share」と記述する。次いで共有名(ここではcommonとする)を記述し,共有するディレクトリ(ここでは/home/samba)の指定,書き込みの許可,guestでのアクセスを許可する記述を行う(図3[拡大表示])。

 気をつける必要があるのは,Sambaで共有するディレクトリのアクセス権限である。Sambaのguestユーザーは,標準ではLinuxの「nobody」ユーザーに割り当てられるため,共有ディレクトリはこのユーザー権限で読み書きできるように設定しなければならない。これには,管理者(root)権限で次のようにアクセス権限を設定する。

# chown -R nobody.nobody
/home/samba
# chmod -R 755
/home/samba

(ライター 新村 拓也)


(次回に続く)