このページでは自宅サーバーWindowsファイルサーバーとして利用するためのSamba共有ポイントの設定について解説します。
お便利サーバー.com+相互リンクサイト内をキーワードで検索
Sambaサーバーの構築

Sambaサーバーについて

Sambaの構成と設定の方法

SWATの準備と設定

Sambaのコントロール

Sambaの全体動作の設定

ユーザーアカウントの設定

共有ポイントの基本的な設定

ホームディレクトリの利用

特殊な共有ポイントの設定

プリンタサーバーの設定

Sambaについてその他


ファイル共有の計画

Samba で構築する ファイルサーバー をどういうスタイルで利用するかは、それぞれのお宅の利用環境によって様々でしょう。

例えば利用するのは自分一人しかいないから、パソコンの中の ハードディスク の一部のようにパスワードなしで自由に読み書きできるファイルサーバーがいい、というケースは比較的多いでしょう。

あるいは、家族がそれぞれ自分用のパソコンを持っていて、お互いのデータを見ることができないような保存スタイルのファイルサーバーが望ましいというお宅も少なくないでしょう。

また、そういった「プライバシー重視」の利用においても、例えばホームビデオデータライブラリのように「誤って消されては困るものの、常に家族のだれもが見ることのできる領域。」を設けるのも便利です。

Sambaはそういった様々な利用スタイルに合わせて柔軟に設定することができるようになっています。

さて、Sambaは WBEL CentOS のファイルシステム上の任意のディレクトリを共有単位として設定し、利用します。

もちろん、既存のディレクトリを利用することも可能ですが、一般に既存のディレクトリはそれぞれの役目が決まっていますから、それをSambaのファイルサーバーとして共用するのは運用上好ましくありません。

一般には、Samba専用のディレクトリを作成し、そのディレクトリに対して共有の設定を行うのが普通の方法と考えてください。

ただ、 SWAT ではディレクトリを作成することができませんので、共有単位の設定を行う前に別の方法でディレクトリを作成する必要があります。

そこでこの コンテンツ では、

1. シェル プロンプト から必要なディレクトリを作成する。

2.作成したディレクトリに対してSWATで共有設定を施す。

という手順で設定を行っていきます。

SWATで共有単位の設定を行うには、SWATの任意の画面から "SHARES" ボタンを左クリックします。

SWATのSHARESメニュー
SWATの"SHARES"メニュー

すると、上のような画面に切り替わり、共有単位ごとに設定を行うことができるようになります。

ここで行う設定は、WBELやCentOSのシステム上のディレクトリに対しての Sambaとしての共有設定 です。
従って、共有ポイントの設定を変更したり、削除したりしても、ファイルシステム上のディレクトリやファイルが変更されたり、削除されたりすることはありません。もちろん、WBELやCentOSシステム上の パーミッション も変更されません。

共有ポイントを新規に作成する場合は、 Create Share (ファイル共有)ボタンの右側の入力欄に共有名を入力し、 Create Share (ファイル共有)ボタンを左クリックすると登録され、その共有ポイントに対する 各 ディレクティブ の設定を行うことができるようになります。

既存の共有ポイントの内容を修正する場合は、 Choose Share (ファイル共有の選択)ボタンの右側のプルダウンメニューから共有ポイントを選択し、 Choose Share (ファイル共有の選択)ボタンを左クリックすると各ディレクティブの設定内容の参照と変更を行うことができるようになります。

共有ポイントを削除するときは、削除したい共有ポイントを同じプルダウンメニューから選択し、プルダウンメニューの右側の Delete Share (ファイル共有の削除)ボタンを左クリックします。

一つのファイルサーバーで運用する共有名は ユニーク でなければなりませんから、同じ共有名を複数作成することはできません。

逆に、一つのディレクトリに対して異なる共有名を付けることは可能ですから、一つの共有ディレクトリに対して複数の異なる制御を与えることもできます。

このページの先頭へ↑

