Windows Server 2016 SMB共有で権限のあるサブフォルダーだけ表示する方法|ABEとNTFS権限設計

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 UsersRead & Execute(読み取りと実行)このフォルダーのみルートを開ける/サブ構成を見せる(継承で配らない)
Sub_Folder1Domain UsersRead(必要に応じてModify)このフォルダー、サブフォルダーおよびファイル全員が閲覧できる領域
Many_Sub_Folders2(コンテナ)Domain UsersRead & Execute(最小:一覧/移動できる程度)このフォルダーのみ中に入る導線だけ確保(子への継承を防ぐ)
Many_Sub_Folders2\UserA_Folder 等Folder-Perm-UserA(ADグループ)Modify(またはRead)このフォルダー、サブフォルダーおよびファイル権限がある人だけ見える(ABEで列挙対象になる)
全フォルダーAdministrators / SYSTEMFull Controlこのフォルダー、サブフォルダーおよびファイル管理・バックアップ・復旧のための基本

“このフォルダーのみ”の指定が肝です。共有ルートやコンテナに広い適用範囲で権限を付けると、意図せず子にも権限が降りてABEで隠せなくなります。

ADグループ運用のコツ(破綻しにくい設計)

フォルダー単位のグループ設計は、最初に命名規則を決めておくと長期運用が楽になります。

用途グループ名の例付与する権限の例備考
部門フォルダー(閲覧のみ)FS-DeptX-ReadRead監査しやすい
部門フォルダー(編集あり)FS-DeptX-ModifyModify誤削除対策が必要なら別途検討
ユーザー専用FS-UserA-HomeModify人事異動・退職対応が簡単
運用管理者FS-AdminsFull ControlAdministrators 直ではなく運用グループで明確化

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――この型で組むと、要件どおりの“見せたいものだけ見える共有”を安定して維持できます。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次