Windows Serverのフォルダ共有や権限回りのNTFSって難しいですよね。
私はここでかなり苦労をしたので、メモを残しておきます。
このメモを残すにあたり、AWSのEC2でWindows Server2022を3台程度用意して、それぞれADサーバ、PC想定のサーバ、PCからアクセスを受ける想定のサーバを用意して、設定を入れています。
アクセスを受けるサーバに対して、フォルダ共有/NTFSの設定を入れ、PC想定のサーバでフォルダアクセスをしてみたりしてます。
フォルダ共有とは
ネットワーク経由で他のパソコンからサーバーや特定のPC内にあるフォルダにアクセスし、データを読み書きできるようにする仕組みです。
以下のスクリーンショットは私のWindows PCからLinuxPCで共有化しているフォルダにアクセスしている図になります。フォルダ共有をしておかないとわざわざSSHとかRDP接続をしてデータにアクセスしないといけません。
フォルダ共有とNTFSの違い
Windowsのフォルダ共有について話が上がると必ずと言っていい程一緒に話題に上がるのが、NTFSです。
私も正直わかっていない部分があったのですが、以下のような違いがあります。
フォルダ共有:SMB経由でアクセスしてくるユーザに対してのみ機能するもの。RDPで直接入ってくる人には関係がない。
NTFS(New Technology File Systemの略らしい):SMB経由であろうがRDPで入ってこようが関わらず常に適用されるもの。
| 項目 | 正式名称 | 役割 | 特徴 |
|---|---|---|---|
| フォルダ共有 | 共有アクセス許可 (Share Permissions) |
ネットワークの入り口での制限 | ネットワーク経由のアクセスにのみ適用される。 「玄関の鍵」のようなもの。 |
| NTFS | NTFSアクセス許可 (NTFS Permissions) |
データそのものへの制限 | ネットワーク経由でも、サーバーを直接操作しても適用される。 「金庫の鍵」のようなもの。 |
Windowsのフォルダ共有は「共有アクセス許可」と「NTFSアクセス許可」という2つの壁があって。これらは「両方の条件を満たす(より厳しい方が適用される)」というルールで動作していきます。
ベストプラクティスとしては「共有許可はEveryoneで全開放し、NTFS許可で絞る」というのと「Everyoneを消してDomain UsersやAuthenticated Usersにだけ開放する」という方法もあるようです。共有許可でEveryoneで範囲を広げるとセキュリティ的にどうなんだというご意見が出るのはすごくよくわかるのですが、例えここで「誰でもアクセスできる!」状態になっていても、「NTFSの方ではじかれるので問題ないよ!」という思想の様です。
イメージ的にはいかのようになるでしょうか。
こちらは共有をEveryoneとして、NTFSで絞っているようなイメージです。
フォルダにはアクセス出来るがNTFS側で拒否されるので、結局アクセスできません。
ユーザーはネットワーク越しにサーバーの共有フォルダの入口までは到達できます。しかし、中に入ろうとするとNTFSアクセス許可(金庫の鍵)のチェックが走り、権限がなければ「アクセスが拒否されました」となります。

共有でDomain UsersやAuthenticated Usersのイメージです。
共有段階ではじく設定をしているので、より安全です。万が一NTFS側で設定に誤りがありEveryoneにフルコンで開いていたとしても、その全段階であるSMBではじけます。
「敷地の門(共有)で社員証(認証)をチェックし、部外者(Guest/匿名)を門前払いする。さらに中の建物(NTFS)でも鍵をチェックする」。そんな感じです。

