linux中包含/etc/passwd(下称口令文件) 和阴影口令文件
在linux最初密码字放在口令文件中,而这个文件是人人可读的,缺少安全性!故现在系统一般放于阴影口令中!口令文件只存放一个X,或者*占位符!
阴影口令是一个单项加密处理过的用户口令副本!
口令文件中,各个字段按:分隔,这些字段包含在<pwd.h>的passwd结构体中
root:X:0:0:root:/root:/bin/bash
用户名 char *pw_name
加密口令 char *passwd
用户ID uid_t pw_uid
组ID gid_t pw_gid
注释 //用户的地址 号码之类的信息
初试工作目录 char * pw_shell
shell目录 char *pw_dir
用户访问类
下次口令更改时间 time_t change
账户有效时间
读取特定id的psswd信息
<pre name="code" class="cpp">#include <pwd.h>
struct psswd* getpwuid(uit_t uid);//根据uid 返回psswd结构体
struct psswd* getpegid(gid_t gid);//根据gid返回
psswd是一个静态变量,so要修改是赋值到临时变量
以下可以用于读取个口令文件信息
#include <pwd.h>
struct psswd* getpwent(void);//返回当前指向的吓一跳pwd,当文件到尾时返回NULL,可循环逐条读取pwd信息
void setpwent(void);//定位到文件起始处
void endpwent(void);//关闭文件
一般度getpwent之前先调用setpwent 确保当前指向文件最开始
最后用endpwdent关闭文件
阴影口令
#include <shadow.h>
struct spwd *getspent();//返回当前指向的吓一跳pwd,当文件到尾时返回NULL,可循环逐条读取pwd信息
void setspwent(void);//定位到文件起始处
void endspwent(void);//关闭文件