2021-05-12 14:32:11
Linux中的umask命令圖文範例
在Linux和Unix作業系統上,所有新檔案都使用一組預設許可權建立。 umask實用程式允許您檢視或設定檔案模式建立掩碼,該掩碼確定新建立的檔案或目錄的許可權。
mkdir、touch、tee和其他建立新檔案和目錄的命令都使用它。
Linux許可權
在進一步討論之前,讓我們簡要介紹一下Linux許可權模式。
在Linux中,每個檔案都與一個所有者和一個組相關聯,並為三個不同類別的使用者分配了存取許可權:
- 檔案所有者。
- 組成員。
- 其他使用者。
有三種許可權型別適用於每個類:
- 讀取許可權。
- 寫許可權。
- 執行許可權。
此概念允許您指定允許哪些使用者讀取檔案,寫入檔案或執行檔案。
要檢視檔案許可權,請使用ls命令:
linuxidc@linuxidc:~/www.linuxidc.com$ ls -l linuxidc.com.py
輸出範例:
-rw-r--r-- 1 linuxidc linuxidc 53 Jul 15 03:18 linuxidc.com.py
|[-][-][-] [------] [---]
| | | | | |
| | | | | +-----------> 組
| | | | +-------------------> 所有者
| | | +----------------------------> 其他許可權
| | +-------------------------------> 組許可權
| +----------------------------------> 所有者許可權
+------------------------------------> 檔案型別
先詳細描述第一行其中每項代表的含義:
-rw-r–r–
1) 第一個字元表示檔案型別,可以是常規檔案(-)、目錄(d)、符號連結(l)或任何其他特殊型別的檔案。接下來的9個字元代表許可權,每組3個字元。第一組顯示所有者許可權,第二組顯示組許可權,最後一組顯示所有其他人的許可權。
2)rw-表示可讀可寫,代表所有者u的許可權。
3)第一個r–表示可讀,代表所屬組g的許可權(相同許可權的人放在一起就是一組);第二個r–表示可讀,代表其他人o的許可權。
r 讀 w 寫 x 執行
數位2表示該檔案被呼叫次數
第一個linuxidc表示所有者u
第二個linuxidc表示所屬組g,在這裡表示和root一個組的其他使用者
53是檔案大小,單位是位元組(byte)
Jul 15 03:18表示檔案最後一次修改時間
linuxidc.com.py是檔名
還有另外三種特殊的檔案許可權型別:setuid、setgid和Sticky Bit。
如果我們使用數位表示法表示檔案許可權,我們將得到數位644:
- 所有者:
rw-
=4+2+0 = 6
- 組:
r--
=4+0+0 = 4
- 其他人:
r--
=4+0+0 = 4
以數位表示法表示時,許可權可以有三個或四個八進位制數位(0-7)。第一個數位表示特殊許可權,如果省略則表示沒有為檔案設定特殊許可權。
可以使用chown命令使用chmod命令和所有權更改檔案許可權。
了解umask
預設情況下,在Linux系統上,檔案的預設建立許可權是666,它為使用者、組和其他使用者提供讀和寫許可權;目錄的預設建立許可權是777,這意味著對使用者、組和其他使用者具有讀、寫和執行許可權。Linux不允許建立具有執行許可權的檔案。
可以使用umask實用程式修改預設的建立許可權。
umask只影響當前的shell環境。在大多數Linux發行版上,預設的系統範圍umask值是在pam_umask.so 或 /etc/profile 檔案中設定的。
如果希望根據每個使用者指定不同的值,請編輯使用者的shell組態檔,例如~/.bashrc 或 ~/.zshrc。(您還可以通過執行umask後面跟著所需的值來更改當前對談umask值。
要檢視當前掩碼值,只需輸入umask,不帶任何引數:
linuxidc@linuxidc:~/www.linuxidc.com$ umask
輸出範例:
0022
第一個 0 表示的是特殊許可權位,對 umask 來說,有效的設定值只有後三位數。
正如我們已經提到的,檔案的預設建立許可權是666和目錄777。要計算新檔案的許可權,請從預設值中減去umask值。
例如,要計算unask 022將如何影響新建立的檔案和目錄,請使用:
檔案:666 - 022 = 644。所有者可以讀取和修改檔案。 組和其他人只能讀取檔案。
目錄:777 - 022 = 755。所有者可以進入目錄並列出讀取,修改,建立或刪除目錄中的檔案。 組和其他人可以進入目錄並列出並讀取檔案。
您還可以使用-S選項以符號表示法顯示掩碼值:
linuxidc@linuxidc:~/www.linuxidc.com$ umask -S
輸出範例:
u=rwx,g=rx,o=rx
與數位表示法不同,符號表示法值包含將在新建立的檔案和目錄上設定的許可權。
設定掩碼值
可以使用八進位制或符號表示法設定檔案建立掩碼。要使更改永久化,請在/etc/profile檔案等全域性組態檔中設定新的umask值,這將影響所有使用者或使用者的shell組態檔,如,~/.profile,~/.bashrc 或 ~/.zshrc會影響使用者。使用者檔案優先於全域性檔案。
在更改umask值之前,請確保新值不會帶來潛在的安全風險。應該非常謹慎地使用低於022的限制值。例如,umask 000表示任何人都對所有新建立的檔案具有讀,寫和執行許可權。
假設我們想為新建立的檔案和目錄設定更嚴格的許可權,以便其他人無法cd到目錄和讀取檔案。我們想要的許可權是目錄750和檔案640。
要計算umask值,只需從預設值中減去所需的許可權:
Umask值:777-750 = 027
以數位表示法表示的所需umask值是027。
要在系統範圍內永久設定新值,請使用文字編輯器開啟/etc/profile檔案:
sudo nano /etc/profile
並在檔案的開頭更改或新增以下行:
umask 027
要使更改生效,請執行以下源命令或登出並登入:
source /etc/profile
要驗證新設定,我們將使用mkdir和touch建立一個新檔案和目錄:
mkdir linuxidc
touch linuxmi
如果使用ll命令檢查許可權,您將注意到新檔案具有640和新目錄750許可權,如我們所願:
輸出範例:
drwxr-x--- 2 linuxidc linuxidc 4096 Jul 23 22:48 linuxidc/
-rw-r----- 1 linuxidc linuxidc 0 Jul 23 22:49 linuxmi
設定檔案建立掩碼的另一種方法是使用符號表示法。 例如,umask u=rwx,g=rx,o=與umask 027相同。
總結
在本指南中,我們已經解釋了Linux許可權以及如何使用umask命令為新建立的檔案或目錄設定許可權。
有關更多資訊,請在終端中鍵入man umask。
如果您有任何疑問,請在下面留言。
相關文章