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

Sambaサーバーについて

Sambaの構成と設定の方法

SWATの準備と設定

Sambaのコントロール

Sambaの全体動作の設定

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

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

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

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

プリンタサーバーの設定

Sambaについてその他


永久保存のための共有ポイントの作成

例えば整理の終わった写真データのライブラリや編集の終わったホームビデオの映像、あるいは ダウンロード した アプリケーション の インストール プログラムやアップデータなど、

「もう当分は書き換えることはないし、でも捨てることは出来ない。でも、時々はアクセスが必要。」

というようなデータ類を管理する場合に便利な共有ポイントを作成してみましょう。

こういうデータは、任意のユーザーが自由に読み取ることができるのが望ましいのですが、安易に削除されたり、書き換えられたりしては困るので 「すべてのユーザーに読み取り専用」 という設定をかけたいところです。

ところが、管理者であるあなた自身にまで読み取り専用を設定してしまったら、その共有ポイントにデータを書き込むべきユーザーが存在しなくなってしまいますから、管理者にだけは書き込み権限を与えたいところです。

ところが、あなたも人間ですからミスをすることもあるはずです。家族が大事にしている写真やビデオのデータが、管理者であるあなた自身の不注意で削除されてしまったら、きっとあなたは面目丸つぶれになってしまうでしょう。

もちろん、 SWAT を使ってデータの書き込みを行うときだけ自分に書き込み権限を与えてSambaを再起動し、書き込みが終わったら書き込み権限を削除してSambaを再起動する、という方法をとれば良いのですが、それはそれで面倒な作業です。

実はSambaは、 WBEL や CentOS 上の一つのディレクトリに対して、複数の異なる共有ポイントを設定することができます。

この場合、それぞれの共有ポイントの設定は独立して機能し、他の共有ポイントの設定は完全に無視します。

この仕組みを利用することで、WindowsOSのファイル共有機能では真似のできない便利な設定、つまり、

「アクセスする共有ポイントを変えることで、同一ユーザーが一つのデータフォルダに対して読み取り専用または書き込み許可を選択することが可能。」

という巧妙な仕組みが実現できるわけです。

一つのディレクトリに複数の共有ポイントを設定する

まずは共有ポイントが利用するディレクトリ "/var/store" を作成しましょう。

ディレクトリ作成の手順は 自由に読み書き可能な共有ポイントの設定〜その1 と基本的には同じです。

"/var ディレクトリには root 以外には書き込み権限がありませんから、 "tanaka" では "/var 以下にディレクトリを作成することができません。

ただし、この共有ポイントに対してデータの書き込みを行うのは "tanaka" だけに限定しますから、 mkdir コマンド でディレクトリを作成したら、 chown で所有者を "tanaka" に変更します。

また、「所有者に書き込み許可、それ以外のアカウントに読み取り許可」という パーミッション として "755" を与える必要がありますが、ディレクトリは "root" アカウント で作成しますから、最初から "755" で作成されているはずです。

[tanaka@web1 ~]$ su -Enter
Password: "root"のパスワードを入力します。 Enter
[root@web1 ~]# mkdir /var/storeEnter
[root@web1 ~]# chown tanaka.tanaka /var/storeEnter
[root@web1 ~]# ls -d -l /var/storeEnter  ←パーミッションを確認します。
drwxr-xr-x  2 tanaka  tanaka    4096 6月 9 21:46 /var/store
[root@web1 ~]#

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


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

ここではわかりやすいように、「共有名」として "保存版" と設定します。もちろん全然別の名称でも構いません。

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

共有ポイントが作成できたら、画面を下にスクロールして、以下の部分の設定を行ってください。

"comment" ディレクティブ commentディレクティブについて は任意です。必要がなければ空欄で構いませんが、このように利用者にわかりやすい情報を載せておくのもよいでしょう。

"path" ディレクティブ pathディレクティブについて には、今作成したディレクトリ "/var/store" を設定します。

そして、 ユーザーアカウント に対する設定には何も手を加えず、 "read only" ディレクティブ read onlyディレクティブについて は デフォルト のまま "Yes"、 "guest ok" ディレクティブ guest okディレクティブについて は "Yes" に変更します。

