檔案權限(file permissions)
在一台共用的電腦上,不該是每個人都能讀別人的日記、或刪掉系統的檔案。檔案權限就是那套簡單、歷經考驗、決定誰能對每個檔案做什麼的規則。經典的 Unix 方案對每個檔案回答兩個問題:是「誰」在要求,以及他們想要「哪一個」動作?
它把世界相對於一個檔案分成三類:擁有者(通常是檔案的建立者)、群組(一組共享存取權的具名使用者)、以及其他人(其餘所有人)。對每一類,它准許或拒絕三個動作:讀取(看內容)、寫入(改內容)、執行(把檔案當程式跑;對目錄而言,執行意味著進入它的權限)。那就是三類乘以三個動作,總共九個位元,常以像 rwxr-xr-x 的字串顯示,讀作擁有者 rwx、群組 r-x、其他人 r-x。同樣這九個位元可以寫成一個八進位數字,這就是 chmod 755 的由來:7 是擁有者的 rwx,每個 5 是 r-x。當一個行程碰一個檔案時,作業系統檢查相關那一類的位元,再准許或拒絕該動作。
為什麼重要:這個方案是類 Unix 系統上保護的日常基礎——精簡到只用幾個位元就能存下,卻又有足夠的表達力應付大多數需求。它誠實的限制正是那份精簡。只有三類,你無法說「這兩個特定的人可以寫,那五個人只能讀」——群組是單一的一桶。正是這個缺口,催生了存取控制清單去填補。一個常見的誤解:把檔案設成可執行並不會讓它執行起來安全;執行位元只是授予權限,它對程式是否可信隻字未提。
一個權限為 rwxr-xr-x(chmod 755)的指令稿:擁有者可以讀、寫、執行它;群組與其他人可以讀和執行,但不能修改它。把它改成 rwxr-x---(chmod 750),其他人就完全失去所有存取權。
三類(擁有者/群組/其他)乘以三個動作(讀/寫/執行)= 九個位元。
三類太粗,無法對許多特定使用者授予不同的權利——那正是 ACL 所補上的。而執行位元只是授予執行檔案的權限;它對程式是否安全隻字未提。