2013-10-29 65 views
0

我在讀一本書有關文件創建掩碼和整個這個傳來:文件創建掩碼和umask的

例如,如果掩碼的值是04 + 02 + 01 = 07,則權限 通常由這些值表示的文件在創建文件時關閉。所以,隨着 實際上這個值,該文件與語句創建:

fd open (" /tmp/newfile", O_CREAT, 0644); 

實際上將給予0640.這是一個模式是指與文件相關聯組的文件所有者和成員 會能夠使用該文件,但其他類型的 用戶將被拒絕任何訪問。

我不能籠罩我的頭,因爲爲什麼模式從0644變爲0640.並且將創建文件的權限是什麼?

回答

1

你傳遞給*open()(稱之爲mode)被修改這樣的值:

perms = mode & ~umask; 

這意味着每個位umask被設置關閉相應位所產生的許可,無論是是否設置。在你的具體例子中:

0644  = 0b110100100 
    07  = 0b000000111 
~07  = 0b111111000 
0644 & ~07 = 0b110100000 = 0640