TrueNAS SCALE の SMB を ACL Editor でアクセス制御してみる をアップしてみました。
TrueNAS になって画面が若干変わったので
FreeNAS の SMB を 11.3 の ACL Manager で説明してみるの焼き直しです。
Dataset を作成するときに、SMB用にすると、ACLが適用されます。
Windows パソコンのために SMB 共有フォルダの ACL を設定する方法について考えてみます。
SMBの基本設定は、
Services > SMB の鉛筆アイコンから。
通常設定する部分は、
NetBIOS Name を既存のコンピューターと、下記のWorkgroup名と重複しないように15文字以下で決める(初期値はTrueNASのホスト名から生成される)
NetBIOS Alias エイリアス(別名)を15文字以下で設定できる。(任意)
Workgroup は既存の Windows の設定と合わせる(まんま「WORKGROUP」とか「MSHOME」とか。Windows マシン側のコンピュータのプロパティで確認してみてください。Windows 10はエクスプローラーでPCを右クリックしてプロパティ)
Description は説明なので希望があれば適当に変更してください。
□ Enable SMB1 support はSMB1でアクセスできなければならない環境がある時にチェックするんだけど、セキュリティ的に非推奨なので、できればSMB1でなければアクセスできない環境の方のアップデートを検討。
□ NTLMv1 Auth を有効にすると、Windows XPのような古いクライアントでの接続を助けますが、Windows 7以降のクライアントなどは接続できなくなったりするらしいです。こちらも特殊な環境でなければ非推奨。
ADVANCED OPTIONS
をクリックすると若干項目が増えるけど、Windowsのためだけの共有なら特にいじる部分はナシ。
共有する対象は、
Volume または、 Dataset か その中のフォルダになりますので、
Storage > Pools
Poolの右端の縦三点から
Add Dataset
で適当に作成してください。
Permission を GUI で設定できるので、共有フォルダごとに対応する Dataset を作成して設定するのがお勧めなのではないかと思います。
Name に共有フォルダとして使う予定の名前を指定するのを推奨
Share Type に SMB と指定して
SUBMIT。
他の項目や ADVANCED OPTIONS 、Mac や Linux からアクセスするにはどうしたらいいかという話はここでは一旦割愛。
(というかきりしまはデスクトップ環境は Windows のみなので待ってても増えません。MacはWindows共有にアクセスできるはずだし)
Linux 系のNAS製品のような管理をしたい場合は、
Case Sensitivity Sensitive か Mixed
Share Type Generic
とするのがいいでしょう。
できた Dataset の右側の縦三点をクリックして
Edit Permissions
とすると、
ACL Manager 画面に遷移する。
General で Dataset を作成すると従来型の Permission 画面に遷移するけど、今回は割愛。
(プリセット選択画面が出るので枠外クリック>USE PERMISSION EDITOR)
初期状態はこんな感じで、
User root Full Control
Group wheel Full Control
となっているのを、今までのよくあるパターンで設定するにはどうすればいいか、という話で進めます。
■ アクセス制限なし(誰でも読み書き)
ネットワーク内に自分以外のユーザーがいない、とか、小さなグループのネットワーク内の共有で、いちいちユーザー設定(アクセス権)なんて必要ない、という場合に利用するかと思います。
SELECT AN ACL PRESET
をクリックして
OPEN
を選択します。
owner@ Full Control フルコントロール
group@ Full Control フルコントロール
everyone@ Modify 変更
となるので、これで SAVE でいいと思います。
(owner root / group wheelのまんま)
すると、
Sharing > Windows Shares (SMB)
に移動するので、
右端の縦三点からEdit
ADVANCED OPTIONS
Allow Guest Access をチェック
こうすると、TrueNAS上に該当するユーザーがいなくてもアクセスが可能になります。
ただし、新しめのWindowsだと
「組織のセキュリティポリシーによって非認証のゲストアクセスがブロックされているためこの共有フォルダーにアクセスできません」
とか言われて、セキュリティーポリシーの変更が必要かもしれません。
■ TrueNASのユーザーとグループでアクセス制限
TrueNAS は Account のところでユーザーを作成したり、グループを作成したりできます。 ユーザーを作成する際に、自動的にユーザー名と同じグループを作成したりすることもできます。このユーザーやグループを使用して共有フォルダへのアクセス権を設定することができます。 関係者のユーザーをそれぞれ作成してアクセス権を制御します。
ユーザーやグループを変更するときは、
▼から選んだら、
Apply User や Apply Group
をチェックしてSAVEします。
その上で以下の●印の項目でご自身の希望に近い設定を行ってみてください。
(上記だけで済むわけではありません)
● 自分のみ読み書き、他には非公開
(自分専用)SELECT AN ACL PRESET で、
RESTRICTED
owner@ FullControl
group@ Modify
User に自分、
Geoup に自分グループを指定してそれぞれApplyにチェックを入れてSAVE。
これで FreeNAS の共有フォルダにアクセスできるのは自分と、自分グループのメンバーのみとなり、自分グループに自分以外を追加しなければ、家族や同僚から覗かれなくなります。
● 自分と、指定したユーザーのみ読み書き、他には非公開
(クローズドなメンバー間)
上記の設定で、
設定した自分グループにメンバーを追加する。
何種類かやり方はあるけど、
Accounts > Groups
で
対象の Group の > から MEMBERS
左枠内から他のユーザーを選択して → で右に追加して
SAVE
とかで。
● 自分のみ読み書き、他には読み取り専用
(自分が管理者で、他の利用者に提供する。他の利用者はユーザー登録不要。ドライバ置き場など)
SELECT AN ACL PRESET
をクリックして
OPEN
を選択します。
User に自分、
Geoup に自分グループを指定して
右側の3番目
everyone@
の
Modify を Read に変更して
SAVE
Sharing > Windows Shares (SMB)
で、
右端の縦三点からEdit
ADVANCED OPTIONSをクリックして
Allow Guest Access をチェックして
SAVE
● 自分と、指定したユーザーのみ読み書き、他のユーザーには読み取り専用
(自分を含む特定のメンバーで管理して…)
上の設定で、
右側の3番目、Read (読み取り専用)にした
everyone@
を
Group
に変更、
下に出現する Group * で2つ目のグループを指定する。
Sharing > Windows Shares (SMB)
で、
右端の縦三点からEdit
ADVANCED OPTIONS
Allow Guest Access はチェックしない
(メンバー外はアクセスできない)
という感じで、とりあえずありそうなパターンを挙げてみましたが、これ以上凝ったことをしたい人は各自で研究するなりしてください。
ADD ACL ITEM
で右側の項目が増やせるのでいろいろ試して見ればいいと思います。
Who のところで User を選択して、
次の行で対象のユーザー指定して、
ユーザー個別に設定とか。
TrueNAS上に作成したユーザーと、Windows で使用しているユーザーアカウントとが同一で、パスワードとが一致していると、共有フォルダにアクセスするときにいちいち聞かれないので便利です。なお、Windows 側がマイクロソフトアカウントと統合してしまっていたり、日本語名のアカウントを作成してしまったりしていて同じものを設定できない場合は、共有フォルダに接続するときに表示されるダイアログで作成したユーザーとパスワードを指定して記憶させればいいです。登録されていないユーザーもこのユーザー名とパスワードが分かってれば同じ権限でアクセスできるわけです。(マイクロソフトアカウントと統合している場合は、TrueNAS側のユーザーの設定で Microsoft Account という項目があるので、それでなんとかなるのかも知れません)
うまく設定できない、という記事を見かけましたが、「TrueNASと同一のユーザー名でパスワードの違うアカウント」があると一筋縄ではいかなくなります。(どうしてそんな運用がしたいのかはわかりませんが、メーカー製のプレインストールPCとか漫然と初期状態のまま使ってると危ないかも)そのような場合は、TrueNAS側の同一のユーザー名をあえて削除して、明確に違うユーザー名を使うようにするか(そうすれば接続時にネットワーク資格情報を訊かれます)、Windows 側で、ユーザー名を変えて作り直すか、Windows側で、資格情報マネージャーを使って、Windows資格情報として、当該のTrueNASへ作成されているユーザーとパスワードを指定する方法でしょうか。資格情報を登録したらパソコンを再起動してから試してみてください。
どうしても再起動せずに反映させたい場合は、
net use * /DELETE
を実行することで、キャッシュされていたアクセス権がリセットされます。
(それでもうまくいかない場合はなにはともあれ Windows を再起動)
SMB のオプション
□ Export Rycycle Bin
はSMBで作成すると有効にならないので、
Generic で作成するか、一旦 Strip ACL する必要がある。
ACL のオプション
File Information
Path 変更するデータセットの場所。変更不可。変更っていうか作り直し。
User データセットを制御するユーザー。このユーザーは、常にACLの読み取りまたは書き込み、および属性の読み取りまたは書き込みの権限を持っています。手動で作成したユーザーまたはディレクトリサービスからインポートしたユーザーがドロップダウンメニューに表示されます。
□ Apply User プルダウンで選択したユーザーへの変更を適用する
Group データセットを制御するグループ。このグループには、@groupタグに付与されているすべての権限があります。手動で作成したグループやディレクトリサービスからインポートしたグループは、ドロップダウンメニューに表示されます。
□ Apply Group プルダウンで選択したグループへの変更を適用する
SELECT AN ACL PRESET ACLのプリセットを選択して適用します。エントリを選択すると、一般的なアクセス権の状況に合わせて設定されたプリセットACLがロードされます。
OPEN オープン、ネットワーク内の全ての端末が信用できるとき
RESTRICTED 通常のアクセス制限
HOME 家庭用、程々に信用できるとき、ユーザー以外は移動と実行のみ(Traverse)
Access Control List
Who アクセス制御エントリ(ACE)ユーザーまたはグループ。このエントリの特定のユーザーまたはグループを選択します。このエントリを選択したユーザーに適用するにはowner@を、選択したグループに適用するにはgroup@を、このエントリをすべてのユーザーとグループに適用するにはeveryone@を選択します。User や Groip を指定すると、次の項目で特定のユーザーやグループを対象に指定できます。setfacl(1) NFSv4 ACL ENTRIESを参照してください。
User このACLエントリーが適用されるユーザー・アカウント。選択したタグが User の場合にのみ表示されます。
Group このACLエントリーが適用されるグループ。選択されたタグが Group の場合にのみ表示されます。
ACL Type 選択した [Who] にPermissions[権限]を適用する方法。Allow「許可」 を選択して指定した権限を付与し、 Deny「拒否」 を選択して指定した権限を制限します。
Permissions Type アクセス許可の種類を選択します。Basic[基本]は、一般的なアクセス許可を示します。Advanced[詳細] には、詳細に制御するための各アクセス許可の種類が表示されます。
- Read ファイルまたはディレクトリの内容、属性、名前付き属性、および ACL を表示します。Traverse パーミッションを含む。
- Modify ファイルまたはディレクトリの内容、属性、名前付き属性を調整します。新しいファイルまたはサブディレクトリを作成します。Traverse パーミッションを含む。ACLの内容や所有者の変更は許可されていません。
- Travarse ファイルを実行したり、ディレクトリを移動したりします。ディレクトリの内容は、Read パーミッションも適用されていない限り、表示が制限されます。ディレクトリ内のファイルをトラバースして表示し、個々のファイルを開くことができないようにするには、Traverse パーミッションと Read パーミッションを設定し、Advanced Directory Inherit フラグを追加します。
- Full Contrtol すべてのパーミッションを適用します。
Permissions 選択したタグに適用する権限を選択します。選択肢は、権限タイプによって異なります。各権限の説明については、権限リストを参照してください。
Flags Type 表示するACE継承フラグのセットを選択します。Basic[基本] は、不特定の継承オプションを示します。Advanced[詳細] は、より詳細に制御するための特定の継承設定を示します。
Flags このACEをデータセット内の新しく作成されたディレクトリおよびファイルに適用する方法。Basic[基本]フラグはACEの継承を有効(Inherit)または無効(No Inherit) にします。Advanced[詳細]フラグを使用すると、データセット内のファイルとディレクトリにACEを適用する方法を詳細に制御できます。
Advanced
□ Apply permissions recursively 現在のデータセットのすべての子データセットに権限を再帰的に適用します。
STRIP ACLS 現在のデータセットからすべてのACLを削除する場合に設定します。常にディレクトリおよび子データセットから再帰的にACLが削除されます。
追加のACEを作成するには、ADD ACL ITEM(ACL項目を追加) をクリックし、追加したフィールドを設定します。ACLにはACEが1つ必要です。
Managing Access Control Listsも参考にするといいでしょう。