2012-01-03 39 views
4

我測試的mkdir函數來創建一個新的目錄:linux下的mkdir功能不能充分授權許可

​​

folder = mkdir("./linux", 0777); 

folder = mkdir("./linux", S_IRWXU | S_IRWXG | S_IRWXO); 

,你可以看,我嘗試授權對目錄的完全許可,但這裏是ls -l | grep linux

drwxr-xr-x 2 manuzhang manuzhang 4096 2012-01-04 06:53 linux 

爲什麼我不能授權組和其他人的寫入權限?

更新
奇怪的事情,因爲你們告訴我,我試過umask。它適用於任何umask(S_IWGRP)umask(S_IWOTH)失敗umask(S_IWGRP | S_IWOTH),任何想法?

+0

頭也不擡'的mkdir()',在「511」看起來很奇怪我的,因爲它不分配相同的權限組和其他因爲它給用戶。此外,您給出了兩個'mkdir()'的用法,以及一個不屬於任何一個的測試示例。在'ls'測試之前你使用了什麼版本? – 2012-01-03 23:06:38

+0

mkdir的man(2)頁面表示該模式已提供,與777進行AND運算,因此應該可以工作。你能否提供更多的細節?你正在使用什麼發行版和Linux發行版?我希望這是你使用的完全標準的glibc? – tjarratt 2012-01-03 23:11:20

+1

@DavidThornley 511 = 0777 – 2012-01-03 23:14:35

回答

0

檢查umask的功能:人2的umask

2

權限由系統設定調用像mkdiropen總是反對掩蓋當前進程的umask。您可以使用umask()函數更改當前的umask;確保在完成後將其恢復。

+2

我覺得做一個'chmod'後'mkdir'是一個清晰的解決方案。 – 2012-01-03 23:26:01

5

man 2 mkdir

參數模式指定要使用的權限。它是由過程的umask以通常的方式修改:創建的目錄的權限是(模式&〜umask的& 0777)。

我建議你看一下你的umask - 這可能是設置爲0022。試試chmod post-mkdir

+0

完美的答案。 – 2014-01-17 07:29:22

+0

我們可以得到一個代碼示例嗎?這是否意味着我可以調用'mkdir(「dir」,unmask(0777))'來創建一個具有完全權限的目錄?或者說不可能創建一個具有完全權限的目錄? – 2016-11-23 02:06:51