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);//關閉文件