首頁 > 軟體

Linux中的umask命令圖文範例

2020-06-16 16:34:30

在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。

如果您有任何疑問,請在下面留言。


IT145.com E-mail:sddin#qq.com