GNU 和 Unix 系統是被設置為可以多人使用同一部電腦,但亦能把某些檔案設定為私人的,或是可以使某些人不能更改某些檔案。您可以試一試去驗證。用您自己的賬號登入,即是不要使用 root。
現在輸入 ls -l /etc/resolv.conf,
您會得到類似這樣的輸出:
首先,來個簡短的技術性解釋:-rw-r--r-- 是檔案的狀態,1 是指著這個檔案的硬性連結 (hard link)(或是一個目錄中的檔案數目),而那兩個 root 是分別指擁有這個檔案的用戶 (user) 和群組 (group)。
是的,這是有點難以理解,現在就讓我們慢慢地解釋吧。
每一個檔案都有兩個擁有者:用戶和群組。先前的那個例子有點混淆,因為除了用戶 root 之外還有一個群組叫做 root。群組只是一些被一同容許存取系統某部份的用戶。games 群組就是一個好例子。
這是一個比較實際的例子。幻想您現在正為一所學校架設一部電腦,您可能想設置某些檔案為只可以讓老師存取,而學生是不可以的,因此您把所有的老師都放到同一個群組�堨h。跟著您便告訴系統哪些檔案是屬於群組 teachers 的成員,而其他人就不能接觸到這些檔案的。
現在就讓我們探索一下系統中的群組。首先,您可以在 shell prompt 用指令 groups,這樣會顯示您所屬於的群組。例子如下:
很大機會您只是一個群組的成員,而那個群組的名稱和您的用戶名稱是一樣的。不過,root 可以加您到別的群組中。以上的例子表示那個用者是五個群組的成員。
提示: 如果您是剛安裝 Debian 的,您可能是唯一的用戶。您可以使用 adduser 指令來增加用戶。
檔案和目錄除了是被用戶及群組所擁有之外,它們還有一個狀態。狀態決定誰可以讀、寫、和執行那個檔案(如果它是一個程式)。其實還有其它的東西決定檔案的狀態,但這些是較深的課題,所以我們亦不會在此討論。
在 ls 的輸出�堙A我們可以看到檔案的狀態是:-rw-r--r--。我們會把它分成九部份來看:擁有檔案的用戶、群組、和其他用戶(others,即是系統的所有用戶,有時會稱這個為world)的讀 (read),寫 (write),及執行 (execute) 權限。
在狀態一行中,第一個「元素」是檔案種類 (file type)。這�堛� - 表示這是一個普通的檔案。如果它是 d,那麼我們就是在檢查一個目錄。還有其它的種類,因太複雜所以不會在這�婺捋﹛C詳細資料可看第
頁的第 13.2.2 節。
剩下來的九個元素是用來顯示檔案的狀態,那九個位(用戶、群組、和其他用戶的讀、寫和執行權)是由三組 rwx 來表示。
所以如果檔案所有的權限都被許可,而它又是一個普通的檔,狀態將會是類似這樣:-rwxrwxrwx。如果它是一個目錄,而所有其他用戶的權限都被釋放,但用戶和群組都被賦予所有權限,那麼狀態將會是:drwxrwx---。
|
|
目錄的狀態的意義可能有點混淆,所以這�埵酗@些例子用來闡明不同組合的效果:
目錄的寫入權限決定了您是否可以刪除目錄中的檔案,如果您有權寫入一個目錄,您亦可以把內�堛漱@個唯讀檔案刪除掉;然而您不可以刪除一個唯讀目錄中的檔案,就算您有權更改那些檔案。
亦即是說,如果您擁有一個目錄,您就一定可以刪除內�堛瑰仵蛂A就算那些檔案是屬於 root 的。
目錄的執行權限決定您是否有權存取檔案──亦因此決定檔案權限的用處。如果您擁有一個目錄的執行權限,這個目錄類檔案的權限就會變得有關係了,否則,檔案權限是什麼也沒有所謂的,因為反正您也不能存取得到那些檔案。
在這一節我們會看看一個示範怎樣使用權限的例子,以下會利用到 chmod 這個指令去改變權限的。
$ touch myfile
若您還記得,用 cd 可以立即回到您自己的 home 目錄; touch 通常是用來把檔案的更新日期 (modification time) 改為現在的時間。但它有另一個有趣的特點:如果檔案不存在,touch 便會製造它。所以您是用它來製造一個作練習用的檔案。用 ls -l 來確定檔案真的已被建立,並且記住它的權限模狀態:
-rw-r--r-- 1 user user 0 Nov 18 22:04 myfile
-rw-r--r-- 是 Debian 上的預設權限。
但在問題�堨X現的那個 0444 究竟是什麼呢?其實權限是由一個 12 個位的二進制數字所組成,如 000100100100。044 就是這個二進制數字的八進制寫法,八進制是填寫狀態的慣用寫法。所以除了輸入 chmod ugo=r myfile 之外,您還可以鍵入 chmod 444 myfile。