傳統的 Unix 系統保留使用者帳號資料,包括單向加密的密碼,存放在一個稱做``/etc/passwd'的文字檔。 既然這個檔案會被很多工具(像是``ls')用做顯示檔案的擁有者等,為了用來比對userid#和使用者名稱, 這個檔案必須是可讀的。結果,這造成 安全 上的風險。
傳統的
Unix 系統保留使用者帳號資料,包括單向加密的密碼,存放在一個稱做``/etc/passwd' 的文字檔。
既然這個檔案會被很多工具 (像是 ``ls') 用做顯示檔案的擁有者等,為了用來比對 user id # 和使用者名稱,
這個檔案必須是可讀的。 結果, 這造成
安全上的風險。
另一個存放帳號的方法,我常使用的一個,是 shadow 密碼格式。和傳統方法一樣,這個方法以相容的方式存放
帳號資料於 /etc/passwd 檔案中。 然而,密碼的部分是一個“x” 符號 (換言之. 並非真正放在檔案中)。
另一個檔案,稱作 ``/etc/shadow',存放加密過的密碼以及其他資料像是帳號及密碼的期限值等。 /etc/shadow
這個檔案只能由 root 讀取因此減少了風險。
有時一些
Linux 發行版本會強迫安裝 Shadow 密碼套件 以便使用 shadow 格式, Red Hat 讓它變得很簡單。
要在兩者之間切換, 鍵入(以 root 身分):
/usr/sbin/pwconv 轉換到 shadow 格式
/usr/sbin/pwunconv 轉換回傳統格式
使用 shadow 密碼時, ``/etc/passwd' 檔內含帳號資料,看起來像這個樣子:
smithj:x:561:561:Joe Smith:/home/smithj:/bin/bash
每一項目欄位都由“:”冒號所分隔,意義如下:
使用者名稱,最多 8 個符號,可以用大小寫,通常都是小寫
一個“x”在密碼欄。密碼存放在 ``/etc/shadow' 檔中。
user id 數值。由``adduser' script 所分配。 Unix 使用這個欄位,以及後面的群組欄以辨別檔案屬於
哪個使用者。
group id 數值。 Red Hat 使用 group id 作為很獨特的強化檔案安全的方法。通常 group id 會和 user id
相同。
使用者全名。我不大確定這個欄位的最大長度,但是盡量保持合理 (30個字元以下).
使用者的 home 目錄。 通常是 /home/username (例如. /home/smithj). 所有使用者個人檔案,網頁,回覆信
件等。會放在這裡。
使用者的“shell 帳號”。常被設為``/bin/bash' 提供取用 bash shell (我個人最喜歡的 shell)。
也許您不想提供給使用者 shell 帳號。您可以建立一個名為 ``/bin/sorrysh'的 script檔。例如顯示錯誤訊
息以及把使用者 log off,然後將這個 script 視為他們的預設 shell。
注意: 如果帳號需要提供“FTP”傳送更新網頁等。 shell 帳號要被設定為 ``/bin/bash' -- 使用者的
home 目錄必須設定特別的權限以防 shell 登入。 查看第7章,網頁伺服器及 HTTP 快取代理主機管理
一節 有關的細節。
``/etc/shadow' 檔案內含使用者的密碼及帳號期限資料 ,看起來像這個樣子:
smithj:Ep6mckrOLChF.:10063:0:99999:7:::
像密碼檔一樣,shadow 檔的每一個欄位也是由“:” 冒號所分開,意義如下:
使用者名稱,最多 8 個符號,可以用大小寫,通常都是小寫。直接對應 /etc/passwd 檔案中的使用者名稱。
密碼,加密過的 13 個字元。一個空格 (就是. ::) 表示登入時不需密碼 (不是個好主意),一個 ``*' 項目
(就是 :*:) 指出帳號已經關閉。
密碼最後一次變更起所經過的日數 (從1970年一月一日起 ) 。
密碼經過幾天可以變更 (0 表示可以隨時變更)
密碼經過幾天必須變更 (99999 表示使用者可以保留他們的密碼很多很多年不變)
密碼過期之前幾天要警告使用者 (7 為一)
密碼過期幾天後帳號會被取消
從1970年一月一日起,帳號經過幾天會被取消
保留欄位