umask
Header Files
#include <sys/types.h>
#include <sys/stat.h>
Function Prototype
mode_t umask(mode_t cmask);Function
umask 和 chmod 的權限是同樣的形式呈現
常見的是022,代表我們在建立檔案時不能讓 group 和 others 有 write 權限
舉例來說:我們在創建檔案時設定777,但創建完後我們用 ls -la 看時會是 755,因為 umask 避免我們不小心給到 write 權限
Remark
Process Independent
每個 process 都有自己的 internal umask,而我們呼叫 umask 這個 system call 也只會更改該 process 的 umask
Inheritance
當我們用 fork() 建立一個 child process,這個 child process 的 umask 值會和 parent process一樣,但是因為 umask 是 process independent,我們在 child process 修改 umask 並不會影響到 parent process
Built-In Command
umask 是 built-in command,shell 並不需要 fork 一個 child process 來執行這個 command
umask
umask 存在 PCB 中