パーミッションとSambaの関係について

Samba は、 UNIX 系の OS 上のファイルシステムに対して WindowsOS から読み書きを可能にする アプリケーション です。

アプリケーションはOSが与える権限を越えて動作することはできませんから、いくらSambaで読み書き権限を与えても、読み書きの対象となるディレクトリに対してOSである WBEL CentOS がそれを許さなければ、実際に読み書きを行うことはできません。

例えば、所有者と所有グループが root パーミッション "755" のディレクトリに対しては、Sambaで ユーザーアカウント tanaka に書き込み権限を与えることは決してできないということです。

こういう場合には、そのディレクトリの所有者を tanaka に変更するか、もしくはパーミッションを "777" 属性とパーミッション〜その1 "1777" 属性とパーミッション〜その2 など「所有者以外でも書き込み可」に変更しなければならないということです。

かなりSambaの設定に慣れた人でも、うっかりこの制約を忘れて「ハマッて」しまうことも珍しくありません。

Sambaの共有ポイントを設定するときは、この「パーミッション」の問題を忘れないようにしてください。

このページの先頭へ↑

自由に読み書き可能な共有ポイントの設定〜その1

LAN に接続している全員が読み書き可能ですが、Sambaに登録されているユーザーの書き込みデータだけは、そのユーザー以外には書き換え(削除)ができない特権を与える設定を行います。

利用するディレクトリは、基本的にデータ書き込み領域として利用される "/var" /varパーティションについて(WBEL3) /varパーティションについて(CentOS3) /varパーティションについて(WBEL4) /varパーティションについて(CentOS4) /varパーティションについて(CentOS5) 以下に設置するのが問題ないでしょう。

SWAT で接続しているクライアント機でそのまま接続すると面倒がなくて良いでしょう。

まず、 サブネット 内の適当な クライアント機 から SSHクライアント 構築中のLinuxサーバー ログイン します SSHクライアントでサーバーに接続する(WBEL3) SSHクライアントでサーバーに接続する(CentOS3) SSHクライアントでサーバーに接続する(WBEL4) SSHクライアントでサーバーに接続する(CentOS4) SSHクライアントでサーバーに接続する(CentOS5)

それから su コマンド アカウント "root" に変更し、 mkdir コマンドでディレクトリを作成します。

ディレクトリのパーミッションを "777" とした場合、Linuxのパーミッションのルールにより、そのディレクトリの中に書き込まれたファイルは任意のユーザーが削除できてしまいます。これを防ぐために "1777" として スティッキービット を設定する必要があるわけです 属性とパーミッション〜その2

作成したディレクトリは、接続するすべての ユーザーアカウント からの書き込みを可能にする必要がありますので、mkdirコマンドを実行するときに "-m" オプションを使って パーミッション "1777" 属性とパーミッション〜その2 で作成してください。

[tanaka@web1 ~]$ su -Enter
Password: "root"のパスワードを入力します。 Enter
[root@web1 ~]# mkdir -m 1777 /var/free_areaEnter
[root@web1 ~]# ls -d -l /var/free_areaEnter  ←パーミッションを確認します。
drwxrwxrwt  2 root   root     4096 5月 31 19:37 /var/free_area
[root@web1 ~]#
ここで設定する共有名は、Sambaに接続したときに表示されます。日本語を使うこともできますが、日本語の共有名はSWATの "VIEW" メニュー SWATのVIEWメニューについて では正しく表示されませんので、できれば日本語は使わないほうがよいでしょう。

ディレクトリが作成できたら、SWATの "SHARES" 画面の Create Share (ファイル共有の作成)ボタンの右側の入力欄に「共有名」を入力して、 Create Share (ファイル共有の作成)ボタンを左クリックしてください。

ここではわかりやすいように、「共有名」をディレクトリ名と同じ "free_area" で設定してますが、もちろん全然別の名称でも構いません。