つまり、特定のユーザーに書き込みに関する権限を与えず、すべてのユーザーに「読み取りだけ」を強制し、ゲストユーザーのアクセスを許可することで、

「すべてのユーザーが読み取り専用で ログイン 可能」

という設定を行ったわけです。

Samba及びSWATのバージョンが 3.0.25 以降の場合は、更に "available" ディレクティブを "yes" に設定する必要がありますので注意してください 共有ポイントの有効/無効のデフォルト値の変更 。

ここまで設定を行ったら、 Commit Changes (設定を反映)ボタンを左クリックして設定を保存します。

そして引き続き同じ要領で以下のような 「書き込み専用」 の共有ポイントを作成してください。ここでは共有ポイント名を "保存版編集" としています。

共有ポイントが作成できたら、画面を下にスクロールして、以下の部分の設定を行ってください。

"comment" ディレクティブ commentディレクティブについて は任意です。必要がなければ空欄で構いませんが、このように自分でわかりやすい説明を載せておくのもよいでしょう。

"path" ディレクティブ pathディレクティブについて には、 上と同じディレクトリ"/var/store"を設定 します。

更に、 "valid users" ディレクティブと "browseable" ディレクティブ に変更を加えます。

"valid users"〜アクセスを許可するユーザーを設定

(1) の部分の設定です。共有ポイントに対してアクセスが可能な ユーザーアカウント を設定する ディレクティブ です。

ゲストユーザーは "guest ok" guest okディレクティブについて 、 "guest only" guest onlyディレクティブについて などでアクセスを制御しますので、 "valid users" の対象外となります。

ユーザーアカウントを複数設定したい場合は、スペースで区切って記述します。

注意して欲しいのは、この "valid users" ディレクティブは単純に 接続すること を許可するだけの設定だということです。

従って同じ共有ポイントに "read only" ディレクティブ read onlyディレクティブについて が "Yes" と設定されていたり、実際にアクセスするディレクトリにそのユーザーアカウントの書き換え権限がなければデータを書き込むことはできません。読み取り権限がなければ内容を参照することもできません。

一方、一見同じような設定を担っているように思える "write list" ディレクティブ write listディレクティブについて は、 共有ポイントにアクセス可能な場合に限って任意に書き換えが可能となる 設定です。

従って、 "write list" に記述されているユーザーアカウントは、共有ポイントに "read only" が "Yes" と設定されていても、その設定とは無関係に書き換えが可能になる強い権限を付与されますが、同じユーザーアカウントが "valid users" に設定されていなければアクセスそのものができませんから、事実上書き換えも何もできないことになります。

もう一つの管理権限のディレクティブである "admin users" admin usersディレクティブについて は、 共有ポイントにアクセス可能な場合に限って完全に"root"権限で振舞う という設定ですから、 "write list" と同じく "valid users" でアクセスが許可されなければ何もすることはできません。

また、 "write list" と "valid users" は役割だけでなく、その振る舞いにも大きな違いがあります。

"write list" ( "admin users" も同じ)の場合は、単純に「自由に書き換えを許可するユーザーアカウント」を追加するディレクティブで、何も設定しない場合( デフォルト )にはどのユーザーアカウントにも書き換え許可を与えません。

共用フォルダへの管理アカウントの設定例 の設定では、 "valid users" に何も設定していないので、ユーザーアカウント "tanaka" にも自動的にアクセス権が与えられるため、 "write list" に記述されている "tanaka" に自由なアクセスと自由な書き換えが許可されているわけです。
少しややこしいですね。

一方 "valid users" の場合、一つもユーザーアカウントを設定しない場合(デフォルト)は、意味が完全に逆転して 「すべてのユーザーに対してアクセスが許可される。」 という振る舞いをします。

ところが明示的に一つ以上のユーザーアカウントをパラメータとして設定すると、 自動的にそれ以外のユーザーからのアクセスが拒否 されるようになります。

説明が長くなりましが、この "保存版編集" 共有ポイントの場合、

1. "read only" に "No" が設定されている。

