C語言getpw()函數(shù):取得指定用戶的密碼文件數(shù)據(jù)
頭文件:
1
|
#include <pwd.h> #include <sys/types.h> |
定義函數(shù):
1
|
int getpw(uid_t uid, char *buf); |
函數(shù)說明:getpw()會(huì)從/etc/passwd中查找符合參數(shù)uid所指定的用戶賬號(hào)數(shù)據(jù), 找不到相關(guān)數(shù)據(jù)就返回-1。
所返回的buf 字符串格式如下:
賬號(hào):密碼:用戶識(shí)別碼(uid):組識(shí)別碼(gid):全名:根目錄:shell
返回值:返回 0 表示成功, 有錯(cuò)誤發(fā)生時(shí)返回-1.
附加說明
1. getpw()會(huì)有潛在的安全性問題, 請(qǐng)盡量使用別的函數(shù)取代。
2. 使用shadow 的系統(tǒng)已把用戶密碼抽出/etc/passwd, 因此使用getpw()取得的密碼將為"x"。
范例
1
2
3
4
5
6
7
8
|
#include <pwd.h> #include <sys/types.h> main() { char buffer[80]; getpw(0, buffer); printf ( "%s\n" , buffer); } |
執(zhí)行:
1
|
root:x:0:0:root:/root:/bin/bash |
C語言getpwnam()函數(shù):從密碼文件中取得指定賬號(hào)的數(shù)據(jù)
頭文件:
1
|
#include <pwd.h> #include <sys/types.h> |
定義函數(shù):
1
|
struct passwd * getpwnam( const char * name); |
函數(shù)說明:getpwnam()用來逐一搜索參數(shù)name 指定的賬號(hào)名稱, 找到時(shí)便將該用戶的數(shù)據(jù)以passwd 結(jié)構(gòu)返回。passwd 結(jié)構(gòu)請(qǐng)參考getpwent()。
返回值:返回 passwd 結(jié)構(gòu)數(shù)據(jù), 如果返回NULL 則表示已無數(shù)據(jù), 或有錯(cuò)誤發(fā)生.
范例
1
2
3
4
5
6
7
8
9
10
11
|
/*取得root 賬號(hào)的識(shí)別碼和根目錄 */ #include <pwd.h> #include <sys/types.h> main() { struct passwd *user; user = getpwnam( "root" ); printf ( "name:%s\n" , user->pw_name); printf ( "uid:%d\n" , user->pw_uid); printf ( "home:%s\n" , user->pw_dir); } |
執(zhí)行:
1
2
3
|
name:root uid:0 home:/root |
C語言getpwuid()函數(shù):從密碼文件中取得指定uid的數(shù)據(jù)
頭文件:
1
|
#include <pwd.h> #include <sys/types.h> |
定義函數(shù):
1
|
struct passwd * getpwuid(uid_t uid); |
函數(shù)說明:getpwuid()用來逐一搜索參數(shù)uid 指定的用戶識(shí)別碼, 找到時(shí)便將該用戶的數(shù)據(jù)以結(jié)構(gòu)返回結(jié)構(gòu)請(qǐng)參考將該用戶的數(shù)據(jù)以passwd 結(jié)構(gòu)返回. passwd 結(jié)構(gòu)請(qǐng)參考getpwent()。
返回值:返回 passwd 結(jié)構(gòu)數(shù)據(jù), 如果返回NULL 則表示已無數(shù)據(jù), 或者有錯(cuò)誤發(fā)生.
范例
1
2
3
4
5
6
7
8
9
10
|
#include <pwd.h> #include <sys/types.h> main() { struct passwd *user; user= getpwuid(6); printf ( "name:%s\n" , user->pw_name); printf ( "uid:%d\n" , user->pw_uid); printf ( "home:%s\n" , user->pw_dir); } |
執(zhí)行:
1
2
3
|
name:shutdown uid:6 home:/sbin |