passwd 是一个用于 Unix,Plan 9,Inferno 和大多数类 Unix 操作系统中用于更改用户密码的命令。用户输入的密码通过密钥派生函数运行,以创建新密码的散列值,并将其保存。出于安全考虑,将不会保存输入的密码而仅保存生成的散列值。
当用户登录时,用户在登录过程中输入的密码将通过相同的密钥派生函数处理,并将生成的散列值与保存值进行比较。如果哈希值相同,则认为输入的密码正确,即用户已通过身份验证。从理论上讲,两个不同的密码可能会产生相同的哈希值。但是,密码散列函数在设计时的要求就是使得能够找到产生相同散列的密码极为困难,这在实际上不可行。因此,如果产生的散列与存储的散列匹配,则可以对用户进行身份验证。
passwd 命令可用于更改本地帐户的密码,在大多数系统上,也可用于更改在分布式身份验证机制(如 NIS,Kerberos 或 LDAP)中管理的密码。
passwd 文件和 shadow 文件是类Unix系统中用于记录用户名、用户ID和用户密码等信息的文件,类似于Windows下的%windir%system32registrysam
文件。这两个文件通常位于/etc
目录之下。同时,类Unix系统中可用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