11.3版を書いてみました。
FreeNAS 11.3 で SMB 共有を設定する
FreeNAS の SMB を 11.3 の ACL Manager で説明してみる
FreeNAS の SMB を説明してみるの焼き直しです。
(FreeNASのUIが11.2でガラリと変わってしまったので)
FreeNAS の SMB といってもいわゆる Samba なわけで、特別なことはないと思うのですが、よく考えたら、FreeNAS を使うまで Samba なんて使ったことがない人などもいるかもしれないし、それこそそのコストパフォーマンスから、FreeNASこそが初NASだったりする人もいるのだろうなあ、と思って、自分が普段設定するときのいつもの設定内容(FreeNAS 11.2 のインストール参照)だけでなくて、もう少し説明があってもいいかな、と思いました。
英語ですが、チャレンジングな方は FreeNAS Documentation の 11.2-U2 User Guide の 11.4. Windows (SMB) Shares も参考にしてみてください。
※画像の右が切れていますが、オリジナルサイズの画像をリンクしているのでクリックして見ていただければ…
Windows (SMB) Shares の基本設定は、
Services - SMB のところでできます。
通常設定する部分は、
NetBIOS Name を既存のコンピューターと、下記のWorkgroup名と重複しないように15文字以下で決める(初期値はFreeNASのホスト名から生成される)
NetBIOS Alias エイリアス(別名)を15文字以下で設定できる。(任意)
Workgroup は Windows の設定と合わせる(まんま「WORKGROUP」とか「MSHOME」とか。コンピュータのプロパティで確認してみてください)
Description は説明なので適当に。
□ Enable SMB1 support はSMB1でアクセスできなければならない環境の時にチェック(セキュリティ的に非推奨)
DOS Charset CP932(日本語Windowsからアクセスする場合はコレ)
と設定してください。(FreeNAS 11.2-U2 User Guide 12.13. SMB)
NTLMv1 Auth を有効にすると、Windows XPのような古いクライアントでの接続を助けますが、Windows 7以降のクライアントなどは接続できなくなったりするらしいです。こちらも特殊な環境でなければ非推奨。
共有する対象は、
Volume または、 Dataset か その中のフォルダになりますので、
適当に作成してください。
Permission を GUI で設定できるので、共有フォルダごとに対応する Dataset を作成して設定するのがお勧めなのではないかと思います。
Poolの左のvをクリックして、Dataset を表示させて右の「・・・」から Edit Permissions 。
初期設定はこんな感じ。
続いて共有フォルダ自体は、
Sharing - Windows (SMB) Shares - ADD
から作成することでができます。
パスをマウスで指定したい場合は、/mntの左側の▼をクリックして展開していきます。
ということで、オフィシャルのドキュメントにもあるありがちな設定パターンを紹介してみます。
■ アクセス制限なし
(誰でも読み書き)
ネットワーク内に自分以外のユーザーがいない、とか、小さなグループのネットワーク内の共有で、いちいちユーザー設定(アクセス権)なんて必要ない、という場合に利用するかと思います。
Volume の右側の 「・・・」より Add Dataset
対象のDatasetを作成します。
オプションはデフォルトのままでもいいでしょう。
できたDatasetを選択して、Edit Permissions で、
Mode: の Other の Write にチェックを入れます(アクセス制限なしなんだからぶっちゃけ全チェックでOK) Owner (user) Owner (group) はデフォルトのroot、wheelのままでOKです。(この共有しか作らなくてアクセス制御する必要がないのなら、Datasetも作成せずに、Volume自体を共有してFreeNAS上にいちいちユーザーを追加する必要もないかもしれません)
Sharing - Windows (SMB) Shares - ADD
から、Path に作成したDataset を指定して、
(必要なら Name に任意の共有名を指定して)
Allow Guest Access: をチェックしてOKをクリックします。
(たぶんここのテキストはバグで Only Allow Guest Access になっているのだと思います。フォーラム等でも指摘があるのですぐ直ると思います)
■ ドメインコントローラーでアクセス制限
すでにドメインコントローラーを立てている時点でここで説明する必要はないと思うので省略。クライアントの Windows の側のUIで設定できたりするわけだけど、Samba とドメインコントローラーでの間の不具合とかにも注意が必要。
Windows のクライアント側でアクセス権を設定するのもいまいちインターフェースが洗練されていないのでオススメしない。途中のフォルダから下が別の共有フォルダから持ってきたせいでアクセス権がちぐはぐ、とかあるある過ぎる。
■ FreeNASのユーザーとグループでアクセス制限
FreeNAS は Account のところでユーザーを作成したり、グループを作成したりできます。
ユーザーを作成する際に、自動的にユーザー名と同じグループを作成したりすることができます。このユーザーやグループを使用して共有フォルダへのアクセス権を設定することができます。
その場合は、Windows (SMB) Share - ADDのところでは、
Allow Guest Access:
のチェックを外しておきます。
その上で以下の●印の項目でご自身の希望に近い設定を行ってみてください。
(上記だけで済むわけではありません。また、このアクセス権の管理方法は、FreeNAS側のGUIで完結する為に Unix というか Samba 一辺倒です。Windows 形式で制御したい方は研究してみてください)
FreeNAS上に作成したユーザーと、Windows で使用しているユーザーアカウントとパスワードとが一致していると、共有フォルダにアクセスするときにいちいち聞かれないので便利ですが、Windows 側がマイクロソフトアカウントと統合してしまっていたり、日本語名のアカウントを作成してしまったりしていて同じものを設定できない場合は、共有フォルダに接続するときに表示されるダイアログで作成したユーザーとパスワードを指定して記憶させればいいです。登録されていないユーザーもこのユーザー名とパスワードが分かってれば同じ権限でアクセスできるわけです。(もっとも、それを区別するためにいちいち FreeNAS にユーザーを登録するのですけどね)
うまく設定できない、という記事を見かけましたが、「同一のユーザー名でパスワードの違うアカウント」があると一筋縄ではいかなくなります。(どうしてそんな運用がしたいのかはわかりませんが、メーカー製のプレインストールPCとか漫然と使ってると危ないかも)そのような場合は、FreeNAS側の同一のユーザー名をあえて削除して、明確に違うユーザー名を使うようにするか(そうすれば接続時にネットワーク資格情報を訊かれます)、Windows 側で、ユーザー名を変えて作り直すか、Windows側で、資格情報マネージャーを使って、Windows資格情報として、当該のFreeNASへ作成されているユーザーとパスワードを指定する方法でしょうか。資格情報を登録したらパソコンを再起動してから試してみてください。
こんな画面でFreeNASに設定しているユーザー名とパスワードを入力し、資格情報を記憶する。
この辺は FreeNAS や SMB 側の問題というより、Windows 8 以降のマイクロソフトアカウントとローカルアカウントの機能の側の問題なので割愛。
(ユーザーの設定のところに、 Microsoft Account というチェックボックスがあるのでなんかできるんじゃないかとは思いますが)
● 自分のみ読み書き、他には非公開
(自分専用) ユーザー1人であれば、 Storage - Volumes - から 対象の Dataset を選択して、Edit Permissions で、 User にそのユーザーを指定します。 Mode の Owner の Read/Write/Execute にチェックを入れ、 Group と Other の Read/Write/Execute は全てチェックを外します。これで FreeNAS の共有フォルダを家族や同僚から覗かれなくなります。
● 自分のみ読み書き、他には読み取り専用
(自分が管理者で、他の利用者に提供する。他の利用者はユーザー登録不要。ドライバ置き場など)
User にそのユーザーを指定し、
Mode の Owner の Read/Write/Execute にチェックを入れ、
Group と Other は Read と Execute にチェックを入れ、Write のチェックを外します。
誰でもアクセスできるように、
(Only) Allow Guest Access をチェックします。
本当の意味での Only Allow Guest Access は、ADVANCED MODE をクリックして出てくる方のはず。
● 自分と、指定したユーザーのみ読み書き、他には非公開
(自分が管理者で、他の利用者の一部との間でのみ共有する。幹部用ファイルなど)
User に自分ユーザーを指定し、
Group に許可するユーザーを指定するグループを指定します。簡単なのは、User の名前のグループを使用することでしょうか(ユーザー作成時に同時に作成するようにしていれば)。もちろん共有名のグループを別途作成する方法もあると思います。
Mode の Owner/Group の Read/Write/Execute にチェックを入れ、
Other は全てのチェックを外します。
また、自分以外のアクセスを許可するユーザーは、それぞれユーザーを作成し、
そのユーザーの Auxiliary groups で当該のグループ名をクリックしてチェックされた状態にしておきます。
(ユーザーグループ rei に登録してるところ。-のところをクリックして選択・解除)
自分専用(ネットワーク内に自分しかいない)のFreeNASの場合は、rootユーザーとrootのパスワードをWindowsに記憶させてそれでアクセスしている例も他のサイトでよく見かけますし、少人数の信頼できるメンバー間であれば、rootのパスワード自体を共有することなどもあるでしょうが、一応、上記のような設定をして、それぞれのユーザーを作成するのがセオリーなんじゃないかな、と書いてみました。
とりあえずありそうなパターンを挙げてみましたが、こんな感じで、Dataset の Permission のチェックの入れ方と、User、Group の設定、 SMB の Allow Guest Access などでアクセス権を制御するのが FreeNAS の GUI でやる場合の方法ではないかと思います。
複数のグループやグループの入れ子で管理したい場合はこの設定の範囲では賄えません。
Samba と ActiveDirectory の連携もバージョンによってうまくいかなかったりすることがあります。
あくまで GUI の範囲で管理できる程度、というイメージで例を挙げてみました。
なお、Windows でアクセスする場合、アクセス権がキャッシュされているので、設定した内容が即反映されないせいでうまくいっていないものと思われることがあります。
そのような場合は、Windowsのコマンドラインで、
net use * /DELETE
を実行することで、キャッシュされていたアクセス権がリセットされます。
(それでもうまくいかない場合はなにはともあれ Windows を再起動)
■ 各パラメータの説明
上記で触れなかったパラメータも含め翻訳に挑んでみました。 画面は Advanced Mode の内容。(Basic Modeは項目が少なくなってるだけ)Table 11.4.1 SMB Share Options
Path Volume やその中に作成した Dataset やその中の Directory を指定します。実際に共有され、データが格納される場所です。アクセス権の制御を FreeNAS 上で行うためには、 Dataset を設定するのがいいと思いますが、特に制御する必要がない場合は Volume 自体や Directory でもいいでしょう。
Name 共有名です。
Use as home share ユーザーごとにホームディレクトリを持たせることができますが、それを固定する設定です。共有1つのみ有効です。
Time Machine この共有を Time Machine 用に設定します。Apple (AFP) Shares でなくてもできるようになったらしいです。
Default Permissions ACLを Owner と Group に読み書き、Othersに読み取り専用設定します。独自の設定にしたい場合はチェックを外します。
Export Read Only 読み取り専用で公開します。
Browsable to Network Clients チェックを外すとWindowsのエクスフローラーなどでたどっても見えない共有フォルダにします。フォルダのフルパスを直接指定すれば開けます。(Windowsの「$」をつけた隠し共有に似ています) /home を共有する場合は他のユーザーのフォルダが見えないようにチェックを外します。
Export Recycle Bin 削除する操作の時、ファイルを共有フォルダの直下に作成する隠しフォルダ .recycle に移動します。ネットワークごみ箱的なオプションです
Show Hidden Files Unix系の、「.」(ドット)で始まるファイル名のファイル( .foo みたいな)にWindowsの隠し属性を設定しません。新たに作成されるファイルにのみ適用され、既存のファイルには無効です。
Allow Guest Access 全てのユーザーがパスワードなしで接続でき、その場合 SMB の 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 で指定するようなパラメータを記述します。