umask 概述
操作系統在創建新文件或目錄時會授予默認權限。在這些默認權限中,`umask` 值被 '排除',最終權限由此決定。`umask` 在安全性方面非常重要,例如,可以防止重要的設置文件以過於開放的權限創建。每個用戶會話的 `umask` 值可以設置不同,通常在 `.bashrc` 或 `.profile` 等 shell 初始化文件中進行設置。
umask 的工作原理
`umask` 是 **指定要 '排除' 的權限的掩碼值,而不是允許的權限**。也就是說,最終權限是從最大默認權限中減去 `umask` 值的結果。
默認最大權限
- 文件: `666` (讀取和寫入,無執行權限)
- 目錄: `777` (包括讀取、寫入和執行權限)
umask 計算方式
`umask` 以 3 位八進制數字表示 (例如: `022`, `002`)。此值按擁有者 (User)、組 (Group)、其他 (Others) 的順序應用。每位數字表示權限位 (讀取=4,寫入=2,執行=1) 的總和。最終權限計算如下:
類型 | 默認最大權限 | 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` 檢查更改的權限是否生效。