如何防止群组成员删除共享中的子文件夹

如何防止群组成员删除共享中的子文件夹

我有 3 个群组电气组水管组,&薪资组需要访问名为数据

共享文件夹数据和子文件夹:

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

基本上,这就是我想要实现的目标:

  1. 数据共享限制为只读,不希望任何人在根目录中创建文件或文件夹数据分享。
  2. 电气组应该能够创建、删除和修改文件夹和文件电气文件夹,但无法删除电气文件夹。
  3. 水管组应该能够创建、删除和修改文件夹和文件管道文件夹,但无法删除管道文件夹。
  4. 薪资组应该能够创建、删除和修改文件夹和文件工资单文件夹,但无法删除工资单文件夹。

我已尝试以下共享权限和 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

我对另外两个文件夹做了同样的事情,我只是将拒绝和修改更改为各自的组。

除了阻止群组删除其所属的主文件夹的部分外,其他一切都运行良好。我该如何阻止这种情况发生?

答案1

您可以通过应用以下两组权限授予用户对“顶级”子文件夹的修改访问权限,但阻止他们删除(并因此重命名)该文件夹:

对于您的数据文件夹:

  • 防止权限继承
  • 授予系统和管理员完全控制权
  • 授予所有用户以下权限,并指定他们应用于:仅限此文件夹

    • 遍历文件夹/执行文件
    • 列出文件夹/读取数据
    • 读取属性
    • 读取扩展属性
    • 读取权限

这些权限允许所有用户读取数据文件夹。虽然他们可以看到文件夹的内容,但除非获得进一步的权限(见下文),否则他们无法打开任何子文件夹。

对于每个“顶级”子文件夹:

授予所需的读/写组:

  • 修改权限,指定其应用于:仅限子文件夹和文件
  • 以下权限,指定它们适用于:仅限此文件夹
    • 遍历文件夹/执行文件
    • 列出文件夹/读取数据
    • 读取属性
    • 读取扩展属性
    • 创建文件/写入数据
    • 创建文件夹/附加数据
    • 读取权限

这些权限授予选定用户对子文件夹的传统修改权限,但有两个例外:1)他们不能重命名,或2)删除子文件夹。

为了增加特色,请启用基于访问的枚举(如果您的共享位于 Windows 服务器上)当用户打开数据文件夹时,他们只能看到他们被授予进一步访问权限的子文件夹。

答案2

您的答案在于“仅继承”权限,它仅适用于子文件夹和文件,而不适用于父容器本身。如所述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

更新:

说实话,现在主要是提供的解决方案扭曲,我只是写了脚本。所以他/她是提供正确答案的人。

相关内容