用戶管理QUOTE:為了使用多用戶的 FreeBSD操作系統,必須是該系統的正式用戶。Unix下的用戶信息傳統上保存在/etc目錄下的passwd文件中,在FreeBSD下,為了提高多用戶時查找用戶數據的速度,也使用了數據庫格式的文件pwd.db來保存這些用戶數據。用戶數據
在這個文件中定義的一個 FreeBSD用戶應具有以下屬性:
用戶名 ( Username):在系統中使用這個用戶名來標識用戶,每個用戶名不超過8個字符,且是大小寫敏感的。習慣上用戶名只使用小寫字母,通常根據用戶真實名字的縮寫來選擇合適的用戶名。
用戶標識號 ( User ID):由於計算機中處理數字比處理字符串更容易,因而使用數字方式的用戶標識號來區分不同用戶更為適合。事實上Unix系統就是使用唯一的用戶標識號來區分用戶的,在某些特定目的下,可以存在多個有不同用戶名、但用戶標識號相同的用戶,這表示這些不同用戶名的用戶實際上是同一個用戶。
口令 ( password):系統用它來驗證用戶是否合法。超級用戶root可以使用系統程序passwd來更改每個用戶的口令,用戶也可以使用passwd來更改自己的口令。較老的Unix系統中直接在passwd文件中保存口令的密文,由於passwd文件是系統中的每個用戶都可以讀取的,只通過加密來保證口令的安全性。然而現代計算機的發展使得情形發生了變化,高速計算能力使得通過猜測的方式來破譯口令成為可能。因此現在Unix中口令均不再直接保存在passwd文件中了,而passwd文件中的口令域使用一個 “ * ” 來代替。FreeBSD使用/etc/master.passwd作為真正的口令文件,保存包括個人口令在內的數據,但這個文件不能被普通用戶讀取。
命令解釋程序 ( shell):用戶登錄後啟動這個程序來接收用戶的輸入並執行輸入相應命令,標准的shell有sh和csh,更復雜易用的shell有bash和tcsh等,但它們不是基本系統的一部分,必須額外安裝。shell程序是一個標准的Unix程序,但系統在/etc/shells文件中定義了一些標准shell的名字,很多應用程序檢查這個文件中內容和用戶的shell來判斷這個用戶是普通用戶,還是用於特定目的而創建的用戶。
個人目錄 ( home directory):由於FreeBSD是多用戶系統,每個用戶都要有自己的獨立使用環境,不同用戶的文件不能相互交叉存放,因此Unix中為每個用戶配置了自己的個人目錄,用戶的文件都放置在各自的目錄下,從而互不干擾。習慣上FreeBSD下用戶的個人目錄位於/home目錄下,使用用戶名作為子目錄名,多數shell中使用波浪符號~,來代表該用戶的個人目錄。
組標識號 ( Group ID):具有相似屬性的多個用戶可以被分配到一個組內,每個組都有自己的組名,且以自己的組標識號相區分(組標識號和組的對應關系在/etc/group文件中給出),用戶的組標識號保存在passwd文件中。早期的Unix中,每個用戶只能屬於一個組,而現代Unix中每個用戶可以同時屬於多個組,除了在passwd文件中指定了其歸屬的基本組之外,還可以在文件/etc/group中,明確指定一個組包括某個用戶,使得該用戶能屬於多個組。
除此之外,用戶還有其他屬性,例如登錄類別,這些信息記錄在另一個口令文件: /etc/master.passwd中。事實上,master.passwd文件才是真實有效的passwd文件,而passwd文件本身只是出於與傳統Unix應用兼容的目的而實現的。
Unix傳統上將加密口令放在passwd文件中,而passwd本身可能被各種應用系統所訪問,必須是所有人可讀的。後來由於計算機技術的發展,這種方式被證明是存在很嚴重的安全隱患,攻擊可以使用暴力猜測法攻擊用戶的口令。因此人們將真實的、保存有口令的passwd文件更換名字,如shadow或master.passwd,而passwd文件本身只保存一些公開信息,這就被稱為shadow技術。