icacls 拒绝所有人删除目录权限

3
我正在尝试禁止所有用户删除文件夹(如果可能的话,还有它的内容)。
目前我拥有的方法并不能生效。
icacls pics /deny Everyone:(OI)(CI)(DE)

使用上述代码行并不能保护文件夹及其内容,因为我仍然可以删除文件夹及其中的所有文件。

2个回答

5

我认为我找到了一个解决方案:

icacls pics /deny Everyone:(OI)(CI)(DE,DC)

该设置禁止了特定的权限,包括删除(DE)删除子项(DC)

  • 要实现语言无关,请使用*S-1-1-0代替Everyone。(请参阅Well-Known SIDs
  • 如果文件夹为空,则仍然可以删除它。如果这是一个问题,请考虑设置只读标志,例如:attrib +r pics,然后拒绝(WA)以防止更改(感谢Harry Johnston提供的建议)

这真的让我很烦恼 :) - Thomas
1
如果文件夹为空,您可能仍然可以删除它。如果这是一个问题,请考虑设置只读标志,例如 attrib +r pics,然后拒绝 (WA) 以防止其被更改。 - Harry Johnston
太好了,我想知道这个命令对目录实际上做了什么。我已经测试过这个命令,发现在执行后,我可以添加/创建子文件夹或文件,但无法重命名它。 - Jay Patel

1
为了防止文件被删除,您需要拒绝文件上的“删除”权限和包含该文件的文件夹上的“删除子文件夹和文件”(也称为“删除”)权限。两者都不能允许才能真正防止删除。
换句话说,如果授予其中一个或两个权限,则Windows允许删除文件。
如果您有权更改包含文件夹的权限,则上述答案的部分足以解决问题,否则,还有一些技巧可以防止文件夹被删除(由我进行过实验)。
1. 您可以在文件夹中创建一个(隐藏的)虚拟文件,并防止删除该文件(再次使用访问控制)。 2. 所有删除操作,无论是通过Windows资源管理器GUI还是DEL或RMDIR命令,都无法直接删除只读文件或文件夹,上述命令要做的是尝试在执行删除操作之前删除文件上的只读属性。因此,在拒绝写入属性(WA)权限的同时设置文件夹的只读属性将有效地防止文件夹被删除。
以下是结合两种技巧的批处理脚本示例:
ECHO.>"myfolder\dummy"
REM Technically R is sufficient to prevent deletion,
REM but it wouldn't hurt to add H and S attributes.
attrib +R +H +S "myfolder\dummy"
REM Deny permissions on dummy file.
REM Hint: S-1-1-0 means Everyone; S-1-5-7 means Anonymous Logon group
icacls "myfolder\dummy" /deny *S-1-1-0:^(DE,WA^) *S-1-5-7:^(DE,WA^)

REM Make folder read-only and deny permissions on it.
attrib +R "myfolder"
icacls "myfolder" /deny *S-1-1-0:^(DE,DC,WA^) *S-1-5-7:^(DE,DC,WA^)

你救了我!!!这是唯一有效的方法!!!谢谢!!! - Valentino Zaffrani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接