《APUE》第6章笔记
這一章主要介紹了口令文件和組文件的結(jié)構(gòu)和一些圍繞這些結(jié)構(gòu)的函數(shù)。
口令文件即passwd就是在/etc/passwd中可以查閱。其結(jié)構(gòu)是:
上圖四個(gè)平臺(tái)能支持的就用黑點(diǎn)表示。
因?yàn)榧用芸诹钸@一項(xiàng)放在passwd這個(gè)人人可讀的文件中,可能會(huì)有安全問(wèn)題。所以現(xiàn)在的Linux中的加密口令都是放在/etc/shadow中,只有root用戶才可以查看。而在passwd文件中加密口令這一項(xiàng)則顯示為x。(每一項(xiàng)都是用冒號(hào)隔開(kāi)的)
?
POSIX.1就定義了兩個(gè)函數(shù)來(lái)讓我們獲取用戶名或者數(shù)值用戶ID。
#include <pwd.h>
struct passwd *getpwuid(uid_t uid);
struct passwd *getpwnam(const char *name);
返回值:成功返回指針,失敗返回NULL
如果有些程序要查看整個(gè)口令文件,則需要下面三個(gè)函數(shù):
#include <pwd.h>
struct passwd *getpwent(void);
返回值:成功返回指針,失敗返回NULL
void setpwent(void);
void endpwent(void);
getpwent是查看口令文件中的一項(xiàng)內(nèi)容,setpwent是定位到文件的開(kāi)始處(相當(dāng)于rewind函數(shù)),endpwent就是關(guān)閉口令文件。
?
組文件也差不多,結(jié)構(gòu)上是這樣:
其中最后一項(xiàng)的指針元素都是指向各個(gè)用戶名,最后以空指針結(jié)束。
與口令文件的函數(shù)相似,POSIX.1也定義了兩個(gè)函數(shù)來(lái)查看文件中的組ID和組名:
#include <grp.h>
struct group *getgrgid(gid_t gid);
struct group *getgrnam(const char *name);
返回值:成功返回指針,失敗返回NULL
如果需要得知整個(gè)組文件的信息,也有類(lèi)似口令文件的三個(gè)函數(shù):
#include <grp.h>
struct group *getgrent(void);
返回值:成功返回指針,失敗返回NULL
void setgernt(void);
void endgrent(void);
?
轉(zhuǎn)載于:https://www.cnblogs.com/fusae-blog/p/4278500.html
總結(jié)
以上是生活随笔為你收集整理的《APUE》第6章笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Kung Fu Panda: Legen
- 下一篇: [转]Android 之 Window、