Unix檔案權限計算器(chmod)
互動式chmod權限計算器。勾選擁有者、群組、其他的權限位元,立即取得八進制數字和符號表示。也可直接輸入八進制數字進行解碼。
| tools.unix-permissions-calculator.label.read | tools.unix-permissions-calculator.label.write | tools.unix-permissions-calculator.label.execute | Oct | |
|---|---|---|---|---|
| tools.unix-permissions-calculator.label.owner | 7 | |||
| tools.unix-permissions-calculator.label.group | 5 | |||
| tools.unix-permissions-calculator.label.other | 5 |
常用預設值
chmod 755 filename運作原理
Unix權限與八進制表示的起源
Unix檔案權限由Ken Thompson於1969年在PDP-7上設計原始Unix時建立。每個檔案的inode儲存九個權限位元:擁有者三位、群組三位、其他三位。將每三位組合成一個八進制數字(0-7)是最自然的選擇,三個數字即可完整表示所有權限。此八進制慣例於POSIX.1-1988中標準化,此後所有Linux、macOS、BSD及類Unix系統均沿用至今。
符號表示(rwxr-xr-x)從最早的Unix發行版的`ls -l`輸出中出現,成為八進制數字的人類可讀補充。POSIX將兩種表示均定為規範,`chmod u+x file`使用符號形式,`chmod 755 file`使用八進制形式,最終都是對inode模式欄位的相同位元操作。
讀取、寫入、執行權限的含義
對於一般檔案:讀取(r=4)允許開啟並讀取檔案內容;寫入(w=2)允許修改或截斷檔案;執行(x=1)允許將檔案作為程式執行。各位元相互獨立。每個實體的八進制值是已設定位元的總和:rwx=7,r-x=5,r--=4。
對於目錄,含義有所不同。讀取(r)允許用`ls`列出目錄內容。執行(x)——有時稱為搜尋位元——允許用`cd`進入目錄並透過路徑存取其中的檔案。寫入(w)允許在目錄內建立、刪除或重新命名檔案。有讀取但無執行的目錄幾乎沒有實用價值。典型目錄權限為755。
常見權限模式與安全考量
644(rw-r--r--)是設定檔、HTML、文字檔的標準權限:擁有者可編輯,其他人唯讀。755(rwxr-xr-x)是目錄和可執行指令碼的標準:擁有者管理內容,其他人可瀏覽和讀取。600(rw-------)和700(rwx------)將存取完全限制給擁有者,適用於SSH私鑰和密碼檔案。請勿在Web公開的檔案上使用777;賦予「其他」寫入權限意味著系統上任意程序都可以覆寫該檔案。
umask決定新建檔案和目錄的預設權限。常見的umask 022意味著新檔案權限為644,新目錄為755(從檔案預設666和目錄預設777中減去umask對應的位元)。了解chmod值和umask的配合關係,可以完全掌控系統的權限基線。
常見問題
›755代表什麼含義?
755表示擁有者擁有讀+寫+執行(7=4+2+1),群組擁有讀+執行(5=4+1),其他擁有讀+執行(5=4+1)。這是目錄和可執行指令碼的標準權限。
›644代表什麼含義?
644表示擁有者擁有讀+寫(6=4+2),群組唯讀(4),其他唯讀(4)。這是設定檔、網頁等一般檔案的預設權限。
›目錄為什麼需要執行權限?
對於目錄,執行位元是「搜尋位元」。沒有它就無法cd進入該目錄或透過路徑開啟其中的檔案,即使有讀取權限也不行。只有讀取而沒有執行的目錄在實踐中幾乎沒有用。
›擁有者、群組、其他有什麼區別?
擁有者是擁有該檔案的使用者帳號(建立時設定,可用chown修改)。群組是檔案所屬的群組(可用chgrp修改),該群組內的使用者適用群組權限。其他涵蓋系統上既非擁有者又不在群組的所有使用者。
›什麼是SUID和SGID?
SUID(設定使用者ID)和SGID(設定群組ID)是超出標準九位元的特殊權限位元。可執行檔設定SUID後,以檔案擁有者的權限執行而非呼叫者權限——passwd和sudo等指令就使用了這一機制。目錄上的SGID使新建檔案繼承目錄的群組。符號表示中用「s」表示(如rwsr-xr-x),八進制值加4000或2000(如4755)。
›chmod 777有危險嗎?
是的,特別是在共用系統或Web伺服器上。777對系統上所有使用者授予完整的讀取、寫入和執行權限。包括遭入侵的Web應用在內的任何程序都可以覆寫或執行該檔案,在Web伺服器上往往會導致任意程式碼執行。請將權限限制在必要的最小範圍內。
›如何使用chmod指令?
使用`chmod 八進制 路徑`對單一檔案生效,`chmod -R 八進制 目錄`遞迴套用。例如:`chmod 644 index.html`或`chmod 755 /var/www`。也可使用符號語法:`chmod u+x script.sh`僅為擁有者新增執行權限而不影響其他位元。
›umask是什麼?
umask是建立新檔案或目錄時套用於預設權限的遮罩。umask 022會從群組和其他移除寫入權限,使新檔案為644,新目錄為755。在Shell中執行`umask`可查看目前設定,`umask 值`可修改目前會話的設定。
相關工具
最後更新: