web-dev-qa-db-ja.com

グループメンバーが共有のサブフォルダーを削除しないようにするにはどうすればよいですか

私には3つのグループがありますElectricalgrpPlumbinggrp、およびPayrollgrpDataという名前のネットワーク共有内のサブフォルダーにアクセスする必要があります=。

共有フォルダーデータおよびサブフォルダー:

 Data
  |
  +--Electrical
  +--Plumbing
  +--Payroll

基本的に、これは私が達成しようとしていることです:

  1. データ共有は読み取り専用に制限されています。データ共有のルートにファイルやフォルダを作成してほしくないです。
  2. Electricalgrpは、Electricalフォルダー内のフォルダーとファイルを作成、削除、および変更できる必要がありますが、Electricalフォルダーは削除できません。
  3. Plumbinggrpは、Plumbingフォルダー内のフォルダーとファイルを作成、削除、および変更できる必要がありますが、Plumbingフォルダーは削除できません。
  4. Payrollgrpは、Payrollフォルダー内のフォルダーとファイルを作成、削除、および変更できる必要がありますが、Payrollフォルダーは削除できません。

次の共有アクセス許可とNTFSセキュリティ設定を試しました。

Share              Permissions                    NTFS Security     Result

Data               Full control,Read,Change       Read              Works fine

フォルダNTFSセキュリティ(無効な継承)

Folder        Group               NTFS Security                  Result

Electrical    Electricalgrp       Modify             NO GOOD, able to delete folder
Electrical    Plumbinggrp         Deny, Read         Works, denies access to folder
Electrical    Payrollgrp          Deny, Read         Works, denies access to folder

他の2つのフォルダーにも同じことを行いました。拒否を変更し、それぞれのグループに変更しました。

グループがメンバーであるメインフォルダーを削除できないようにする部分を除いて、すべてがうまく機能します。どうすればそれを防ぐことができますか?

3
Jess

次の2つのアクセス許可セットを適用することで、ユーザーに「トップレベル」サブフォルダーへの変更アクセスを許可できますが、フォルダーの削除(およびその結果として名前の変更)を防ぐことができます。

データフォルダの場合:

  • 権限の継承を防止する
  • システムと管理者にフルコントロールを付与する
  • すべてのユーザーに次のアクセス許可を付与し、適用先を指定します:このフォルダーのみ

    • フォルダをトラバース/ファイルを実行
    • リストフォルダ/データの読み取り
    • 属性の読み取り
    • 拡張属性の読み取り
    • 読み取り権限

これらのアクセス許可により、すべてのユーザーがデータフォルダーへの読み取りアクセスを許可されます。フォルダーの内容を表示することはできますが、追加のアクセス許可(以下)が付与されない限り、サブフォルダーを開くことはできません。

「トップレベル」サブフォルダーごとに:

目的の読み取り/書き込みグループを付与します。

  • 適用先を指定して、アクセス許可を変更します:サブフォルダーとファイルのみ
  • 適用先を指定する次のアクセス許可:このフォルダーのみ
    • フォルダをトラバース/ファイルを実行
    • リストフォルダ/データの読み取り
    • 属性の読み取り
    • 拡張属性の読み取り
    • ファイルの作成/データの書き込み
    • フォルダの作成/データの追加
    • 読み取り権限

これらのアクセス許可は、選択したユーザーに、サブフォルダーに対する従来の変更アクセス許可を付与します。ただし、1)名前の変更、または2)サブフォルダーの削除はできません。

追加のフレアについては、 アクセスベースの列挙 (共有がWindows Server上にある場合)を有効にすると、ユーザーがデータフォルダーを開くと、自分がアクセスしたサブフォルダーのみが表示されます。それ以上のアクセスが許可されました。

あなたの答えは、「継承のみ」の権限にあります。これは、親コンテナ自体ではなく、サブフォルダとファイルにのみ適用されます。 SS64 で説明されているように:

継承

Inherited folder permissions are given as:

 OI - Object inherit    - This folder and files. (no inheritance to subfolders)
 CI - Container inherit - This folder and subfolders.
 IO - Inherit only      - The ACE does not apply to the current file/directory

These can also be combined as folllows:
 (OI)(CI)      This folder, subfolders, and files.
 (OI)(CI)(IO)  Subfolders and files only. <<<!!!
     (CI)(IO)  Subfolders only.
 (OI)    (IO)  Files only.

このスクリプトを管理者として実行します。個々のサブフォルダーまたは「データ」フォルダーのアクセス許可を変更した場合は、それらを削除してスクリプトにフォルダーを作成させると最も効果的であることに注意してください。

@echo off

rem Define the 'Data' folder path, with/without quotation:
set DesFol="X:\Example Path\Data"
set DesFol=%DesFol:"=%

rem If groups are global (domain groups), set this value to domain BIOS name (e.g MYDOMAIN in MYDOMAIN\Electricalgrp), otherwise, leave it blank:
set Dom=

rem Creates or claims the access to the folder:
if exist "%DesFol%" (
 takeown /f "%DesFol%"
) else (
 md "%DesFol%"
)

rem Removes potential inheritance of "Everyone" access + makes sure Admins have full access to subfolders + makes :
icacls "%DesFol%" /inheritance:r /grant:r SYSTEM:(CI)(OI)F Administrators:(CI)(OI)F Users:R /q

rem Create 'Electrical' subfolder and inherit full access to "SUBFOLDERS AND FILES ONLY":
md "%DesFol%\Electrical"
icacls "%DesFol%\Electrical" /grant %Dom%\Electricalgrp:(X,GR,RC,RD,RA,REA,AD,WD) /q
icacls "%DesFol%\Electrical" /grant %Dom%\Electricalgrp:(CI)(OI)(IO)M /q

rem Create 'Plumbing' subfolder and inherit full access to "SUBFOLDERS AND FILES ONLY":
md "%DesFol%\Plumbing"
icacls "%DesFol%\Plumbing" /grant %Dom%\Plumbinggrp:(X,GR,RC,RD,RA,REA,AD,WD) /q
icacls "%DesFol%\Plumbing" /grant %Dom%\Plumbinggrp:(CI)(OI)(IO)M /q

rem Create 'Payroll' subfolder and inherit full access to "SUBFOLDERS AND FILES ONLY":
md "%DesFol%\Payroll"
icacls "%DesFol%\Payroll" /grant %Dom%\Payrollgrp:(X,GR,RC,RD,RA,REA,AD,WD) /q
icacls "%DesFol%\Payroll" /grant %Dom%\Payrollgrp:(CI)(OI)(IO)M /q

更新:

正直なところ、これは現在ほとんど Twisty によって提供されるソリューションです。スクリプトを作成したばかりです。ですから、彼/彼女は正解を提供した人です。

1