2. "valid users" に "tanaka" が設定されている。

3. 共有ディレクトリの所有者が "tanaka" で作成され、 パーミッション が "755" に設定されている。

ユーザーの権限に関する設定というのは何でもそうですが、「特権設定」は安易に使うべきではありません。
なぜならそういった「特権設定」は、わずかな設定ミスで巨大なセキュリティホールが空き易いという問題を抱えているためです。
Sambaでは、 "admin users" や "write list" などの「書き込み特権ディレクティブ」は、 他に手段がない場合 に使うようにしましょう。

という条件が設定されていますから、 "admin users" や "write list" といった「他の設定を無視して強制的に書き込み権限を与える」ディレクティブを使わずに、自由な読み書き権限を与えることができていることになります。

ところがお気づきの方もいるかも知れませんが、実際には2.の "valid users" への "tanaka" ユーザーアカウントの登録は必須ではありません。

なぜなら、 "valid users" が設定されていなければすべてのユーザーアカウントに対してアクセス許可が行われますが、ディレクトリ "/var/store" に書き込み権限があるのは、所有者である "tanaka" だけですので、他のユーザーは ログイン はできても書き込みはできないからです。

では、何のためにわざわざ "valid users" に "tanaka" をパラメータとして設定しているのでしょうか。

実は大した理由ではないのですが、この共有ポイントには「保存版編集」という共有名と"WriteEnable「書き込み可」"というコメントを付けていますので、この共有ポイントに "tanaka" 以外のユーザーアカウントがログインした場合には、実際には編集作業はできません。つまり、そのユーザーにとっては、共有名やコメントが「ウソ」になってしまいます。

そこで他のユーザーアカウントからのログインを強制的に禁止し、表記と矛盾する動作をできるだけ避けようとしているわけです。

"browseable"〜共有ポイントのアイコンの表示の有無

(2) の部分の設定です。 WindowsOS のファイル共有一覧画面である、 「マイネットワーク」 などに、共有ポイントの アイコン を表示するか否かを設定する ディレクティブ です。

デフォルト は "Yes" で「表示する」になっていますから、この設定を変更しなければ以下のように普通に共有ポイントが表示されることになります。

browseableディレクティブがYes(デフォルト)の場合
"browseable"ディレクティブが"Yes(デフォルト)"の場合

しかし、この「保存版編集」を開いて実際に編集作業ができるのは "tanaka" だけですから、ここにこのアイコンが表示されることは "tanaka" 以外には意味がありません。

一方、編集を担う "tanaka" にとっても、このアイコンが表示されるのは好ましくありません。

"tanaka" がこの「保存版編集」共有ポイントから ログイン して中のファイルやディレクトリを編集するのはそれが必要な場合だけで、普段は間違って書き換えや削除をしてしまわないように、書き換えのできない「保存版」からログインするべきです。

rootアカウントの危険性について(WBEL3) rootアカウントの危険性について(CentOS3) rootアカウントの危険性について(WBEL4) rootアカウントの危険性について(CentOS4) rootアカウントの危険性について(CentOS5) でも説明していますが、サーバー管理者は 「自分自身も信頼のできないユーザーの一人」 と考えて権限管理を行うべきだと考えます。
あなたも一人の人間ですから、ミスをしないということはあり得ないはずです。

ところがアイコンを開くだけで「保存版編集」を開くことができてしまうと、自分では「保存版」を開いたつもりだったのについうっかり「保存版編集」を開いていまい、大事な保存版のデータを書き換えてしまわないとも限りません。

そこでこの "browseable" ディレクティブを "No" に設定しておきます。するとこの「保存版編集」共有ポイントはアイコンとして表示されなくなりますので、間違えて開くことがないというわけです。

"保存版"及び"保存版編集"共有ポイントの動作確認

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

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

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

Samba及びSWATのバージョンが 3.0.25 以降の場合は、更に "available" ディレクティブを "yes" に設定しなければ表示されませんので注意してください 共有ポイントの有効/無効のデフォルト値の変更 。

以下のように 「保存版」 共有ポイントは表示されますが、 「保存版編集」 共有ポイントは表示されないはずです。

