C語言getpw()函數:取得指定用戶的密碼文件數據
頭文件:
#include <pwd.h> #include <sys/types.h>
定義函數:
int getpw(uid_t uid, char *buf);
函數說明:getpw()會從/etc/passwd中查找符合參數uid所指定的用戶賬號數據, 找不到相關數據就返回-1。
所返回的buf 字符串格式如下:
賬號:密碼:用戶識別碼(uid):組識別碼(gid):全名:根目錄:shell
返回值:返回 0 表示成功, 有錯誤發生時返回-1.
附加說明
1. getpw()會有潛在的安全性問題, 請盡量使用別的函數取代。
2. 使用shadow 的系統已把用戶密碼抽出/etc/passwd, 因此使用getpw()取得的密碼將為"x"。
范例
#include <pwd.h>#include <sys/types.h>main(){ char buffer[80]; getpw(0, buffer); printf("%s/n", buffer);}
執行:
root:x:0:0:root:/root:/bin/bash
C語言getpwnam()函數:從密碼文件中取得指定賬號的數據
頭文件:
#include <pwd.h> #include <sys/types.h>
定義函數:
struct passwd * getpwnam(const char * name);
函數說明:getpwnam()用來逐一搜索參數name 指定的賬號名稱, 找到時便將該用戶的數據以passwd 結構返回。passwd 結構請參考getpwent()。
返回值:返回 passwd 結構數據, 如果返回NULL 則表示已無數據, 或有錯誤發生.
范例
/*取得root 賬號的識別碼和根目錄 */#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);}
執行:
name:rootuid:0home:/root
C語言getpwuid()函數:從密碼文件中取得指定uid的數據
頭文件:
#include <pwd.h> #include <sys/types.h>
定義函數:
struct passwd * getpwuid(uid_t uid);
函數說明:getpwuid()用來逐一搜索參數uid 指定的用戶識別碼, 找到時便將該用戶的數據以結構返回結構請參考將該用戶的數據以passwd 結構返回. passwd 結構請參考getpwent()。
返回值:返回 passwd 結構數據, 如果返回NULL 則表示已無數據, 或者有錯誤發生.
范例
#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);}
執行:
name:shutdownuid:6home:/sbin
新聞熱點
疑難解答
圖片精選