1、概述
UNIX系统的正常运作需要使用大量与系统有关的数据文件,例如,口令文件/etc/passwd和组文件/etc/group就是经常被多个程序频繁使用的两个文个件。用户每次登录UNIX系统,以及每次执行ls -l命令时都要使用口令文件。
2、口令文件/etc/passwd
UNIX系统的口令文件包含如下字段,且这些字段包含在<pwd.h>中定义的passwd结构中。
用户名(char *pw_name)、加密口令(char* pw_passwd)、数值用户ID(uid_t pw_uid)、数值组ID(gid_t pw_gid)、注释字段(char* pw_gecos)、初始工作目录(char* pw_dir)、初始shell(用户程序)(char* pw_shell)、用户访问类(char* pw_class)、下次更改口令时间(time_t pw_change)、账户有效期时间(time_t pw_expire)。
举例:tyliang:x:1000:1000:tyliang,,,:/home/tyliang:/bin/bash
值得注意地方:
i、通常有一个用户名为root的登录项,其用户ID为0
ii、加密口令字段包含了一个占位符。我们无法看见密码的,嘿嘿!
iii、shell字段包含了一个可执行程序名,它被用作该用户的登录shell。
iv、为了阻止一个特定用户登录系统。除使用/dev/null外,其他替代方法:将/bin/false用作登录shell(以不成功状态终止);用/bin/true禁止一个账户(以成功状态终止);用nologin命令,打印可定制的出错信息,然后以非0状态终止。
v、finger命令支持注释字段中的附加信息。如:finger -p tyliang 从而可以查看tyliang用信息。
3、阴影口令/etc/shadow
某些系统将加密口令存放在一个通常称为阴影口令的文件中。该文件至少包含用户名和加密口令。只有root权限才有资格查看。
说明 | struct spwd成员 |
用户登录名 | char* sp_namp |
加密口令 | char* sp_pwdp |
上次更改口令以来经过的时间 | int sp |