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