共有ポイントの表示例(browseableディレクティブがNoの場合)
共有ポイントの表示例("browseable"ディレクティブが"No"の場合)

この「保存版」共有ポイントはすべてのユーザーアカウントからアクセスできますが、編集作業は一切できない「読み取り専用」になってるはずです。

一方、この共有ポイントの中を編集可能な「保存版編集」共有ポイントにアクセスするには以下のようにアドレスバーに、

"\\web1\保存版編集"

と直接共有名を入力して 移動 ボタンをクリックするか Enter キーを押します。

保存版編集にアクセスする方法
"保存版編集"にアクセスする方法

すると ユーザーアカウント "tanaka" でアクセスした場合にのみ、以下のように共有ポイントが開いて書き込み作業が行えるようになります。

保存版編集が開いたところ
"保存版編集"が開いたところ

この"保存版"と"保存版編集"の二つの共有ポイントはそれぞれ全く異なる設定によって作られていますが、データの保存先はどちらも同じ "/var/store" なので、"保存版編集"共有ポイントで書き込みや編集が行われると、その内容はそのまま"保存版"共有ポイントで閲覧可能になるというわけです。

このページの先頭へ↑

ホームディレクトリの管理共有ポイントの作成

ホームディレクトリ を Samba の共有ポイントとして利用する場合 ホームディレクトリにSambaの共有ポイントを設定する 、それぞれのホームディレクトリ上のデータはその ユーザーアカウント にしか操作することができません。

サーバー の管理者であるあなたでさえ、現在の「基本的な」設定では、それぞれの ユーザーアカウント で ログイン しなければ、共有ポイントにアクセスすることが出来ないわけです。

例えば、複数のユーザーが共用するような一つの共有ポイントであれば、その共有ポイントに対して管理ユーザーの アカウント を設定するだけでよいのですが 共用フォルダに管理ユーザーを設定する 、ホームディレクトリは一つではありませんのでそれぞれの共有ポイントに管理ユーザーを設定するのは大変です。

そこで、 「すべてのホームディレクトリの共有ポイントを読み書き可能な、たった一つの共有ポイント。」 を作成してみましょう。

ただ、そういうことをすると「プライバシーの侵害だ!」とユーザー怒られるかもしれませんから、その共有ポイントは 「誰からも決して見えない」 ようにしてこっそり利用することにします。

ただ人によっては「自分はそんな姑息なことはしたくない!」と思う行為かもしれません。

しかしあなたはそもそも WBEL や CentOS の "root" 権限を使って 構築中のLinuxサーバー を自由に操ることが可能な立場にあるわけですから、今更そんなきれい事をいっても始まりません。

管理者は管理者として、サーバー上のデータをきちんと保守する必要があるわけですから、ここは割り切って考えても良いのではないでしょうか。

上の設定例"永久保存のための共有ポイントの作成"では、 「一つのディレクトリに対して複数の共有ポイントを設定する」 というテクニックを使って「権限の使い分け」を行いました。

基本的にはここでも同じ方法を使えば良いのですが、管理アカウントをホームディレクトリの数だけ準備するのは面倒ですし、ユーザーアカウントが増えたり減ったりするたびに共有ポイントを作ったり、削除したりするのも大変です。

そこでこの場合は、ホームディレクトリの共通の上位ディレクトリである "/home" に対して管理共有ポイントを作成します。

Samba は、互いに上下のディレクトリ関係にある二つのディレクトリに対してそれぞれに共有ポイントとしての設定が行われている場合、それぞれの設定はお互いに全く干渉しませんから、簡単に管理共有ポイントが設定できます。

ホームディレクトリを管理する共有ポイントの設定例

まず、 SWATの "SHARES" 画面の ファイル共有の作成 ボタンの右側の入力欄に新規の「共有名」を入力して、 ファイル共有の作成 ボタンを左クリックしてください。

ここでは「共有名」を "homes_admin" で設定してますが、もちろん全然別の名称でも構いません。

すると "homes_admin" という名称で共有ポイントが登録され、 Choose Share (ファイル共有の選択)ボタンの横に共有名が表示されるとともに、その下に設定項目が「標準表示」で現れますので、この画面を下にスクロールして以下のように設定を行ってください。

