●Sambaのインストール
以下のコマンドでSambaパッケージをインストールします。
# yum install samba samba-common samba-client samba-swat # rpm -qa | grep samba samba-client-3.0.33-3.29.el5_7.4 system-config-samba-1.2.41-5.el5 samba-common-3.0.33-3.29.el5_7.4 samba-3.0.33-3.29.el5_7.4 samba-swat-3.0.33-3.29.el5_7.4 |
インストール後にまず最初に行うべき作業はSambaの設定です。Sambaの設定はsmb.confファイルに行います。新しく作成するsmb.confは次のようにしましょう。
[global] dos charset = CP932 unix charset = UTF-8 display charset = UTF-8 |
smb.confはセクションと呼ばれる単位ごとにパラメータを設定します。セクションにはスペシャルセクションと共有の2種類があります。スペシャルセクションにはglobal homes printersといったセクションがあり、globalセクションはSamba全体に有効なパラメータを指定する最も重要なセクションです。共有セクションにはファイル共有、プリンタ共有、などの共有ごとにセクションを作成しそれぞれのセクションで有効なパラメータを指定します。また、以下のコマンドでsmb.confの書式に間違いがないかチェックすることができます。
# testparm Load smb config files from /etc/samba/smb.conf Processing section "[homes]" Processing section "[printers]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions [global] dos charset = CP932 display charset = UTF-8 netbios name = SAMBA server string = Samba Server Version %v passdb backend = tdbsam log file = /var/log/samba/%m.log max log size = 50 cups options = raw [homes] comment = Home Directories read only = No browseable = No [printers] comment = All Printers path = /var/spool/samba printable = Yes browseable = No |
●SWATの設定
Sambaが提供しているSWAT(Samba Web Access Tool)を利用してWebブラウザ経由でSambaを設定することが可能です。このツールを利用することで重要度の高いパラメータを優先的に設定する事ができるようになり、設定作業がかなり楽になります。最初のインストールでSWATは既にインストールされており、xinet経由での起動となります。
# vi /etc/xinet.d/swat # 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 = 127.0.0.1 192.168.1.0/24 user = root server = /usr/sbin/swat log_on_failure += USERID disable = no } # /etc/rc.d/init.d/xinetd start |
ここまで終えればSWATにアクセス可能となります。SWATへはブラウザでアクセスを行います。アドレスはhttp://[IPアドレス]:901を入力します。SWATの設定が適切に行われていれば認証画面が表示されます。Sambaの設定を変更できるのはrootのみですのでユーザ名にrootを入力しrootパスワードを入力してログインします。
それぞれのメニューでは以下の操作を行うことができます。
タイトル | 操作内容 | |
HOME | ホーム | Sambaのドキュメント |
GLOBALS | 全体設定 | globalセクションのパラメータ設定 |
SHARES | 共有設定 | ファイル共有セクションの作成とパラメータ設定 |
PRINTERS | プリンタ | プリンタ共有セクションの作成とパラメータ設定 |
WIZARD | – | サーバのタイプに応じた設定ファイルのテンプレート作成 |
STATUS | 動作状況 | 現在のSambaサーバの状態確認とSambaの起動・停止 |
VIEW | 設定表示 | smb.confの設定ファイルを表示 |
PASSWORD | パスワード | Sambaのユーザのパスワード変更やユーザ追加など |
●基本設定
smb.confの各セクションのパラメータを設定するには「GLOBALS」、「SHARES」、「PRINTERS」の各メニューをクリックした先の画面でパラメータを入力します。
まずはSambaサーバのworkgroupとnetbios nameを設定してみます。これらのパラメータはそれぞれWindowsのワークグループとコンピュータ名に該当します。今回は例としてworkgroupに「WORKGROUP」、netbios nameに「SAMBA」を入力します。変更を行ったら「変更を反映」ボタンをクリックします。ここで実際に変更が反映されているかUNIX側で確認してみましょう。smb.confの内容を確認してみると次のようになっており次のようになっており、workgroupとnetbios nameパラメータが追加されていることが確認できます。
workgroup = WORKGROUP server string = Samba Server Version %v netbios name = SAMBA |
●共有ディレクトリ作成
次にファイルサーバの本領を発揮するためにファイル共有を作ってみましょう。ファイル共有の作成はSWATの「SHARES」アイコンをクリックします。
新しくファイル共有を作成しますので共有名として「public」をテキストボックスに入力します。共有名を入力したら「ファイル共有の作成」ボタンをクリックします。画面が切り替わり共有に設定するパラメータを入力する画面になります。
この共有は誰でも書き込めるようにしたいと思いますのでread onlyパラメータはNoにします。また、実際にサーバ上にファイルを置く場所は/var/samba/publicにするのでpathパラメータに/var/samba/publicを入力します。また、availableをYesにしておきます。以上の設定を行なって変更を反映をクリックします。先ほどと同じようにsmb.confを確認すると入力した項目をもとに「public」セクションが作成されています。
[public] path = /var/samba/public read only = No |
ファイルを置く場所を/var/samba/public, 誰でも書き込み可能なようにread onlyパラメータをNoに指定しています。
ここで/var/samba/publicが存在しないようなら以下のコマンドで作成しておきます。なお、誰でも書き込み可能にしたいので属性を777に設定しておきます。
# mkdir /var/samba/public # chmod 777 /var/samba/public |
次に実際にアクセスするためのユーザを作成します。まずUNIX上で作成します。
# /usr/sbin/useradd -m user1 |
続いてSWATのPASSWORDアイコンをクリックして、ローカルマシンのパスワード管理のそばのユーザ名、新パスワード、新パスワードの再入力の欄に新しく作成するユーザの情報を入力します。ここでユーザ名にuser1とパスワードを設定します。ユーザ名とパスワードを入力したら「新規ユーザ追加」をクリックします。
正常にユーザが追加されたら「Added user ユーザ名」の文字列が表示されます。Sambaの起動や停止はSWATの「Status」の画面から行うことができます。「smbdの起動」、「nmbdの起動」をそれぞれクリックしてsmbdとnmbdを起動します。
psコマンドで利用してUNIX側でsmbdとnmbdが起動していることを確認してみます。
# ps ax | grep mbd 24243 ? Ss 0:00 /usr/sbin/smbd -D 24244 ? S 0:00 /usr/sbin/smbd -D 24255 ? Ss 0:00 /usr/sbin/nmbd -D |
上記の表示によりsmbdとnmbdが起動していることが確認できました。これでファイルサーバとして起動しましたので実際にwindowsからアクセスしてみます。IEのアドレス欄に\\IPアドレスを入力するのが簡単です。Sambaに接続すると認証ダイアログが表示されますので、user1とそのパスワードを入力します。
認証に成功するとSambaが提供しているファイル共有が表示されます。
Windowsクライアントから一旦ユーザ認証に成功すると認証に成功したユーザの情報がWindowsに記憶されログオフするまでそのユーザとして接続されます。しばらくしてから再接続しても同じサーバに接続してもユーザ認証は求められません。もし別のユーザとしてSambaサーバに接続した場合には一度ログオフしてから再度Sambaに接続しなおさなければなりません。
実際にpublicをクリックするとフォルダに移動します。書き込めるか確認してみてください。
●共有へのアクセス制限
write list | write listに設定されたユーザ、およびグループは共有上のファイルに対して 更新権と参照権が与えられます。このパラメータに設定されたユーザは read onlyパラメータがyesにされていてもファイルの更新権を持ちます。 一人一人ユーザ名で指定するのが大変な場合はグループ名による指定を行うこともできます。 |
read list | read listに指定されたユーザはread onlyのパラメータの設定に関係なく 参照権しか与えてくれません。write listと同様にグループ名での指定も可能です。 |
invalid users | invalid usersパラメータに指定されたユーザはその共有にアクセスできなくなります。 |
valid users | このパラメータにユーザが指定されていなければ全てのユーザが共有に アクセスできます。しかしいったんvalid usersにユーザが指定されると、 指定されていないユーザは共有にアクセスすることが禁止されます。 invalidとvalidの両方に同じユーザが指定されている場合はinvalidの設定が優先されます。 |
admin users | admin usersに設定したユーザはこの共有内ではroot権限をもって ファイル操作を行うことができます。ファイル共有に対する全ての操作が 許可されることになるため、ユーザの指定には注意が必要です。 |
下の設定は共有[public]にアクセス制限を行った例です。develグループのメンバー、managerグループのメンバーが参照・更新可能でtestグループのメンバーは参照のみが可能な設定です。その他のユーザはアクセスが拒否されます。
[public] comment = space path = /var/samba/public read only = No browseable = yes write list = @devel @manager read list = @test valid users = @devel @manager @test |
●Guest接続
共有に接続してユーザ認証に失敗した場合、Guestと呼ばれる形態で共有に接続することが可能です。このときユーザはGuestユーザとしてSambaにアクセスすることになります。
Guest接続を可能にするためにはまず[global]セクションの”map to guest”パラメータを設定しなければいけません。map to guestパラメータには次の値を設定することができます。
Never | パスワードが不正な場合の接続を許可しません。 したがってGuest接続を行うことができません |
Bad User | ユーザが存在してかつパスワードが間違っている場合には接続を拒否します。 一方ユーザが存在しない場合はGuestとして接続します |
Bad Password | パスワードが一致しない場合はGuestとして接続します。 |
またglobalセクションにはGuest接続時に利用するユーザアカウントをguest accountパラメータで指定することができます。これにはUNIXで作成したアカウントを指定します。既定値はnobodyとなっています。続いて各共有ごとにGuest接続を許可するかどうか指定します。
guest ok | ゲスト接続を許可する場合にyesを指定します。 map to guestが有効な場合のみ有効となります。 |
guest only | yesを指定した場合、接続要求をすべてGuest接続として処理します。 map to guestが有効な場合のみ有効となります。 |
以下、設定例です。
[global] ・・・・・ map to guest = Bad User guest account = nobody ・・・・・ [public] ・・・・・ guest ok = yes guest only =yes ・・・・・ |
●ネットワークレベルのアクセス制限
・interfaces
Sambaが名前解決に用いられるインターフェイスを限定します。既定値ではシステム上の全てのネットワークインターフェイスを用います。
・bind interface only
interfacesオプションと組み合わせて設定します。このオプションにyesが指定されているとき、ファイル共有サービスはinterfacesに指定されたネットワークのみ利用可能となります。注意事項としてこのオプションを指定するときは必ず127.0.0.1のIPアドレスをinterfacesオプションに含むようにしてください。そうしないと正常にサービスが起動しなくなる可能性があります。
・hosts allow
共有へのアクセスを許可するホスト名、IPアドレスをネットワークアドレス単位で指定することができます。[global]セクションで指定された場合は全ての共有に対して有効な設定となります。
・hosts deny
共有へのアクセスを禁止するリストを指定します。hosts allowと矛盾した設定を行った場合にはhosts allowが優先されます。
以上のパラメータを用いた設定例を下記に示します。eth0のネットワーク、およびサーバ自身からの通信のみ受け付けてpublic共有に対しては192.168.1.0/24のみアクセス可能な設定例です。
[global] ・・・・ interfaces = 127.0.0.1 eth0 bind interfaces only = yes ・・・・ [public] ・・・・ hosts allow = 192.168.1.0/255.255.255.0 ・・・・ |