mkdir的函數原型(使用時需包含#include <sys/stat.h>):
int mkdir(const char *path, mode_t mode);
參數:
path——目錄名,比如abc,/var/www/abc等
mode——目錄權限
返回值:
返回0 表示成功, 返回 -1表示錯誤,並且會設置errno值。
關於Mode定義,請參考:http://pubs.opengroup.org/onlinepubs/7908799/xsh/sysstat.h.html
當然你也可以不用那些類似S_IRWXU、S_IRUSR...類似的宏參數,畢竟很難記憶,反倒不如8進制的0421好記。組合樣式為:owner-group-others,不同人都分三個規則讀-寫-執行(r-w-x),全部許可就是7。
1、編程時使用mkdir("test",777)報錯
試一下:
mkdir("test",0777);
寫成mkdir("test",777)有可能無法執行。但是依稀記得,以前都是用777的也沒錯誤,具體忘記了,反正按照規范寫絕對沒錯。
2、umask命令使用
另外假設你的程序目錄在/root/abc/下,那麼如果你的程序執行時想在/var/www下創建目錄時,有可能你始終創建一個0777的目錄總是創建成0755目錄,這時可以嘗試使用umask(0)命令。
umask只對當前目錄有效,默認umask值為0022,所以你無法在另外一個地方直接創建0777的目錄。
而是0777-0022=0755
3、如何創建某個用戶組的文件夾
/etc/passwd和/etc/group找到UID和gid
mkdir /var/ugroup
我們可以直接使用chown來改變文件所有者。
chown root:newuser /var/ugroup
修改權限
chmod 740 /var/ugroup/*
4、察看創建後目錄權限情況命令:
定位到該用戶組目錄下,執行:
ls -all
會顯示類似:
drwxrwxr-x
這樣的結果(0775)。
轉載自 天緣博客