"comment" ディレクティブ commentディレクティブについて は任意です。自分でしか使わない共有ポイントですから、必要がなければ空欄で構いません。

"path" ディレクティブ pathディレクティブについて は、すべての ホームディレクトリ の上位にあたる "/home" に設定します。

"valid users" ディレクティブには、先ほどの設定例と同じく "tanaka" を設定して、アクセス可能なユーザーアカウントを限定してしまいます。

"admin users" ディレクティブ admin usersディレクティブについて には同じく "tanaka" を設定します。

このケースでは、管理者ユーザーアカウント "tanaka" は、自分以外の所有者に設定されているホームディレクトリを操作しなければなりませんから、ここはどうしても "root" によるファイル操作の権限が必要となるためです。

"write list" ディレクティブ write listディレクティブについて には、各ユーザーのホームディレクトリの内容の 書き換えや削除を行いたい場合にのみ "tanaka" を設定します。ただ中身をチェックするだけならば設定は不要です。

"admin users" に指定されたユーザーカウントは、すべてのファイル操作を "root" 権限で実行することができますが、書き換え・削除などについては別の許可設定が必要になります。

そこで、 "write list" に同じユーザーアカウントを設定するか、 "read only" ディレクティブに "No" を設定してすべてのユーザーアカウントに対して書き換え許可を行わなければなりません。

もちろん実用上はどちらでも構わないのですが、「特定のユーザーアカウントに対しての特権設定」ということを解りやすくするためには、 "write list" へ記述しておくほうが良いでしょう。

ちなみに、 "tanaka" を "admin users" に記述せず、 "write list" にだけ記述した場合にはどうなるかおわかりでしょうか?。

"write list" に記述されたユーザーアカウントが "root" の権限で実行することができるのは、ディレクティブの名前のとおり「書き込み・書き換え・削除」に関してだけです。

useradd コマンド で作成されたホームディレクトリは、 デフォルト で パーミッション "700" で作成されます。つまり「所有者のみオープン許可」になっていますから、 "write list" の権限ではこれを開くことができません。

つまり、

1.任意のディレクトリとファイルのオープンのために"admin_users"への"tanaka"の記述が必要。

2.任意のディレクトリとファイルに書き換えと削除のために"write list"への"tanaka"の記述が必要。

Samba及びSWATのバージョンが 3.0.25 以降の場合は、更に "available" ディレクティブを "yes" に設定する必要があります 共有ポイントの有効/無効のデフォルト値の変更 。

というわけです。

"browseable" ディレクティブは、上の設定例と同じく "No" に変更して共有ポイントのアイコン表示を禁止してしまいます。

上の"永久保存のための共有ポイントの作成"では、管理者のユーザーアカウント "tanaka" の操作ミスを抑制するためにアイコンを非表示としました。

要するに「みんなをこっそり管理する」というコンセプトを守るための設定というわけです。

しかしこのケースでは、 ホームディレクトリの管理共有ポイントの存在を隠す という理由で「非表示」としています。

"homes_admin"共有ポイントの動作確認

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

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

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

以下のように "homes_admin" 共有ポイントはアイコンとして表示されないはずです。

共有ポイントの表示例
共有ポイントの表示例

"homes_admin" 共有ポイントにアクセスするには以下のようにアドレスバーに、

"\\web1\homes_admin"

と直接共有名を入力して 移動 ボタンをクリックするか Enter キーを押します。

homes_adminにアクセスする方法
"homes_admin"にアクセスする方法

すると ユーザーアカウント "tanaka" でアクセスした場合にのみ、以下のように共有ポイントが開き、すべての ホームディレクトリ にアクセスできるようになります。

homes_adminが開いたところ
"homes_admin"が開いたところ

各ユーザーの、Samba上のホームディレクトリの パス を、 デフォルト の "/home/%u" から "/home/%u/samba" などに変更している場合 Sambaのホームディレクトリ共有ポイントに対する設定 には、Samba用の共有フォルダは各ホームディレクトリの中の "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