檔案和目錄之umask函式

2021-09-08 17:05:08 字數 1485 閱讀 4516

本篇博文內容摘自《unix環境高階程式設計》(第二版),僅作個人學習記錄所用。關於本書可參考:

umask函式為程序設定檔案模式建立遮蔽字,並返回以前的值。(這是少數幾個沒有出錯返回函式中的乙個。)

#include mode_t umask( mode_t cmask);
返回值:以前的檔案模式建立遮蔽字

其中,引數cmask是由s_irusr、s_iwusr、s_ixusr、s_irgrp、s_iwgrp、s_ixg、s_iroth、s_iwoth及s_ixoth這9個常量中的若干個按位「或」構成的。

在程序建立乙個新檔案或新目錄時,就一定會使用檔案模式建立遮蔽字。對於任何在檔案模式建立遮蔽字中為1的位,在檔案mode中的相應位則一定被關閉。

程式清單4-3 umash函式例項

[root@localhost apue]# cat prog4-3

.c#include

"apue.h

"#include

#define rwrwrw (s_irusr|s_iwusr|s_irgrp|s_iwgrp|s_iroth|s_iwoth)

intmain(

void

)

若執行此程式可以得到如下結果,從中可見訪問許可權是如何設定的。

[root@localhost apue]# ./prog4-3

[root@localhost apue]# ls -l foo bar

-rw------- 1 root root 0

01-02

02:00

bar-rw-rw-rw- 1 root root 0

01-02

02:00 foo

更改程序的檔案模式建立遮蔽字並不影響其父程序(常常是shell)的遮蔽字。

所有shell都有內建umask命令,我們可以用該命令設定或列印當前檔案模式建立遮蔽字。

使用者可以設定umask值以控制他們所建立檔案的預設許可權。該值表示成八進位制數,一位代表一種要遮蔽的許可權(讀-4、寫-2、執行-1,可相加如6-讀寫)。設定了相應位後,它所對應的許可權就會被拒絕。常用的幾種umask值是002、022、和027,002阻止其他使用者寫你的檔案,022阻止同組成員和其他使用者寫你的檔案,027阻止同組成員寫你的檔案以及其他使用者讀、寫或執行你的檔案。

single unix specification要求shell支援符號形式的umask命令。與八進位制格式不同,符號格式指定許可的許可權(即在檔案建立遮蔽字中為0的位)而非拒絕的許可權(即在檔案建立遮蔽字中為1的位)。下面比較了兩種格式的命令:

[root@localhost apue]# umask

0022

[root@localhost apue]# umask -s

u=rwx,g=rx,o=rx

linux中的umask與檔案和目錄許可權的關係

1 檢視當前的umask值 localhost test umask 2 修改當前umask的值 localhost test umask 0002 localhost test umask 0022 i localhost test umask 0022 localhost test umask ...

目錄和檔案許可權,umask ,檔案隱藏屬性

許可權 rw r r 1 root root 5450 10月 24 21 34 1.txt rw 屬主許可權,是檔案所屬主的 r 屬組許可權,是檔案所屬組的 r 其他人許可權 ps 最後一位的點,表示檔案或目錄是在selinux開啟下建立的 關於selinux 配置檔案 root shuai 01...

Linux檔案預設許可權和umask筆記

關於linux檔案預設許可權的問題,可以實際先嘗試一下如下命令 root使用者登入 root localhost test touch file1 root localhost test ls l file1 rw r r 1 root root 0 may 5 08 28 file1 輸出結果 對...