すると "free_area" という名称で共有ポイントが登録され、 Choose Share (ファイル共有の選択)ボタンの横に共有名が表示されるとともに、その下に設定項目が「Basic(標準表示)」で現れます。

free_areaの設定初期画面
"free_area"の設定初期画面1

この画面を下にスクロールして、以下の部分の設定を行ってください。

"comment"〜共有ポイントの表示名

(1) の部分の設定です。共有ポイントの目的などを記述しておく ディレクティブ です。

意味としては、 "GLOBALS" メニューで設定する "server string" と同じで server stringディレクティブの設定 、共有ポイントの説明として表示されるパラメータです。

自分で解りやすい任意の説明を記述してください。

"path"〜ファイルシステム上のパスの指定

(2) の部分の設定です。共有ポイントがファイルを格納するディレクトリを指定します。

説明するまでもありませんが、上で作成した "/var/free_area" をパラメータとして設定します。

"read only"〜読み取り専用属性の指定

(3) の部分の設定です。共有ポイントの読み書きに関する基本的な設定をおこなう ディレクティブ です。

デフォルト では "Yes" 、つまり読み取り専用になっていますから、これを "No" に変更して書き込み可能に変更します。

"guest ok"〜ゲストユーザーのアクセス許可の指定

(4) の部分の設定です。ゲストユーザーのアクセスを許可するかどうかを設定する ディレクティブ です。

デフォルト では "No" 、つまりゲストユーザーのアクセスを許可しない設定になっていますから、これを "Yes" に変更してアクセスできるように変更します。

"available"〜共有ポイントの有効/無効の切り替え

このディレクティブについてはこちら 共有ポイントの有効/無効のデフォルト値の変更 の説明も参考にしてください。

(5) の部分の設定です。共有ポイントの利用の可否を設定する ディレクティブ です。

Samba 及び SWAT のバージョンが "3.0.25" 以前の デフォルト のパラメータは "Yes" 、つまり「有効」です。一方それ以降のバージョンでは "No" 、つまり「無効」に設定されます。

「無効」に設定すると、その共有ポイントの他の設定の内容に係わらずその共有ポイントは全く利用できなくなります。

「もうこの共有ポイントは二度と使うことがない」という場合は共有ポイントそのものを削除してしまっても構いませんが、そうすると設定まですべて消去されてしまいますので復活が面倒になります。

ところがこの ディレクティブ を利用して「無効」に設定しておけば、その共有ポイントの他のディレクティブはそのまま残しておくことができますので、後で「やっぱり有効にしたい」と思ったときに面倒がありません。

先にも説明したとおり、このディレクティブはSamba及びSWATのバージョンによってデフォルトの設定が異なりますので、設定には注意が必要です。

"No" になっているときは "Yes" に変更してアクセスできるように変更します。

共有ポイント"free_area"の設定例と接続の確認

以下に共有ポイント"free_area"の設定例を示します。

設定が終わったら、 Samba の同じ設定画面から Commit Changes (設定を反映)ボタンを左クリックし、Sambaの再起動などを行って設定を有効化してください Sambaのコントロール

インターネットエクスプローラーのアドレスバーに "\\web1" と直接 NetBIOS 名をタイプするのが簡単です。

設定が有効になったら、 サブネット 内の任意の WindowsOS クライアント から、適当な方法でSambaサーバーに接続してみてください。

設定に間違いがなければ以下のように共有ポイントが見えるはずです。

\\web1に接続
\\web1に接続

共有ポイントを開くと次のように表示されます。

\\web1\free_areaを開く
\\web1\free_areaを開く

このフォルダには、誰が接続しても自由に読み書きができるはずですので、色々試してみてください。

要するに、この コンテンツ の推奨どおりに設定されている場合、ということです。

さて、 "GLOBALS" メニューで、

"security" の設定→ "USER" securityディレクティブの設定

"map to guest の設定→ "Bad User" map to guestディレクティブの設定