Everyone
文字通り、そのコンピューターにアクセスできる全てのユーザーが含まれます。
注意点: 設定によっては、パスワードを知らない「Guest(ゲスト)」アカウントや、認証されていない「匿名ユーザー」も含まれる場合があるため、セキュリティリスクが最も高い
Domain Users
「ドメインの一般ユーザー全員」を意味するグループです。
会社などのドメイン環境(Active Directory)で、ユーザーを作成すると自動的にこのグループに入ります。
Authenticated Userd
「認証(ログイン)に成功した人全員」を意味するグループです。
Everyoneと似ていますが、決定的な違いは「Guest(ゲスト)」や「匿名ユーザー」を含まないことです。
メリット: 「身元がはっきりしている人だけを通したい(部外者は排除したい)」という場合に、Everyoneの代わりとして使うのが推奨される安全なグループです
アクセスベースの列挙(ABE:Access-based Enumeration)
Windowsでフォルダ共有をしないといけない時に、覚えておいた方が良いものとして「アクセスベースの列挙」というのがあげれらます。(私はこの存在を知らず2,3週間は悩ませられました。情けない限り。AIの助言が無かったら完全に詰んでました。)
これが有効化されていると共有フォルダにアクセスした際、そのユーザーに閲覧権限がないファイルやフォルダは一覧に表示されなくなります。(ユーザから隠すことが出来ます。)
フォルダを共有化する際、フォルダを右クリックしてプロパティから共有タブで設定を入れ込んでいくと思うのですが、これの上の共有ボタンの方で設定を入れると、このアクセスベースの列挙がデフォルトで有効化されます。
一方で、下の詳細な共有で設定を入れるとデフォルトで無効化されます。(私調べ)
試してみます。共有ボタンを押下すると以下のようなポップアップがされます。
今回はADのドメインローカルグループを指定しておきます。
この状態で共有をしてみます。

※ちなみに、これも共有の設定の仕方で気を付けるべきことだと思うのですが、この共有の仕方をすると、NTFSの設定も勝手に上書きをするようです。実際に以下のスクショは共有設定をした後のNTFSの設定タブです。入れた覚えのないADドメインローカルグループがフルコンで設定されています。

アクセスベースの列挙を確認します。サーバマネージャを起動します。
画面左にあるファイルサービスと記憶域サービスを押下します。

共有タブを押下すると、共有フォルダとなっているフォルダの一覧が出力されます。
対象のフォルダを右クリックして、プロパティを押下します。

一方で詳細な共有を押してみます。
このフォルダーを共有するにチェックを入れます。

アクセスベースの列挙を確認してみます。
デフォルトで無効になっていることがわかると思います。

共有の方で共有化した際に発生したNTFSの書き換えもこちらの方法だと発生しません。
基本的には詳細な共有で共有をした方が、設計通りに設定を入れやすくなると思うので、断然こちらがおすすめだと思います。

実際にファイルを置いてみて、それに対してSMBでフォルダの中身を見てみます。
ファイルにはADドメインローカルグループに権限は与えていません。

別のPCにドメインローカルグループのユーザでログインしてSMBでフォルダにアクセスしてみた結果です。
アクセスベースの列挙が有効化されていると、ファイルが見えてないことがわかると思います。
一方で無効化されていると、権限がないにも関わらず表示はされていると思います。

権限を持っていないので表示はされますが、開くと以下のようなポップアップが表示され、閲覧や編集などをすることはできません。

「アクセスベースの列挙を有効化しているんだけど見えますよ?」という場合はF5でキャッシュをクリアして頂くか、一度ログオフして頂いて改めて確認して頂くと良いかと思います。
NTFS
権限の付け方ですが、基本的に上位フォルダ(あるいはボリュームで)権限を設定して、それを下位のフォルダに継承させるのが一般的なようです。
権限の継承ですが、上位から下位に対して「継承しろ」と指示を出すイメージでなく、下位から上位に対して「継承します!」「継承しません!」と宣言させるみたいなイメージです。ホワイトな職場ですね。
継承しないことでそのフォルダは独自の権限を設定することが出来ます。

継承しませんというのはフォルダだけではなくファイル単位で宣言することも出来ます。

試してみます。今回はDドライブ・ボリュームに対して、NTFSを設定していきます。
ADドメインローカルグループに対してフルコンを設定しておきます。

Dドライブ配下のフォルダのNTFSを見てみると、継承元が「D:¥」となっていることがわかり、かつ先ほど設定したADドメインローカルグループに対しての権限も記載されていることがわかります。

先ほどのフォルダの更に下にフォルダを用意してみました。デフォルトだと親フォルダと同じ権限設定となっていると思います。
この状態で継承の無効化を押下します。

このようなウィンドウが表示されます。アクセス許可に変換するを今回は指定します。

このような状態となれば自由にNTFSの設定をすることが出来ます。
試しにADドメインローカルグループから権限をはく奪します。

継承を有効化しているフォルダ配下にファイルを新規作成して、それを継承を無効化しているフォルダ配下に移動してみます。
このように基本的にファイルは格納されているフォルダの権限を自動で継承してます。
継承無効化フォルダに移動した後にファイルの権限を確認してみると、それがわかりますね。









