passwd
原作者 | 貝爾實驗室 |
---|---|
開發者 | 若干 開源軟件 以及 商業軟件 開發人員 |
操作系統 | Unix, 類Unix系統, Plan 9, Inferno |
平台 | 跨平台 |
類型 | 命令 |
passwd 是一個用於 Unix,Plan 9,Inferno 和大多數類 Unix 操作系統中用於更改用戶密碼的命令。用戶輸入的密碼通過密鑰派生函數運行,以創建新密碼的散列值,並將其保存。出於安全考慮,將不會保存輸入的密碼而僅保存生成的散列值。
當用戶登錄時,用戶在登錄過程中輸入的密碼將通過相同的密鑰派生函數處理,並將生成的散列值與保存值進行比較。如果哈希值相同,則認為輸入的密碼正確,即用戶已通過身份驗證。從理論上講,兩個不同的密碼可能會產生相同的哈希值。但是,密碼散列函數在設計時的要求就是使得能夠找到產生相同散列的密碼極為困難,這在實際上不可行。因此,如果產生的散列與存儲的散列匹配,則可以對用戶進行身份驗證。
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)之一。