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)之一。