Windows Server 2016 のSMB共有で、共有ルートは全員に開放しつつ、配下の多数フォルダーは「権限があるものだけ見せたい」――この要件は現場で頻繁に出ます。フォルダー名だけ見えてしまう原因を整理し、ABE(アクセス ベースの列挙)とNTFS権限(継承設計)を組み合わせて“存在ごと見せない”状態にする手順を具体的に解説します。
よくある構成と「困りごと」の正体
まず、想定する共有構成を整理します。
\\FS01\Sharing_Folder(共有ルート)
├─ Sub_Folder1(全員が閲覧できる想定)
└─ Many_Sub_Folders2(多数のフォルダーがあり、ユーザーごとに見せるフォルダーを分けたい)
├─ UserA_Folder
├─ UserB_Folder
├─ DeptX_Folder
└─ ...(大量)
要件は次のようなものです。
- 共有ルート(
\\FS01\Sharing_Folder)は全員が参照できる(マップできる) Sub_Folder1は全員が見える/読めるMany_Sub_Folders2配下は、ユーザーが権限を持つフォルダーだけを表示したい- 権限がないフォルダーは「アクセス拒否」ではなく「一覧に存在自体を出したくない」
ところが、サブフォルダーで継承を切って特定ユーザーだけ許可しても、フォルダー名だけは一覧に表示されてしまうことがあります。クリックすると拒否されるのに、一覧にずらっと見えてしまう――これが運用上つらいポイントです。
なぜ「フォルダー名だけ見える」のか
結論から言うと、エクスプローラーの一覧表示は「中に入れるか(ファイルを読めるか)」とは別に、そのフォルダーを一覧に列挙できる権限(少なくとも“リスト表示”相当)が残っていると成立します。
特に起きがちなパターンは次の通りです。
| 起きがちな設定 | 結果(ユーザー側の見え方) | 根本原因 |
|---|---|---|
| 共有ルートに Everyone / Domain Users の「読み取り」があり、それが子へ継承されている | 権限がないはずのフォルダー名が一覧に出る | “隠したいフォルダー”にも最低限の閲覧権(列挙権)が残る |
| サブフォルダーで継承を切ったつもりだが、変換(Convert)後に Everyone が残っている | フォルダー名が見える/アクセスすると拒否 | ACL に Everyone が明示的に残存 |
| 親で「このフォルダー、サブフォルダーおよびファイル」に権限を付けている | 意図せず配下全体に権限が広がる | “適用先”が広すぎて継承が強制される |
ここで重要なのは、「アクセス拒否にする」ことと「存在を見せない」ことは別の話だという点です。アクセス制御の本体はNTFS権限(と共有権限)で行われますが、「一覧から消す」には追加で仕組みが必要になります。
最短の解決策は ABE(アクセス ベースの列挙)
この要件に対して、Windows Server のファイル共有(SMB)で定番となるのがアクセス ベースの列挙(Access-Based Enumeration / ABE)です。
ABEの動きはシンプルで、SMB共有の一覧を返すときに「そのユーザーがアクセスできないフォルダー/ファイルは列挙結果から除外する」ようになります。つまり、権限がないものは“最初から見えない”状態にできます。
| 項目 | ABE なし | ABE あり |
|---|---|---|
| 権限がないフォルダー | 一覧に出る(入ると拒否) | 一覧に出ない |
| 権限があるフォルダー | 一覧に出る | 一覧に出る |
| セキュリティの本体 | NTFS/共有権限 | NTFS/共有権限(ABEは“見せ方”) |
ただし、ABEは万能ではありません。ABEはあくまで「アクセスできないものを列挙しない」だけなので、隠したいフォルダーに Everyone(または Domain Users 等)の権限が残っていると、ABEでも隠せません。ここがハマりどころです。
実現に必要な2つの条件
「権限があるサブフォルダーだけ見せる」を確実に成立させるには、次の2条件がセットで必要です。
- 共有側でABEを有効化している
- 隠したいフォルダーに“本当に権限がない”状態を作れている(Everyone/Domain Usersの継承を切って外す)
以降では、Windows Server 2016(ファイルサーバー)を前提に、GUI手順と権限設計の要点をまとめます。
手順:共有で ABE を有効化する(GUI)
まず共有設定でABEをオンにします。Windows Server 2016 なら Server Manager から設定できます。
| 操作 | 手順 | ポイント |
|---|---|---|
| 共有のプロパティを開く | Server Manager を開く File and Storage Services → Shares 対象共有を右クリック → Properties | 「共有」単位で設定する |
| ABE を有効化 | Settings を開く Enable access-based enumeration にチェック | これだけでは隠れないケースが多い(次のNTFSが本番) |
PowerShell で設定する場合
GUIではなく、PowerShell で揃えたい場合もあります。共有名が Sharing_Folder だと仮定すると、概ね次の流れです。
# 現状確認
Get-SmbShare -Name "Sharing_Folder" | Select-Object Name, Path, FolderEnumerationMode
# ABE 有効化(AccessBased)
Set-SmbShare -Name "Sharing_Folder" -FolderEnumerationMode AccessBased
# 再確認
Get-SmbShare -Name "Sharing_Folder" | Select-Object Name, FolderEnumerationMode
PowerShell で反映した場合でも、ユーザー側の表示はキャッシュの影響で即時に変わらないことがあります(後述)。
手順:NTFS権限(継承)の設計が“見せない”の決め手
ABEを有効にしても、「隠したいフォルダー」に権限が残っていれば一覧から消えません。つまり、次の状態を作る必要があります。
Many_Sub_Folders2配下の各フォルダーには、Everyone / Domain Users を入れない- アクセスさせたいユーザーだけが入っているADグループを付与する
- 親から権限が降りてくるなら、継承を無効化して断ち切る
「継承を切る」の基本手順(GUI)
代表的な安全手順は次の通りです。
- 対象フォルダーを右クリック → Properties → Security → Advanced
- Disable inheritance(継承の無効化)を実行
- 「Convert inherited permissions into explicit permissions」を選ぶ(いったん明示化して整理する)
- 明示化されたACLから Everyone / Domain Users を削除
- 代わりにフォルダー専用のADグループを追加(Read / Modify など要件に合わせる)
- 配下も統一したい場合は「Replace all child object permission entries…」を用途に応じて使う
ポイントは“削除対象は誰か”です。環境によっては Everyone ではなく Authenticated Users や Domain Users が付いていることがあります。ABEで隠したいのであれば、そのフォルダーに対して不要な一般ユーザー系の許可を残さないのが基本です。
おすすめの権限設計(実務で破綻しにくい形)
現場で運用が長期化すると、ユーザー直付け(個別にユーザーアカウントをACLに追加)だと破綻しやすいです。フォルダー単位でADグループを作り、メンバー管理で運用する形が最も安定します。
共有権限(Share)は広め、NTFSで絞る
共有権限とNTFS権限の関係は「より厳しい方が勝つ(実効は積集合)」です。一般的には共有権限は広めに、制御はNTFSで行います。
| 項目 | 共有権限(Share) | NTFS権限 |
|---|---|---|
| 役割 | 共有に入れるかの入口制御 | フォルダー/ファイル単位の本体制御 |
| おすすめ | Everyone/Authenticated Users:Read(またはChange) Administrators:Full | フォルダーごとにグループで最小権限を付与 |
| ABEとの関係 | ABEは共有の機能 | “見せない”ために不要な権限を残さない(継承設計が重要) |
フォルダー階層ごとの「定番ACL」例
要件に合うよう、フォルダーごとに“適用先”を意識して設計します。特に Many_Sub_Folders2 は「中に入れるが、子に権限は配らない」形にすると安定します。
| 対象 | 誰に | 権限の例 | 適用先の例 | 狙い |
|---|---|---|---|---|
Sharing_Folder(共有ルート) | Domain Users | Read & Execute(読み取りと実行) | このフォルダーのみ | ルートを開ける/サブ構成を見せる(継承で配らない) |
Sub_Folder1 | Domain Users | Read(必要に応じてModify) | このフォルダー、サブフォルダーおよびファイル | 全員が閲覧できる領域 |
Many_Sub_Folders2(コンテナ) | Domain Users | Read & Execute(最小:一覧/移動できる程度) | このフォルダーのみ | 中に入る導線だけ確保(子への継承を防ぐ) |
Many_Sub_Folders2\UserA_Folder 等 | Folder-Perm-UserA(ADグループ) | Modify(またはRead) | このフォルダー、サブフォルダーおよびファイル | 権限がある人だけ見える(ABEで列挙対象になる) |
| 全フォルダー | Administrators / SYSTEM | Full Control | このフォルダー、サブフォルダーおよびファイル | 管理・バックアップ・復旧のための基本 |
“このフォルダーのみ”の指定が肝です。共有ルートやコンテナに広い適用範囲で権限を付けると、意図せず子にも権限が降りてABEで隠せなくなります。
ADグループ運用のコツ(破綻しにくい設計)
フォルダー単位のグループ設計は、最初に命名規則を決めておくと長期運用が楽になります。
| 用途 | グループ名の例 | 付与する権限の例 | 備考 |
|---|---|---|---|
| 部門フォルダー(閲覧のみ) | FS-DeptX-Read | Read | 監査しやすい |
| 部門フォルダー(編集あり) | FS-DeptX-Modify | Modify | 誤削除対策が必要なら別途検討 |
| ユーザー専用 | FS-UserA-Home | Modify | 人事異動・退職対応が簡単 |
| 運用管理者 | FS-Admins | Full Control | Administrators 直ではなく運用グループで明確化 |
ADの設計思想としては、ロールや所属に合わせたグループにユーザーを入れ、フォルダーACLはグループだけで管理するのが定石です。これにより、フォルダー数が増えても「ACLに人が散らばる」状態を避けられます。
「ABEが効かない」時にまず疑うポイント
ABEをオンにしたのに見えてしまう場合、原因の多くはNTFS側です。確認の優先順位を示します。
隠したいフォルダーに Everyone / Domain Users の許可が残っていないか
最優先で確認します。プロパティのセキュリティだけでは見落としがちなので、コマンドでACLを素早く見るのも有効です。
# ACLの確認(例)
icacls "D:\Sharing_Folder\Many_Sub_Folders2\UserA_Folder"
結果に Everyone や Domain Users が残っていれば、ABEで隠れない可能性が高いです(権限の適用先がどうなっているかも合わせて確認してください)。
親からの継承が「思ったより広い」
よくあるのが、共有ルートで Domain Users に権限を付けていて、適用先が「このフォルダー、サブフォルダーおよびファイル」になっているケースです。Many_Sub_Folders2 配下まで権限が広がり、隠したいフォルダーにも権限が残ります。
対策は次のいずれかです。
- 共有ルートの Domain Users 権限の「適用先」をこのフォルダーのみにする
Many_Sub_Folders2で継承を無効化して、配下の一般ユーザー権限を整理する
グループ変更が反映されていない(トークン更新)
ユーザーをADグループに追加した直後は、サインイン中のセッションが古いグループ情報(トークン)を持っているため、期待どおりの表示にならないことがあります。次のどれかで切り分けできます。
- ユーザーがサインアウト/サインインし直す
- PC側で共有接続を切り直す(資格情報の再取得)
# 共有接続を切る例(ユーザーPC側)
net use \\FS01\Sharing_Folder /delete
# すべてのネットワークドライブを切る例
net use * /delete
エクスプローラーの表示キャッシュ・オフラインファイル
環境によっては、オフラインファイル(クライアント側キャッシュ)や、エクスプローラーの表示が残ることで「消えたはずが見える」ように見えることがあります。別ユーザー/別PCで確認すると原因が切り分けやすいです。
よくある誤解とNGパターン
「共有権限で拒否すれば見えなくなる」
共有権限は入口の制御で、フォルダー単位の整理や大量フォルダーの見せ分けには向きません。今回の要件は、共有権限で細かくやるよりもNTFS権限+ABEの方が圧倒的に運用しやすいです。
「アクセス拒否(Deny)を大量に付ければいい」
Denyは強力ですが、副作用が大きく、将来の拡張やトラブルシューティングが難しくなります。基本は「許可を必要最小限にし、不要な許可を残さない」設計で成立させるのが安全です。
「隠し共有($)でフォルダーを隠せる」
共有名の末尾に $ を付ける隠し共有は“共有一覧に出ない”だけで、今回の「共有の中の大量サブフォルダーを権限で見せ分ける」要件とは別物です。フォルダー列挙を制御するならABEが適切です。
実務で使える最小チェックリスト
設定後に「要件どおりになっているか」を短時間で確認するためのチェックリストです。
| チェック項目 | OKの状態 | NGの典型 |
|---|---|---|
| 共有でABEが有効 | 共有プロパティでABEオン(または FolderEnumerationMode=AccessBased) | そもそもABEが無効 |
| 隠したいフォルダーに Everyone/Domain Users がない | ACLに一般ユーザー系の許可が存在しない | 継承や変換後に残っている |
| コンテナ(Many_Sub_Folders2)の権限が“このフォルダーのみ” | ユーザーは中に入れるが、子へ権限が降りない | 「サブフォルダーおよびファイル」にしてしまい全子が見える |
| 権限はADグループで付与 | フォルダーACLにユーザーが直接出てこない | ユーザー直付けで増殖し管理不能 |
| ユーザー側のセッション更新 | サインインし直して表示が期待どおり | 古いトークンのままで「効かない」と誤認 |
まとめ:ABEは“スイッチ”、勝負はNTFSの継承設計
Windows Server 2016 のSMB共有で「権限があるサブフォルダーだけ見せる」を実現する近道は、共有でABEを有効化し、同時に隠したいフォルダーからEveryone/Domain Usersの許可を完全に排除する(継承を正しく切る)ことです。さらに、権限付与をADグループ運用に寄せることで、フォルダーが増えても破綻しにくい構成になります。
「ABEを入れたのに見える」場合は、ほぼ例外なくNTFSの継承・適用先・残存ACLが原因です。コンテナは“このフォルダーのみ”、各フォルダーは専用グループ、管理系は一貫してFull Control――この型で組むと、要件どおりの“見せたいものだけ見える共有”を安定して維持できます。

コメント