在 Windows 7 上使用 icacls 将目录设为只读

在 Windows 7 上使用 icacls 将目录设为只读

我正在尝试在基于 Java 的应用程序中测试一些文件系统异常。

我需要找到一种方法来创建一个位于 %TMP% 下并设置为只读的目录。

基本上在 UNIX/POSIX 平台上,我可以执行 chmod -w 并获得此效果。在 Windows 7/NTFS 下,这当然是另一回事。

我遇到了多个问题。我的用户拥有“管理”权限(尽管情况可能并非总是如此),因此目录是使用 ACL 创建的,其中包括:

  • NT 权限\系统
  • 内置\管理员
  • <我的当前用户>

有没有办法使用 icacls 基本上让这个目录处于只读状态,进行我的测试,然后恢复 ACL 以进行删除?

编辑 通过@Ansgar Wiechers 提供的信息,我找到了解决方案。

我使用了以下内容:

icacls dirname /deny %username%:(WD)

在位于的页面中这里我在备注部分发现了这一点:

icacls preserves the canonical order of ACE entries as:
  * Explicit denials
  * Explicit grants
  * Inherited denials
  * Inherited grants

通过执行上述 icalcs 命令,我能够将当前用户写入或附加文件(WD)到目录的能力设置为拒绝。

然后是将其返回到州后测试的问题:

icacls dirname /reset /t /c

完毕

答案1

如果您的用户拥有管理权限,他可以随时重新获得您撤销的任何权限。在这方面,Windows 上的管理员帐户与 Linux 上的 root 帐户基本相同。

不过,您可以创建一个可以deny写入访问权限的ACL Everyone。这会使文件夹在 Windows 上成为只读文件夹。

icacls DIRECTORY /deny Everyone:(CI)(OI)W

请注意,denyACL 始终会覆盖allowACL,因此即使某人被授予明确的访问权限,他的访问权限仍然会被拒绝。

相关内容