passwd
passwd 是一個用於 Unix,Plan 9,Inferno 和大多數類 Unix 作業系統中用於更改使用者密碼的命令。使用者輸入的密碼通過金鑰衍生函式執行,以新增密碼的雜湊值,並將其儲存。出於安全考慮,將不會儲存輸入的密碼而僅儲存生成的雜湊值。
原作者 | 貝爾實驗室 |
---|---|
開發者 | 若干 開源軟體 以及 商業軟體 開發人員 |
作業系統 | Unix, 類Unix系統, Plan 9, Inferno |
平台 | 跨平台 |
類型 | 命令 |
當使用者登入時,使用者在登入過程中輸入的密碼將通過相同的金鑰衍生函式處理,並將生成的雜湊值與儲存值進行比較。如果雜湊值相同,則認為輸入的密碼正確,即使用者已通過身分驗證。從理論上講,兩個不同的密碼可能會產生相同的雜湊值。但是,密碼雜湊函式在設計時的要求就是使得能夠找到產生相同雜湊的密碼極為困難,這在實際上不可行。因此,如果產生的雜湊與儲存的雜湊匹配,則可以對使用者進行身分驗證。
passwd 命令可用於更改本地帳戶的密碼,在大多數系統上,也可用於更改在分散式身分驗證機制(如 NIS,Kerberos 或 LDAP)中管理的密碼。
passwd 檔案和 shadow 檔案是類Unix系統中用於記錄使用者名稱、使用者ID和使用者密碼等資訊的檔案,類似於Windows下的%windir%\system32\registry\sam
檔案。這兩個檔案通常位於/etc
目錄之下。同時,類Unix系統中可用passwd
命令更改特定使用者的密碼。
passwd 檔案
/etc/passwd
檔案是一個基於文字的平面檔案資料庫,儲存了可以登入該系統的使用者或擁有執行中行程所有權的其他作業系統使用者的一系列使用者資訊。
在許多作業系統中,該檔案只是更通用的名稱服務開關的許多可能後端之一。
該檔案的名稱源自其最初的功能,因為它包含用於驗證使用者帳戶密碼的資料。但是,在現代 Unix 系統上,安全性敏感的密碼資訊通常使用影子檔案或其他資料庫實現方式儲存在不同的檔案中。
/etc/passwd
檔案通常具有檔案系統權限,儘管該檔案只能由超級使用者或通過使用一些特殊用途的特權命令來修改,但允許系統的所有使用者讀取(世界可讀)。
/etc/passwd
檔案是一個文字檔案,每行一條記錄,每條記錄描述一個使用者帳戶。每個記錄由七個用冒號分隔的欄位組成。檔案中記錄的順序通常並不重要。
範例如下:
jsmith:x:1001:1000:Joe Smith,Room 1007,(234)555-8910,(234)555-0044,email:/home/jsmith:/bin/sh
欄位從左到右依次為:
jsmith
:使用者名稱:使用者登入作業系統時輸入的字串,即 logname。使用者名稱在檔案中列出的使用者列表中必須是唯一的。x
:用於驗證使用者密碼的資訊;在現在的大多數用途中,此欄位通常設定為「 x」(或「 *」或其他指示符),而實際密碼資訊儲存在單獨的影子檔案中。在Linux系統上,將此欄位設定為星號(「 *」)是禁用直接登入帳戶但仍保留其名稱的常用方法,而另一個可能的值是「 * NP *」,該值指示使用NIS伺服器來取得密碼。在沒有有效的密碼封鎖的情況下,該欄位通常包含使用者密碼的加密雜湊值(與鹽結合使用)。1001
:使用者標識號,作業系統將其用於內部目的。它不必是唯一的。1000
:組標識號,用於標識使用者的主要組;該使用者最初可能會訪問此使用者建立的所有檔案。Joe Smith,Room 1007...
:Gecos欄位,描述人員或帳戶的注釋。通常,這是一組用逗號分隔的值,包括使用者的全名和聯絡方式。/home/jsmith
:使用者主目錄的路徑。/bin/sh
:每次使用者登入系統時啟動的程式。對於互動式使用者,這通常是系統的命令列直譯器(shell)之一。