天天看點

linux檔案權限指令umask

umask:設定所建立檔案或目錄的預設權限

umask值是個掩碼,它會屏蔽掉不想授予該安全級别的權限,建立檔案或目錄時,需要将umask值從對象的全權限中減掉,對檔案來說,全權限的值是666(所有使用者都有讀和寫的權限);對目錄來說,全權限值則是777(所有使用者都有讀、寫和可執行權限)。

如何通過umask值計算建立檔案的預設權限?

計算方法:(檔案或目錄的全權限) & ~(umask值)

舉例:建立一個檔案test.c,umask值為0033

檔案的全權限為666,是以最終檔案的權限為(110110110) & ~(000011011) = 110100100,對應三字元的編碼為-rw-r--r--,代表檔案屬主具有可讀可寫權限,屬組可讀,其他使用者可讀。

在大多數Linux發行版中,umask值通常會設定在/etc/profile啟動檔案中,也有一些是設定在/etc/login.defs檔案中(如Ubuntu),也可以在任何一個終端使用指令umask設定指定一個新的掩碼值,但設定僅在該終端有效,關閉終端後,umask恢複為之前的預設值。

如何讓umask設定永久有效?

1、有root權限,直接修改啟動檔案/etc/profile中或/etc/login.defs的umask設定。

linux檔案權限指令umask

2、無root權限,以bash shell為例,其他shell也有對應的啟動檔案,首先确認$HOME目錄下的啟動檔案,通常可能存在$HOME/.bash_profile、$HOME/.bash_login、$HOME/.profile檔案中一兩種,shell會按照下列順序,運作第一個被找到的檔案,餘下的則被忽略:

$HOME/.bash_profile

$HOME/.bash_login

$HOME/.profile

例如,$HOME下僅有$HOME/.profile檔案,打開$HOME/.profile檔案,通常會這個檔案中會運作$HOME/.bashrc,是以在.bashrc中加入指令“umask 掩碼值”,建議在檔案的最後加上此指令,以防止指令被後面的同指令覆寫。

linux檔案權限指令umask

【建議】:如果工作涉及到使用linux伺服器,建議使用umask将建立檔案或目錄的預設權限修改為适當的值如033等。

參考:

1、http://c.biancheng.net/view/764.html

2、https://man7.org/linux/man-pages/man2/umask.2.html

3、《linux指令行與shell腳本程式設計大全》第3版

繼續閱讀