我有以下场景,其中我(admin
)将(DE,W)
拒绝权限应用于已从父文件夹继承修改权限的以下文件test_folder
夹test_user
:
B:\>icacls test_folder
test_folder test_user:(I)(OI)(CI)(M)
admin:(I)(OI)(CI)(M)
B:\>icacls test_folder /deny test_user:(DE,W)
B:\>icacls test_folder
test_folder test_user:(DENY)(W,D)
test_user:(I)(OI)(CI)(M)
admin:(I)(OI)(CI)(M)
我期望的最终结果是test_user
能够读取/执行访问权限, test_folder
而无法删除/重命名文件夹并向其添加文件夹/文件。
但是,结果test_folder
根本不可见test_user
。我test_folder
仍然可以看到 ( admin
)。
虽然我只否认DE
:
B:\>icacls test_folder
test_folder test_user:(I)(OI)(CI)(M)
admin:(I)(OI)(CI)(M)
B:\>icacls test_folder /deny test_user:(DE)
B:\>icacls test_folder
test_folder test_user:(DENY)(D)
test_user:(I)(OI)(CI)(M)
admin:(I)(OI)(CI)(M)
test_user
能够看到test_folder
。所以不知何故W
导致了一个问题。
知道为什么会这样吗?
(W)
和都是(M)
宏;它们扩展到多个实际访问标志。特别是,
(W)
像FILE_GENERIC_WRITE一样授予这些权限:(S)
(WD)
(AD)
(WEA)
(WA)
“同步”权限相当模糊(甚至没有显示在 GUI 中),但它对于几乎任何类型的对文件的有用访问都是必需的——读取和写入都需要它,因此包含在两者中(R)" 和 "(W)"组。
因此,当您拒绝(W)访问时,您最终也会拒绝“同步”权限,这是许多程序对文件进行操作所必需的。
Microsoft 的文件访问文档也指出了这一点:
如果您必须使用“拒绝”ACE,则需要单独拒绝 (W) 包含的其他四个权限,即
(WD,AD,WEA,WA)
,但请注意,这样的 ACE 往往会使 ACL 编辑工具有些混乱。(许多人仍会将其折叠为通用的“写入”,您将无法区分。)旧
cacls
工具在这里特别有用,因为它不知道很多新的宏/别名,因此会向您显示所有个人访问权限。