FreeBSD 源自於 BSD UNIX®,繼承了幾個重要的 UNIX 概念。 首先也最明顯,它是一款 multi-user 作業系統。 它可以同時處理多人多工, 負責徹底的分享與管理來自每位使用者對硬碟裝置、週邊設備、記憶體及 CPU 時間的要求。
也因為系統能夠支援多使用者, 所以系統管理的一切都有權限來決定誰可以讀取、寫入或執行資源。 這些權限分別使用三組八進位的數字儲存,一組代表檔案的所有者, 一組代表檔案所屬的群組,而最後一組則代表其他所有人。 表示這些數字的方式如下:
值 | 權限 | 目錄顯示 |
---|---|---|
0 | 不可讀取, 不可寫入, 不可執行 | --- |
1 | 不可讀取, 不可寫入, 可執行 | --x |
2 | 不可讀取, 可寫入, 不可執行 | -w- |
3 | 不可讀取, 可寫入, 可執行 | -wx |
4 | 可讀取, 不可寫入, 不可執行 | r-- |
5 | 可讀取, 不可寫入, 可執行 | r-x |
6 | 可讀取, 可寫入, 不可執行 | rw- |
7 | 可讀取, 可寫入, 可執行 | rwx |
使用 ls(1) 指令時,可以加上
-l
參數, 來檢視詳細的目錄清單。
清單中欄位的資訊包含檔案對所有者、群組及其他人的權限。 在任一個目錄底下執行 ls -l,會顯示如下的結果:
% ls -l total 530 -rw-r--r-- 1 root wheel 512 Sep 5 12:31 myfile -rw-r--r-- 1 root wheel 512 Sep 5 12:31 otherfile -rw-r--r-- 1 root wheel 7680 Sep 5 12:31 email.txt ...
在這裡告所您該如何區分 ls -l 第一欄當中的資訊:
-rw-r--r--
第一個 (最左邊) 的字元用來表示這個檔案的類型為何, 除標準檔案以外,尚有目錄、特殊字元裝置 (Special character device)、 Socket 及其他特殊虛擬檔案裝置 (Special pseudo-file device), 在此例當中,- 表示該檔案為一個標準的檔案。 範例中接下來的三個字元中,rw- 代表所有者對檔案擁有的權限。 再接下來的三個字元, r-- 則代表群組對檔案擁有的權限, 最後三個字元,r-- 則代表其他人對檔案擁有的權限。 破折號 (-) 表示沒有權限,範例中的這個檔案的權限, 只允許所有者讀取、寫入檔案,群組以及其他人僅能讀取檔案。 根據以上的表格,此種權限的檔案可以使用 644 來表示, 每組數字分別代表檔案的三種權限。
以上是不錯的方式,但系統該如何控制裝置的權限? 實際上 FreeBSD 對大多的硬碟裝置就如同檔案,程式可以開啟、讀取以及寫入資料如一般檔案。 這些特殊裝置檔案 (Special device file) 都儲存於 /dev 目錄中。
目錄也同如檔案,擁有讀取、寫入及執行的權限, 但在執行權限上與檔案有明顯的差異。 當目錄被標示為可執行時,代表可以使用 “cd” (更改目錄) 進入該目錄。 也代表能夠存取在此目錄之中的已知檔名的檔案 (當然,檔案仍擁有自己的權限)
尤其,要能夠列出目錄內容,必須擁有目錄的讀取權限。 而當要刪除已知檔名的檔案時,也必須擁有檔案所在目錄的寫入 以及 執行的權限。
還有一些權限,但這些權限主要在特殊情況使用,如 setuid binaries 及 sticky directories。 如果您還想知道更多檔案權限的資訊及使用方法,請務必參閱 chmod(1) 說明文件。
權限符號可稱做符號表示, 使用字元的方式來取代使用數值來設定檔案或目錄的權限。 符號表示的格式依序為 (某人)(動作)(權限),可使用的符號如下:
項目 | 字母 | 意義 |
---|---|---|
(某人) | u | 使用者 |
(某人) | g | 群組所有者 |
(某人) | o | 其他 |
(某人) | a | 全部(“world”) |
(動作) | + | 增加權限 |
(動作) | - | 移除權限 |
(動作) | = | 指定權限 |
(權限) | r | 讀取 |
(權限) | w | 寫入 |
(權限) | x | 執行 |
(權限) | t | Sticky bit |
(權限) | s | Set UID 或 GID |
如先前同樣使用 chmod(1) 指令來設定,但使用的參數為這些字元。 例如,您可以使用下列指令禁止其他使用者存取檔案 FILE:
% chmod go= FILE
若有兩個以上的符號表示可以使用逗號 (,) 區隔。 例如,下列指令將會移除群組及其他人對檔案 FILE 的寫入權限, 並使全部人(“world”)對該檔有執行權限。
% chmod go-w,a+x FILE
除了前面提到的檔案權限外,FreeBSD 支援使用 “檔案旗標”。 這些旗標增加了檔案的安全性及管理性,但不包含目錄。
檔案旗標增加了管理性,確保在某些時候 root 不會意外將檔案修改或移除。
修改的檔案 flag 僅需要使用擁有簡易的介面的 chflags(1) 工具。 例如,標示系統禁止刪除的旗標於檔案 file1,使用下列指令:
# chflags sunlink file1
若要移除系統禁止刪除的旗標,只需要簡單在 sunlink
前加上 “no”,例如:
# chflags nosunlink file1
使用 ls(1) 及參數 -lo
可檢視檔案目前的旗標:
# ls -lo file1
輸出的結果如下:
-rw-r--r-- 1 trhodes trhodes sunlnk 0 Mar 1 05:54 file1
多數的旗標僅能由 root 使用者來標示或移除,而部份旗標可由檔案所有者設定。 我們建議系統管理者可閱讀 chflags(1) 及 chflags(2) 說明以瞭解相關細節。
本文及其他文件,可由此下載:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/。
若有 FreeBSD 方面疑問,請先閱讀 FreeBSD 相關文件,如不能解決的話,再洽詢
<questions@FreeBSD.org>。
關於本文件的問題,請洽詢 <doc@FreeBSD.org>。