歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Linux mkdir函數mode權限設置

用C操作Linux目錄時,遇到幾個mkdir小問題,順帶總結一下,在Linux上操作文件或目錄,遇到最多的可能就是權限問題了,都是顯式錯誤,所以這些問題在開發階段就很容易暴露和解決。畢竟不是只做Linux平台開發,所以過些日子說不准又會忘記了。

mkdir的函數原型(使用時需包含#include <sys/stat.h>):

int mkdir(const char *path, mode_t mode);

參數:

path——目錄名,比如abc,/var/www/abc等

mode——目錄權限

返回值:

返回0 表示成功, 返回 -1表示錯誤,並且會設置errno值。

 

當然你也可以不用那些類似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)。

Copyright © Linux教程網 All Rights Reserved