设置 NTFS 文件夹的权限以控制新创建子文件夹内容的权限

设置 NTFS 文件夹的权限以控制新创建子文件夹内容的权限

我有以下示例文件夹结构:

 U:\One\Two\A
 U:\One\Two\B
 U:\One\Two\C
 U:\One\Two\D
 U:\One\Two\E

文件夹“一”和“二”设置为普通用户只能读取,不能修改它们或它们的内容。文件夹“A”-“E”对自己有读取权限,对其内容/子文件夹有写入权限。

Windows 是否允许对文件夹“Two”设置权限,以便将来创建的子文件夹“F”、“G”等将获得与“A”-“E”现在相同的权限?如果不允许,还有哪些其他解决方案可以实现此结果?

答案1

拒绝更改直接子文件夹/文件但允许修改子文件夹的内容

您只需要对 A 至 E 子文件夹的“父”文件夹应用特殊权限。对于您而言,父文件夹就是该Two文件夹。

将这些权限应用到父文件夹:

  • 用户:Read & execute (This folder, subfolders and files)
  • 用户:Modify (Subfolders and files only)
  • 用户:DENY 'Delete' (Subfolders only)并启用Apply these permissions to objects and/or containers within this container only

    笔记:Users用您希望授予访问权限的特定身份替换该组。

    笔记:您还需要授予管理员(或负责添加/删除子文件夹的用户)对此文件夹的完全控制权限。否则,任何人都无权创建子文件夹。

‘用户’组的最终权限:

  • 无法在父文件夹内创建、重命名或删除文件夹或文件
  • 可以创建、重命名、修改和删除文件夹或文件子文件夹父文件夹。

您的情况下产生的权限:

U:\One\Two   <-- "Parent" folder
 - Users can read everything below this folder
 - Users cannot create, rename, or delete files or folders here

U:\One\Two\A (through E)   <--- "Subfolder" of Parent
 - Users can create, rename, modify, and delete files or subfolders here

显然,由于分配给父文件夹的权限是继承的,因此在该Two文件夹中创建的将来的文件夹将自动接收相同的权限集。

答案2

不,正如所述,F 和 G 将继承 One 和 Two 的权限 ICACLS 可以作为脚本执行您想要的操作 - 我附加了一个 CMD 文件,我之前每次出于某种目的创建目录时都会使用它来执行此操作 -
我已经对其进行了修改以使用本地组而不是域组和一些其他内容,但它确实有效 - 但我希望下面的内容有助于解释如何使用它

SET DIR=TESTPERMS 
SET DOMAIN=%COMPUTERNAME%\ 
SET DOMAIN= 
SET
ROOTPATH=%TEMP%\
REM SET ROOTPATH=U:\One\Two\ REM SET DIR=A

REM Create the groups locally on the machine - I added for debug
NET LOCALGROUP FSP_%DIR%_MODIFY /ADD 
NET LOCALGROUP FSP_%DIR%_READ /ADD 
NET LOCALGROUP FSP_%DIR%_READexecute /ADD 
NET LOCALGROUP FSP_%DIR%_FULLCONTROL /ADD 
NET LOCALGROUP FSP_%DIR%_WRITE /ADD

REM Make the directory I'm about to modify  
md %ROOTPATH%%DIR% 
REM   Make sure I know who the owner is - so I can take  ownership
ICACLS %ROOTPATH%%DIR% /setowner %DOMAIN%FSP_%DIR%_FULLCONTROL /T 
REM Reset to a known state inherited and nothing else
ICACLS %ROOTPATH%%DIR% /T /reset 
REM remove inheritance - but copy so we don't lose access 
ICACLS %ROOTPATH%%DIR% /inheritance:r

REM Give the rights to the Groups The last () is the rights being granted
ICACLS %ROOTPATH%%DIR% /GRANT:R %DOMAIN%FSP_%DIR%_MODIFY:(OI)(CI)(M)
ICACLS %ROOTPATH%%DIR% /GRANT:R %DOMAIN%FSP_%DIR%_READ:(OI)(CI)(R)
ICACLS %ROOTPATH%%DIR% /GRANT:R %DOMAIN%FSP_%DIR%_READexecute:(OI)(CI)(RX)
ICACLS %ROOTPATH%%DIR% /GRANT:R %DOMAIN%FSP_%DIR%_FULLCONTROL:(OI)(CI)(F)
ICACLS %ROOTPATH%%DIR% /GRANT:R %DOMAIN%FSP_%DIR%_WRITE:(OI)(CI)(W)

REM Remove rights from everyone else 
ICACLS %ROOTPATH%%DIR% /REMOVE:g "Authenticated Users"
ICACLS %ROOTPATH%%DIR% /REMOVE:g Everyone
ICACLS %ROOTPATH%%DIR% /REMOVE:g SYSTEM
ICACLS %ROOTPATH%%DIR% /REMOVE:g BUILTIN\Users
REM Show me what I've done 
ICACLS %ROOTPATH%%DIR% /T 
REM Now remove my self - If I am sure everything is ok
PAUSE
ICACLS %ROOTPATH%%DIR% /REMOVE:g BUILTIN\Administrators

相关内容