首頁 > 檔案與目錄管理 > umask

umask 命令指南:設置新創建文件/目錄的默認權限

`umask` 命令 (user file-creation mode mask) 用於控制在 Linux 和 Unix 類操作系統中新創建的文件和目錄的默認訪問權限。它通過設置自動應用於文件創建時的權限限制掩碼,防止文件以不必要的廣泛權限創建,從而在安全性方面扮演重要角色。通過本指南,您將了解 `umask` 的概念和使用方法。

umask 概述

操作系統在創建新文件或目錄時會授予默認權限。在這些默認權限中,`umask` 值被 '排除',最終權限由此決定。`umask` 在安全性方面非常重要,例如,可以防止重要的設置文件以過於開放的權限創建。每個用戶會話的 `umask` 值可以設置不同,通常在 `.bashrc` 或 `.profile` 等 shell 初始化文件中進行設置。

umask 的工作原理

`umask` 是 **指定要 '排除' 的權限的掩碼值,而不是允許的權限**。也就是說,最終權限是從最大默認權限中減去 `umask` 值的結果。

默認最大權限

  • 文件: `666` (讀取和寫入,無執行權限)
  • 目錄: `777` (包括讀取、寫入和執行權限)

umask 計算方式

`umask` 以 3 位八進制數字表示 (例如: `022`, `002`)。此值按擁有者 (User)、組 (Group)、其他 (Others) 的順序應用。每位數字表示權限位 (讀取=4,寫入=2,執行=1) 的總和。最終權限計算如下:

umask 計算示例 (umask 022) 通過常用的 `umask 022` 情況來了解最終權限是如何決定的。
類型 默認最大權限 umask 最終權限
文件 666 (rw-rw-rw-) 022 (--w--w-) 644 (rw-r--r--)
目錄 777 (rwxrwxrwx) 022 (--w--w-) 755 (rwxr-xr-x)

一般 umask 值

大多數系統的默認 `umask` 值為 `0022` 或 `0002`。前面的 `0` 代表特殊權限 (sticky bit, SGID, SUID),通常設置為 `0`。

一般 umask 值的意義

  • `umask 022`: 文件以 `644`(rw-r--r--) 創建,目錄以 `755`(rwxr-xr-x) 創建。這是賦予擁有者所有權限、賦予組和其他用戶讀取和執行權限的最常見設置。
  • `umask 002`: 文件以 `664`(rw-rw-r--) 創建,目錄以 `775`(rwxrwxr-x) 創建。這允許組用戶也擁有寫入權限,方便同組內的協作。
  • `umask 077`: 文件以 `600`(rw-------) 創建,目錄以 `700`(rwx------) 創建。這是非常嚴格的權限設置,除了擁有者外,沒有人可以訪問。適合對安全性要求非常高的個人文件或目錄。

主要 umask 命令選項

`umask` 命令用於檢查當前值或設置新值。若不帶選項則顯示當前 `umask` 值。

1. umask 值檢查與設置

生成的命令:

請試著組合命令。

這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。

`umask` 執行命令。

請將上述選項組合在一起,與 AI 一同虛擬執行命令。

使用示例

通過 `umask` 命令的各種應用示例,了解如何檢查和設置新創建文件及目錄的默認權限。

檢查當前 umask 值

umask

檢查當前 shell 會話的 `umask` 值,以八進制 (例如: `0022`) 顯示。

以符號模式檢查 umask 值

umask -S

檢查 `umask` 值,以 'u=rwx,g=rx,o=rx' 形式顯示最終的允許權限。

設置 umask 值為 002

umask 002

將新創建的文件設置為 `664`(rw-rw-r--),將目錄設置為 `775`(rwxrwxr-x) 權限,從而更改 `umask`。(允許同一組用戶的寫入權限)

設置嚴格的 umask 值為 077

umask 077

將新創建的文件設置為 `600`(rw-------),將目錄設置為 `700`(rwx------) 權限,從而更改 `umask`。除了擁有者外,無人可訪問。

更改 umask 後檢查文件/目錄創建權限

umask 002
touch test_file_002.txt
mkdir test_dir_002
ls -l test_file_002.txt test_dir_002

將 umask 設置為 `002` 後,創建新的文件和目錄,並使用 `ls -l` 檢查更改的權限是否生效。


相同類別命令