每個檔案有9個訪問許可權位,可將它們分為3類:
9個訪問許可權位
st_mode遮蔽
含義s_irusr
s_iwusr
s_ixusr
使用者讀使用者寫
使用者執行
s_irgrp
s_iwgrp
s_ixgrp
組讀組寫
組執行s_iroth
s_iwoth
s_ixoth
其他讀其他寫
其他執行
umask函式為程序設定檔案模式建立遮蔽字,並返回之前的值。
#include mode_t umask(mode_t cmask);
返回值:之前的檔案模式建立遮蔽字
其中,引數cmask是由**中的9個常量中的若干個按位「或」構成的。
在程序建立乙個新檔案或者新目錄時,就一定會使用檔案模式建立遮蔽字。在檔案模式建立遮蔽字中為1的位,在檔案mode中的相應位一定被關閉。
#include #include #include #include #include #define rwrwrw (s_irusr|s_iwusr|s_irgrp|s_iwgrp|s_iroth|s_iwoth)
int main(void)
umask(s_irgrp|s_iwgrp|s_iroth|s_iwoth);
if (creat("bar", rwrwrw) < 0)
exit(0);
}
mali@mali:~/code/file_dir$ umask
0002
mali@mali:~/code/file_dir$ gcc umask.c -o umask
mali@mali:~/code/file_dir$ ./umask
mali@mali:~/code/file_dir$ ls -l
total 16
-rw------- 1 mali mali 0 8月 13 21:48 bar
-rw-rw-rw- 1 mali mali 0 8月 13 21:48 foo
-rwxrwxr-x 1 mali mali 8760 8月 13 21:48 umask
-rw-rw-r-- 1 mali mali 466 8月 13 21:47 umask.c
mali@mali:~/code/file_dir$ umask
0002
mali@mali:~/code/file_dir$
在該示例中,我們用shell的umask命令在執行程式的前後列印檔案模式建立遮蔽字。從中可見,更改程序的檔案模式建立遮蔽字並不影響其父程序的遮蔽字。
使用者可以設定umask值控制他們所建立檔案的預設許可權。該值表示成八進位制數,一位代表一種要遮蔽的許可權。設定了相應位後,它所對應的許可權就會被拒絕。常用的幾種umask值是002、022和027。002阻止其他使用者寫入你的檔案,022阻止同組成員和其他使用者寫入你的檔案,027阻止同組成員寫你的檔案以及其他使用者讀、寫或執行你的檔案。
umask檔案訪問許可權位
遮蔽位含義0400
使用者讀0200
使用者寫0100
使用者執行
0040
組讀0020
組寫0010
組執行0004
其他讀0002
其他寫0001
其他執行
mali@mali:~/code/file_dir$ umask
0002
mali@mali:~/code/file_dir$ umask -s
u=rwx,g=rwx,o=rx
mali@mali:~/code/file_dir$ umask 027
mali@mali:~/code/file_dir$ umask -s
u=rwx,g=rx,o=
mali@mali:~/code/file_dir$ umask 022
mali@mali:~/code/file_dir$ umask -s
u=rwx,g=rx,o=rx
mali@mali:~/code/file_dir$
linux檔案和目錄
ubuntu沒有碟符這個概念,只有乙個根目錄 所有檔案都在它下面 位於 home user,稱之為使用者工作目錄或家目錄,表示方式 home user 絕對路徑 從 目錄開始描述的路徑為絕對路徑,如 cd home ls usr 相對路徑 從當前位置開始描述的路徑為相對路徑,如 cd ls abc ...
Linux檔案和目錄
多使用者作業系統 指一台計算機在同一時間可以由多個使用者使用,多個使用者共同享用系統的全部硬體和軟體資源 位於 home user,稱之為使用者工作目錄或家目錄,表示方式 home user bin usr bin 可執行二進位制檔案的目錄,如常用的命令 ls tar mv cat 等 boot 放...
Linux 檔案和目錄
多使用者作業系統 指一台計算機在同一時間由多個使用者使用,多個使用者同時共享系統的全部硬體和軟體資源。windows中,每個驅動器都有自己的根目錄,即碟符c,d,e等,但在linux中,看不到驅動碟符,能看到的是資料夾。ubuntu中沒有碟符這個概念,只有乙個根目錄 所有檔案都在它下面 使用者的家目...