2012-05-09 82 views
6

我最近重新設計了我們的文件服務器上的安全性,標記了大部分完全控制是修改。現在我的開發人員告訴我,只要他們使用GENERIC_ALL打開一個文件(例如CreateFile()),他們就會收到拒絕訪問的消息。GENERIC_ALL和文件夾/文件ACL? GENERIC_ALL真的做了什麼?

經過研究,似乎沒有任何跡象表明GENERIC_ALL超過了GENERIC_EXECUTE + GENERIC_WRITE + GENERIC_READ;然而,這似乎並非如此,因爲開發人員能夠添加三個常量值,並將其用於CreateFile()

所以,我問... GENERIC_ALL究竟做了什麼?

感謝,

馬特

+0

就像機器奇蹟中的一些該死的幽靈一樣,當我遇到TortoiseHg無法創建用戶共享文件的超時問題時,我今天想到了這個問題。誰更新了這個帖子,我欠你一個。 – mbrownnyc

回答

4

GENERIC_ALL訪問權限包括可能的訪問權限,包括諸如WRITE_DAC(更改權限)和WRITE_OWNER(改變所有者)。 File Security and Access Rights頁面顯示了GENERIC_*訪問權限如何映射到文件的特定訪問權限。 File Access Rights Constants頁面顯示了文件的所有可能訪問權限(當使用GENERIC_ALL時,可能會請求所有這些權限)。

您應該鼓勵開發人員僅請求他們實際需要的訪問級別。很少,例如,同時爲GENERIC_EXECUTEGENERIC_WRITE打開的文件。

3

GENERIC_ALL意味着 「訪問的每一個可能的水平」(對於文件,這有名字FILE_ALL_ACCESS)。由於您刪除了完全控制,因此嘗試打開GENERIC_ALL將因拒絕訪問而失敗,因爲(例如)WRITE_DAC不再被授予。