我正在尝试在基于 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
请注意,deny
ACL 始终会覆盖allow
ACL,因此即使某人被授予明确的访问权限,他的访问权限仍然会被拒绝。