FreeNAS 11.1の画面使って、SMB版を作り直してみました。
FreeNAS の SMB を説明してみる
FreeNAS の CIFS といっても Samba なわけで、特別なことはないと思うのですが、よく考えたら、FreeNAS を使うまで Samba なんて使ったことがない人などもいるかもしれないし、それこそそのコストパフォーマンスから、初NASだったりする人もいるのだろうなあ、と思って、自分が普段設定するときのいつもの設定内容(FreeNAS 9.3 の手動初期設定)だけでなくて、もう少し説明があってもいいかな、と思いました。
FreeNAS Documentation の 9.3 の 10.4. Windows (CIFS) Shares の内容の抜粋に近いです。(あっちの説明は設定部分は Wizard 利用前提なので違いますが)
Windows (CIFS) Share の設定は、
Services - CIFS
のところで行うことができます。
FreeNAS 9.3 の手動初期設定で設定している部分は、
NetBIOS name: を既存のコンピューターと、下記のWorkgroup名と重複しないように決めることと、
Workgroup: を Windows の設定と合わせること(まんま「WORKGROUP」とか「MSHOME」とか。コンピュータのプロパティで確認してみてください)
DOS charset: CP932(日本語Windowsからアクセスする場合はコレ)
と設定してください。(FreeNAS Documentation 11.3. CIFS)
共有する対象は、
Volume または、 Dataset か その中のフォルダになりますので、
適当に作成してください。
Permission を GUI で設定できるので、共有フォルダごとに Dataset を作成して設定するのがお勧めなのではないかと思います。
続いて共有フォルダ自体は、
Sharing - Windows (CIFS) Shares - Add Windows (CIFS) Share
から作成することでができます。
ということで、オフィシャルのドキュメントにもあるありがちな設定パターンを紹介してみます。
■ アクセス制限なし
(誰でも読み書き)
ネットワーク内に自分以外のユーザーがいない、とか、小さなグループのネットワーク内の共有で、いちいちユーザー設定(アクセス権)なんて必要ない、という場合に利用するかと思います。
Volume を選択して、 Create Dataset
対象のDatasetを作成します。
オプションはデフォルトのままでもいいでしょう。
できたDatasetを選択して、Change Permissions で、
Mode: の Other の Write にチェックを入れます(アクセス制限なしなんだからぶっちゃけ全チェックでOK) Owner (user) Owner (group) はデフォルトのroot、wheelのままでOKです。(この共有しか作らなくてアクセス制御する必要がないのなら、Datasetも作成せずに、Volume自体を共有してFreeNAS上にいちいちユーザーを追加する必要もありません)
Sharing - Windows (CIFS) Shares - Add Windows (CIFS) Share
から、Path に作成したDataset を指定して、
Name に任意の共有名を指定して、
Allow Guest Access: をチェックしてOKをクリックします。
■ ドメインコントローラーでアクセス制限
すでにドメインコントローラーを立てている時点でここで説明する必要はないと思うので省略。
Windows の側で設定できたりするけど、Samba とドメインコントローラーでの間の不具合とかにも注意が必要。
■ FreeNASのユーザーとグループでアクセス制限
FreeNAS は Account のところでユーザーを作成したり、グループを作成したりできます。
ユーザーを作成する際に、自動的にユーザー名と同じグループを作成したりすることができます。このユーザーやグループを使用して共有フォルダへのアクセス権を設定することができます。
その場合は、Add Windows (CIFS) Shareのところでは、
Allow Guest Access:
のチェックを外しておきます。
FreeNAS上に作成したユーザーと、Windows で使用しているユーザーアカウントとパスワードとが一致していると、共有フォルダにアクセスするときにいちいち聞かれないので便利ですが、Windows 側がマイクロソフトアカウントと統合してしまっていたり、日本語名のアカウントを作成してしまったりしていて同じものを設定できない場合は、共有フォルダに接続するときに表示されるダイアログで作成したユーザーとパスワードを指定して記憶させればいいです。登録されていないユーザーもこのユーザー名とパスワードが分かってれば同じ権限でアクセスできるわけです。(もっとも、それを区別するためにいちいち FreeNAS にユーザーを登録するのですけどね)
うまく設定できない、という記事を見かけましたが、「同一のユーザー名でパスワードの違うアカウント」があると一筋縄ではいかなくなります。そのような場合は、FreeNAS側の同一のユーザー名を削除して、明確に違うユーザー名を使うようにするか、Windows 側で、ユーザー名を変えて作り直すか、資格情報マネージャーを使って、Windows資格情報として、当該のFreeNASへアクセスするときのユーザーとパスワードを指定する方法でしょうか。資格情報を登録したら再起動してから試してみてください。
この辺は FreeNAS や CIFS 側の問題というより、Windows 8 以降のマイクロソフトアカウントとローカルアカウント側の問題なので割愛。
● 自分のみ読み書き、他には非公開
(自分専用)
ユーザー1人であれば、
Storage - Volumes - から
対象の Dataset を選択して、Change Permissions で、
Owner (user): にそのユーザーを指定します。
Mode: の Owner の Read/Write/Execute にチェックを入れ、
Group と Other は全てチェックを外します。
家族や同僚から覗かれなくなります。
● 自分のみ読み書き、他には読み取り専用
(自分が管理者で、他の利用者に提供する。他の利用者はユーザー登録不要。ドライバ置き場など)
Owner (user): にそのユーザーを指定し、
Mode: の Owner の Read/Write/Execute にチェックを入れ、
Group と Other は Write のチェックを外します。
誰でもアクセスできるように、
CIFS Share の設定は Allow Guest Access をチェックします。
● 自分と、指定したユーザーのみ読み書き、他には非公開
(自分が管理者で、他の利用者の一部との間でのみ共有する。幹部用ファイルなど)
Owner (user): に自分ユーザーを指定し、
Owner (group): に許可するユーザーを指定するグループを指定します。簡単なのは、Owner (uesr) の名前のグループを使用することでしょうか。もちろん共有名のグループを作成する方法もあると思います。
Mode: の Owner/Group の Read/Write/Execute にチェックを入れ、
Other は全てのチェックを外します。
また、自分以外のアクセスを許可するユーザーは、ユーザーを作成し、
そのユーザーの Auxiliary groups: で当該のグループ名を選択して「>>」で Selected にしておきます。
自分専用のFreeNASの場合は、rootユーザーとrootのパスワードをWindowsに記憶させてそれでアクセスする例もありますし、小数のメンバー間であれば、rootのパスワード自体を共有することなどもあるでしょうが、一応、上記のような設定をして、それぞれのユーザーを作成するのがセオリーなんじゃないかな、と書いてみました。
とりあえずありそうなパターンを挙げてみましたが、こんな感じで、Dataset の Permission のチェックの入れ方と、user、group の設定、 CIFS の Allow Guest Access などでアクセス権を制御するのが FreeNAS の GUI でやる場合の方法ではないかと思います。
複数のグループやグループの入れ子で管理したい場合はこの設定の範囲では賄えません。
Samba と ActiveDirectory の連携もバージョンによってうまくいかなかったりすることがあります。
あくまで GUI の範囲で管理できる程度、というイメージで例を挙げてみました。
なお、Windows でアクセスする場合、アクセス権がキャッシュされているので、設定した内容が即反映されないせいでうまくいっていないものと思われることがあります。
そのような場合は、Windowsのコマンドラインで、
net use * /DELETE
を実行することで、キャッシュされていたアクセス権がリセットされます。
■ 各パラメータの説明
上記で触れなかったパラメータも含め翻訳に挑んでみました。
Table 10.4a: Options for a CIFS Share
Path Volume やその中に作成した Dataset やその中の Directory を指定します。実際にデータが格納される場所です。アクセス権の制御を FreeNAS 上で行うためには、 Dataset を設定するのがいいと思いますが、特に制御する必要がない場合は Volume や Directory でもいいでしょう。
Use as home share ユーザーごとにホームディレクトリを持たせることができますが、それを固定する設定です
Name 共有名です。
Comment 共有の説明です。
Apply Default Permissions アクセス権をowner/groupに読み書き、otherに対して読みの設定をします。すでに存在するファイルのアクセス権をリセットしたいときなどに使うのがいいでしょうか。
Export Read Only 読み取り専用で公開します。
Browsable to Network Clients Windowsのエクスフローラーなどでたどっても見えない共有フォルダにします。フォルダのフルパスを直接指定すれば開けます。(Windowsの「$」をつけた隠し共有に似ています)
Export Recycle Bin 削除する操作の時、ファイルを共有フォルダの直下に作成する隠しフォルダ .recycle に移動します。ネットワークごみ箱的なオプションです
Show Hidden Files Unix系の、「.」(ドット)で始まるファイル名を非表示にしません。
Allow Guest Access 全てのユーザーがパスワードなしで接続でき、その場合 CIFS Settings の Guest account: で指定したユーザーでアクセスしているかのように扱います。ユーザーアカウントとパスワードが一致するユーザーからのアクセスは Guest account ではなく扱われるので、この設定をする場合は、次の Only Allow Guest Access も同時に有効にしたほうがアカウント設定の混乱は避けられるかも知れません。
Only Allow Guest Access Allow Guest Access がチェックされている時に限り、全てのアクセスを Guest アクセスとします。
Hosts Allow 指定したホスト名かIPアドレスからのみ接続を許可します。カンマかスペースかタブで区切って複数指定が可能です。
Hosts Deny 指定したホスト名かIPアドレスからの接続を禁止します。特定のホストやIPアドレスのみ許可する場合は、こちらに「ALL」を指定して、Hosts Allow に許可するホストやIPアドレスを指定します。
VFS Objects 追加のモジュールを指定します。それぞれの項目の内容は割愛します。この部分が気になるような人はこの記事で設定とかするべきではないでしょう。
Periodic Snapshot Task すでに設定済みの Snapshot タスクがある場合、その設定をコピーして、この共有用に利用することができます。
Auxiliary Parameters 上記のオプションではサポートされていない smb4.conf で指定するようなパラメータを記述します。