"username map" の設定→ "/etc/samba/smbusers" username mapディレクティブの設定

の場合で、なおかつSambaサーバーに接続する WindowsOS クライアント のユーザー名が "/etc/samba/smbusers" でSambaの ユーザーアカウント にマッピングされている場合は /etc/samba/smbusersの記述について 、正式なSambaの登録ユーザーとしてこの共有ポイントに書き込みを行うことになります。

当然それ以外の未登録ユーザーはすべて ゲストユーザー として書き込みを行うことになります。

一方でこの共有ポイントには、

「ゲストを含むすべてのユーザーが ログイン 及び読み書き可能」

という設定がなされていますから、

「登録ユーザーは自分のユーザーアカウントで、それ以外のユーザーはゲストユーザーのアカウント(nobody)で WBEL CentOS の"/var/free_area"以下に書き込みが行われる。」

ということになります。

また、Sambaの デフォルト の設定では、書き込まれるフォルダ(ディレクトリ)の パーミッション "755" 、ファイルのパーミッションは 644 ですから、

「別のユーザーアカウントで作成されたファイルは読み込み専用」

となります。

つまりこの共有ポイントは、

このページの前半で説明していますが、共有ディレクトリのパーミッションを "1777" 属性とパーミッション〜その2 ではなく "777" 属性とパーミッション〜その1 に設定している場合、右の例で 書き換えはできません 削除は可能 になってしまいますので注意してください。

1.Sambaの登録ユーザーにより書き込まれたファイルとフォルダは、そのユーザー以外には書き換え(削除)できない。

2.Sambaに登録されていないユーザーにより書き込まれたファイルとフォルダは登録ユーザーには書き換え(削除)できないが、他の未登録ユーザーには書き換え(削除)が可能。

というちょっと複雑な振る舞いをすることになります。

このページの先頭へ↑

自由に読み書き可能な共有ポイントの設定〜その2

上で設定した共有ポイント "free_area" を少し修正して、 LAN に接続している全員に対して ゲストユーザー ログイン することを強制し、お互いのデータを自由に読み書き可能な領域を設定してみましょう。

まず、 "SHARES" メニューの中のプルダウンメニューから "free_area" を選択して、 Choose Share (ファイル共有の選択)ボタンを左クリックしてください。

Basic (標準表示)の画面が表示されたら、 Advanced (詳細表示)ボタンを左クリックして表示を切り替えてください。この画面を少し下にスクロールした部分の設定を変更します。

"guest only"〜ゲストユーザーのみ接続可能にする設定

(1) の部分の設定です。ゲストユーザーのみ接続可能な共有ポイントとして指定を行う ディレクティブ です。

デフォルト "No" ですが、これを "Yes" に変更すると、ゲストユーザー(nobody)以外の ログイン ができなくなります。

ところが "map to guest" ディレクティブが "Bad User" に設定されているため map to guestディレクティブの設定 、Sambaに登録されている ユーザーアカウント でこの共有ポイントに接続しようとすると、「正しくないユーザーなのでゲストユーザーでログインする」という動作に切り替わって接続されます。

共有ポイント"free_area"の設定例と接続の確認

以下に共有ポイント"free_area"の設定例を示します。表示されていない部分は元の "free_area" の設定のままです。

設定が終わったら、 Samba の同じ設定画面から Commit Changes (設定を反映)ボタンを左クリックし、Sambaの再起動などを行って設定を有効化してください Sambaのコントロール

インターネットエクスプローラーのアドレスバーに "\\web1" と直接 NetBIOS 名をタイプするのが簡単です。

設定が有効になったら、 サブネット 内の任意の WindowsOS クライアント から、適当な方法でSambaサーバーに接続してみてください。

この共有ポイントでは、どのユーザーが書き込んだファイルやディレクトリでも、他のユーザーが自由に変更や書き換えを行うことができるようになっていますので試してみてください。

このページの先頭へ↑

