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

时间:2014-09-09 13:57:45

标签: batch-file windows-8 permissions cacls icacls

我试图拒绝所有用户删除文件夹(如果可能的话还有其内容)。

currently have无效。

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

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

2 个答案:

答案 0 :(得分:3)

我想我找到了一个解决方案:

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

拒绝删除 (DE)删除子女 (DC)的特定权利。

  • 要使此语言独立,请使用*S-1-1-0代替Everyone。 (见Well-Known SIDs
  • 如果文件夹恰好为空,您仍然可以删除该文件夹。如果这是一个问题,请考虑设置只读标记,例如attrib +r pics,然后拒绝(WA),以便它不会被更改(信用到Harry Johnston

答案 1 :(得分:0)

要防止删除文件,您需要拒绝文件的删除权限并拒绝删除子项权限(又名“删除子文件夹”和包含文件夹上的文件“)。两者都不得被允许以真正防止删除。

换句话说,如果授予了其中一个或两个权限,Windows允许删除文件。

如果允许您更改包含文件夹的权限,则答案的上述部分应该足够了,否则,有一些技巧可以阻止您的文件夹被删除(所有这些都经过我的实验)。

  1. 您可以在文件夹中创建(隐藏)虚拟文件,并阻止删除该文件(再次使用访问控制)。
  2. 所有删除操作,无论是通过Windows资源管理器GUI还是DELRMDIR命令,都无法直接删除的只读文件或文件夹,上述命令的作用是尝试在执行删除操作之前删除文件上的只读属性。因此,在拒绝写入属性(WA)权限的同时在文件夹上设置只读属性将有效地防止文件夹被删除。
  3. 这是一个将两个技巧组合在一起的批处理脚本示例:

    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^)