转自:http://www.binghe.org/2009/12/linux-etc-passwd-and-etc-shadow/
一,/etc/passwd文件
/etc/passwd 文件是系统的主要文件之一。该文件中包含了所有用户登录名清单;为所有用户指定了主目录;在登录时使用的 shell 程序名称等。该文件还保存了用户口令;给每个用户提供系统识别号。
/etc/passwd 文件是一个纯文本文件,每行采用了相同的格式:
username:password:uid:gid:comment:home:shell
字段含义:
■ username | 用户名。它唯一地标识了一个用户帐号,用户在登录时使用的就是它。
■ password | 该帐号的口令。passwd文件中存放的密码是经过加密处理的。Linux的加密算法很严密,其中的口令几乎是不可能被破解的。盗用帐号的人一般都借助专门的黑客程序,构造出无数个密码,然后使用同样的加密算法将其加密,再和本字段进行比较,如果相同的话,就代表构造出的口令是正确的。因此,建议不要使用生日、常用单词等作为口令,它们在黑客程序面前几乎是不堪一击的。特别是对那些直接连入较大网络的系统来说,系统安全性显得尤为重要。
■ uid | 用户识别码。Linux系统内部使用uid来标识用户,而不是用户名。uid是一个整数,用户的uid互不相同。
■ gid | 用户组识别码。不同的用户可以属于同一个用户组,享有该用户组共有的权限。与uid类似,gid唯一地标识了一个用户组。
■ comment | 这是给用户帐号做的注解。它一般是用户真实姓名、电话号码、住址等,当然也可以是空的。
■ home | 主目录。这个目录属于该帐号,当用户登录后,它就会被置于此目录中,就像回到家一样。一般来说,root帐号的主目录是/root,其他帐号的家目录都在/home目录下,并且和用户名同名。
■ shell | 用户登录后执行的命令。一般来说,这个命令将启动一个shell程序。
系统帐号:系统中还有一些默认的帐号,如daemon、bin等。这些帐号有着特殊的用途,一般用于进行系统管理。这些帐号的口令大部分用(x)号表示,代表它们不能在登录时使用。
二,/etc/shadow文件
为了增强系统的安全性,Linux系统还可以为用户提供MD5和Shadow安全密码服务。如果在安装 Linux 时在相关配置的选项上选中了MD5和Shadow服务,那么将看到的/etc/passwd文件里的passwd项上无论是什么用户,都是一个“x”,这就表示这些用户都登录不了;系统其实是把真正的密码数据放在了/etc/shadow文件里。
/etc/shadow文件只能以root身份来浏览。为什么要这样做呢,原因其实很简单,在系统设计的时候,/etc/passwd文件是任何人都可以读的,那么那些心有所图的人就可以利用这个文件,使用各种各样的工具按照Linux密码加密的方法把用户甚至root的密码试出来,这样整个系统就会被他所控制,严重危害系统的安全和用户数据的保密性。
三,有关命令
■ pwconv | 根据/etc/passwd文件生成/etc/shadow。它把所有口令从/etc/passwd移到/etc/shadow中。
■ pwunconv | 将/etc/shadow中的信息尽可能地恢复到/etc/passwd。