自由に読み書き可能な共有ポイントの設定〜その3

Samba に登録されている ユーザーアカウント には自由な読み書き権限を与え、ゲストユーザーからのアクセスを禁止する設定です。

また、任意の登録ユーザーの書き込みは、他の登録ユーザーには読み込みの権限しか与えられません。

これは最初の「自由に読み書き可能な共有ポイントの設定〜その1」の設定内容の中で、 "guest ok" ディレクティブ を、 デフォルト "No" に変更するだけです。

設定が終わったら、 Samba の同じ設定画面から Commit Changes (設定を反映)ボタンを左クリックし、Sambaの再起動などを行って設定を有効化してください Sambaのコントロール

インターネットエクスプローラーのアドレスバーに "\\web1" と直接 NetBIOS 名をタイプするのが簡単です。

設定が有効になったら、 サブネット 内の任意の WindowsOS クライアント から、適当な方法でSambaサーバーに接続してみてください。

この設定では、共有ポイント "free_area" を開こうとすると必ず認証の ダイアログ が表示されるようになります。

認証ダイアログが必ず表示される共有ポイント
認証ダイアログが必ず表示される共有ポイント

つまり、接続のためのユーザーアカウントとパスワードが与えられない限り、中を覗くことはできなくなったというわけです。

このページの先頭へ↑

自由に読み書き可能な共有ポイントの設定〜その4

Samba に登録されている ユーザーアカウント には自由な読み書き権限を与え、ゲストユーザーには読み込み権限だけを与える設定です。

これは最初の「自由に読み書き可能な共有ポイントの設定〜その1」の設定内容に、以下のように "read list" ディレクティブ のパラメータに "nobody" と追加します。

"read list"〜ユーザーを読み込み専用に指定する

この ディレクティブ に指定された Samba ユーザーアカウント は、この共有ポイントに対して「読み込み権限だけ」が与えられるようになります。言葉を返せば、 「書き込み権限を失わせる」 設定ともいえます。

複数のユーザーアカウントを指定するときはスペースで区切って記述します。

上の例では "nobody" が指定されていますから、Sambaに対して "nobody" ログイン するユーザー、すなわち ゲストユーザー に対して有効な設定になりますから、この設定によって 「Samba上にユーザーアカウントを持たないすべてのユーザー」 はすべて「読み込みだけ」が許可されるようになります。

共有ポイント"free_area"の接続の確認

設定が終わったら、 Samba の同じ設定画面から Commit Changes (設定を反映)ボタンを左クリックし、Sambaの再起動などを行って設定を有効化してください Sambaのコントロール

インターネットエクスプローラーのアドレスバーに "\\web1" と直接 NetBIOS 名をタイプするのが簡単です。

設定が有効になったら、 サブネット 内の任意の WindowsOS クライアント から、適当な方法でSambaサーバーに接続してみてください。

Samba上にユーザーアカウントを持たないユーザーからでも自由にアクセスできますが、書き込みや書き換え、消去は一切できなくなっているはずです。

このページの先頭へ↑

管理ユーザーアカウントを設定する

複数のユーザーで共用する共有ポイントは、人それぞれの書き込みが入り乱れて、ややもすると「ごちゃごちゃ」の状態になりかねません。

もちろん、Sambaではなく シェル プロンプト からでしたら、 root 権限で何でも削除できます。

これまでの設定例では、他の ユーザーアカウント で書き込まれたファイルやディレクトリは書き換えや削除ができないようになっていますから、 サーバー 管理者の "tanaka" であっても、他のユーザーの書き込みを削除することはできません。

そこで、ユーザーアカウント "tanaka" にSamba上の管理権限を与え、共有ポイントに書き込まれたすべてのファイルとフォルダを自由に書き換え、削除できるように設定します。

例として、最初に設定した「自由に読み書き可能な共有ポイントの設定〜その1」の内容の、以下の ディレクティブ に追加設定を行います。

"admin users"〜管理ユーザーを指定する

