在Linux中,umask 和 ulimit有什麼區別?

黄嘉波發表於2024-06-12

在Linux系統中,umaskulimit 是兩個不同的命令,它們分別用於設定不同的系統屬性:

1. umask(使用者檔案建立掩碼)

umask(user file creation mask)是一個命令,用於設定新建立檔案和目錄的預設許可權。umask 定義了檔案系統建立檔案和目錄時預設應該遮蔽掉的許可權位。

  • 用途:控制新建立的檔案和目錄的預設許可權。
  • 工作原理umask 設定了一個掩碼,這個掩碼告訴系統在建立檔案或目錄時應該預設去掉哪些許可權位。通常,這個掩碼是一個三位八進位制數,分別對應所有者(owner)、組(group)和其他(others)的許可權。
  • 示例:如果設定 umask 022,那麼新建立的檔案預設許可權將是644(即rw-r--r--),新建立的目錄預設許可權將是755(即rwxr-xr-x)。這是因為預設許可權是666(檔案)或777(目錄),去掉umask指定的位(在本例中是其他使用者的寫許可權)。
2. ulimit(使用者限制)

ulimit 是一個命令,用於控制shell啟動程序的資源限制。這些限制可以是CPU時間、記憶體大小、程序數量等。

  • 用途:限制程序可以使用的系統資源。
  • 工作原理ulimit 設定了程序可以使用的資源的上限,包括但不限於:
    • core:核心檔案的大小(已棄用,通常設定為0)。
    • data:為程序的資料段分配的最大空間。
    • fsize:檔案大小的最大值。
    • memlock:鎖定在記憶體中的最大位元組數。
    • nofile:程序可以開啟的最大檔案描述符數。
    • stack:程序的棧空間大小。
    • cpu:CPU時間的最大值。
  • 示例:使用 ulimit -n 64 可以設定一個程序可以開啟的最大檔案描述符數為64。
3. 區別
  • 作用範圍umask 主要影響檔案和目錄的許可權設定,而 ulimit 影響程序可以使用的系統資源。
  • 預設行為umask 定義了檔案系統建立檔案和目錄時的預設許可權,ulimit 定義了程序可以使用的資源的最大限制。
  • 使用場景umask 通常在使用者的shell配置檔案中設定,以定義使用者建立檔案和目錄時的預設許可權;ulimit 可以在命令列中臨時設定,或在使用者的shell配置檔案中設定,以限制使用者程序可以使用的資源。

綜上所述,umaskulimit 都是用於系統管理的重要工具,但它們控制的是完全不同的方面。

相關文章