GENERIC_ALL 和文件夹/文件 ACL? GENERIC_ALL 到底是做啥的?
Posted
技术标签:
【中文标题】GENERIC_ALL 和文件夹/文件 ACL? GENERIC_ALL 到底是做啥的?【英文标题】:GENERIC_ALL and folder/file ACLs? What does GENERIC_ALL really do?GENERIC_ALL 和文件夹/文件 ACL? GENERIC_ALL 到底是做什么的? 【发布时间】:2012-05-09 01:20:36 【问题描述】:我最近重新设计了我们文件服务器上的安全性,将完全控制的大部分内容标记为修改。现在我的开发人员告诉我,每当他们使用 GENERIC_ALL 打开文件(例如使用 CreateFile()
)时,他们都会收到拒绝访问消息。
经过研究,似乎没有任何迹象表明GENERIC_ALL
不仅仅是GENERIC_EXECUTE
+ GENERIC_WRITE
+ GENERIC_READ
;然而,情况似乎并非如此,因为开发人员能够将三个常量值相加,并将其用于CreateFile()
。
所以,我问...GENERIC_ALL
到底是做什么的?
谢谢,
马特
【问题讨论】:
就像机器奇迹中的某个该死的幽灵一样,我今天在遇到 TortoiseHg 无法在用户共享上创建文件的超时问题时想到了这一点。谁刚刚更新了帖子,我欠你一个。 【参考方案1】:GENERIC_ALL
访问权限包括所有可能的访问权限,包括 WRITE_DAC
(更改权限)和WRITE_OWNER
(更改所有者)等。 File Security and Access Rights 页面显示了GENERIC_*
访问权限如何映射到文件的特定访问权限。 File Access Rights Constants 页面显示了所有可能的文件访问权限(可能在使用GENERIC_ALL
时都会被请求)。
您应该鼓励您的开发人员只请求他们实际需要的访问级别。例如,很少会同时为GENERIC_EXECUTE
和GENERIC_WRITE
打开一个文件。
【讨论】:
【参考方案2】:GENERIC_ALL
表示“所有可能的访问级别”(对于文件,它的名称为 FILE_ALL_ACCESS
)。由于您删除了完全控制,尝试打开 GENERIC_ALL
将失败并显示访问被拒绝,因为(例如)WRITE_DAC
不再被授予。
【讨论】:
以上是关于GENERIC_ALL 和文件夹/文件 ACL? GENERIC_ALL 到底是做啥的?的主要内容,如果未能解决你的问题,请参考以下文章