(1) の部分の設定です。

この ディレクティブ に指定された Samba ユーザーアカウント は、ディレクトリの所有者に係わらず、この共有ポイントに対して 「root権限でファイル操作を行う」 ようになります。

複数のユーザーアカウントを指定するときはスペースで区切って記述しますが、一般には複数のユーザーアカウントに管理権限を与えるべきではありません。

例えばここに "tanaka" を設定すると、 ユーザーアカウント "tanaka" は、Sambaの利用においても常に WBEL CentOS 上の "root" 権限でファイルやディレクトリを操作することになります。

ただし、この設定にはひとつ問題があります。

それは、 "tanaka" によって書き込まれたファイルやディレクトリの所有者が "root" になってしまうことです。

つまり、 "admin users" "tanaka" と設定して書き込んだファイルは、もはや "admin users" で指定したユーザー以外には削除できなくなりますから、ユーザーアカウント "tanaka" "admin users" からはずしてしまうと、自分で作成したファイルやディレクトリであるにも係わらず、書き換えや削除ができなくなってしまうことになります。

従って、後々のことを考えるのであれば、一般的には "admin users" は使用すべきディレクティブではないと思われます。

またこのディレクティブにより「書き込みの特権」が与えられるのは、 "valid_users" ディレクティブで「アクセスの許可」が与えられ valid_usersディレクティブについて 、なおかつ 先に説明した "read only" ディレクティブが "No" に設定され、基本的な書き込みが有効になっていなければならない点にも注意してください

"write list"〜「書き込み可能」ユーザーを指定する

(2) の部分の設定です。

上で説明した "admin users" と同様に、この ディレクティブ に指定された Samba ユーザーアカウント は、読み書きに関する他のディレクティブの設定に係わらず (たとえ "read only" ディレクティブが"Yes"であっても)、この共有ポイントに対して 「完全な書き換え権限」 を持つようになります。

ただし、 "admin users" に同じユーザーアカウントが設定されている場合にはそちらが優先されます。

複数のユーザーアカウントを指定するときはスペースで区切って記述します。

"admin users" に設定されたユーザーアカウントが、常に WBEL CentOS 上の "root" 権限でファイルやディレクトリを操作するのに対し、 "write list" に設定されたユーザーアカウントの場合は、自分の所有ではないファイルやディレクトリの移動や削除などの 「必要な場合にのみ"root"権限を使う」 点が異なります。

つまり "write_list" "tanaka" を設定している場合、 "tanaka" が書き込むファイルやディレクトリの所有者は "root" ではなく "tanaka" となります。


ムックですが管理人の
イチオシテキストです↓

従って、 "tanaka" "write list" からはずしてしまっても、自分で作成したファイルやフォルダに関する権限は変わることはありませんから、 "admin users" の場合のように後々困るようなことがありません。

またこのディレクティブにより「書き換えの特権」が与えられるのは、 "valid_users" ディレクティブで「アクセスの許可」が与えらる場合に限られる点に注意してください valid_usersディレクティブについて

共有ポイントの設定例と"free_area"の接続の確認

以上のような理由からこの コンテンツ では、Sambaの管理ユーザーの設定として以下のように "write list" にユーザーアカウントを設定することをお勧めします。

設定が終わったら、 Samba の同じ設定画面から Commit Changes (設定を反映)ボタンを左クリックし、Sambaの再起動などを行って設定を有効化してください Sambaのコントロール

インターネットエクスプローラーのアドレスバーに "\\web1" と直接 NetBIOS 名をタイプするのが簡単です。

設定が有効になったら、 ユーザーアカウント "tanaka" から、 サブネット 内の任意の WindowsOS クライアント から、適当な方法でSambaサーバーに接続してみてください。

共有ポイント上のすべてのファイルを自由に操作できるようになっているはずです。

このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。
Powered by Apache
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。
www.centos.org - The Community ENTerprise Operating System