APUE系統檔案和資訊

2021-06-21 21:15:02 字數 3242 閱讀 2260

pag133

這裡的各類id都是針對使用者的

口令檔案

/etc/passwd檔案中的字段(linux)(struct passwd的成員)

使用者名稱---------------------------char *pw_name

加密口令------------------------char *pw_passwd

數值使用者id---------------------uid_t pw_uid

數值組id------------------------gid_t pw_gid

注釋欄位------------------------char *pw_gecos

初始工作目錄-------------------char *pw_dir

初始shell------------------------char *pw_shell 如:

root:x:0:0:root:/root:/bin/bash 

daemon:x:1:1:daemon:/usr/sbin:/bin/sh

bin:x:2:2:bin:/bin:/bin/sh

sys:x:3:3:sys:/dev:/bin/sh

sync:x:4:65534:sync:/bin:/bin/sync

shell欄位包含了乙個可執行程式名,他被用做該使用者的登入shell(ubuntu下用adduser時,發現切換至建立的使用者時登入shell不對(顯示為只有乙個$)這是因為新建立的使用者預設登入shell為/bin/sh,進入/etc/passwd將/bin/sh改為/bin/bash即可)

獲取口令檔案項

struct passwd *

getpwuid(uid_t uid); //將i節點中的數值使用者id對映為使用者登入名

struct passwd *

getpwnam(const char *name);//使用者登入名

struct passwd *

getpwent(void);//返回口令檔案的下個記錄項,返回由他填好的password結構指標(get password entry)

void

setpwent(void);//反繞檔案,我的理解:從頭開始

void

endpwent(void);//關閉檔案(getpwent後呼叫)

陰影口令

struct spwd *

getspnam(const char *name);

struct spwd *

getspent(void);

void

setspent(void);

void

endspent(void);

組檔案

struct group中的gr_mem是乙個指標陣列,其中每個指標指向乙個屬於該組的使用者名稱,該陣列以空指標結尾。

struct group *

getgrgid(gid_t gid);//返回gid組的group結構

struct group *

getgrnam(const char *name);//返回name組的group結構

struct group *

getgrent(void);

void

setgrent(void);

void

endgrent(void);

附加組id:

乙個使用者可以參加多個專案,因此也就要同時屬於多個組。

int

getgroup(int gidsetsize, gid_t grouplist);//將各附加組id填寫到陣列grouplist中

int

setgroup(int ngroups, const gid_t grouplist);//設定附加組id

int

initgroups(const char *username, gid_t basegid);//在組檔案中找到username是成員的所有組,,並將引數basegid組識別碼加入此資料中。

一般情況,對於每個資料檔案至少有三個函式:

2、set:從相應檔案的起始處處理

3、end:關閉資料檔案

口令 -------------------------/etc/passwd 組 

-------------------------/etc/group

陰影 -------------------------/etc/shadow

主機 -------------------------/etc/hosts

網路 -------------------------/etc/networks

協議 -------------------------/etc/protocols

服務 -------------------------/etc/services

int

uname(struct utsname *name);//返回當前主機和作業系統有關的資訊 (uname命令)

int

gethostname(char *name, int namelen);//獲取主機名(tcp/ip網路上主機名)(hostname命令)

time_t

time(time_t *calptr);//返回當前時間和日期

int

gettimeofday(struct timeval *restrict tp, void *restrict tzp);//tzp唯一合法值是null

struct tm *

gmtime(const time_t *calptr);//將日曆轉換成國際標準時間

struct tm *

localtime(const time_t *calptr);//將日曆轉換程本地時間

time_t

mktime(struct tm *tmptr);//以本地時間的年月日等作為引數,將其轉換成time_t值

char *

asctime( const struct tm *tmptr);//返回指向年月日等字串指標

char *

ctime(const time_t *calptr);//返回指向日曆時間的指標

size_t

strftime(char *restrict buf, size_t maxsize, const char *restrict format, const struct tm *restrict tmptr);

APUE筆記 系統資料檔案和資訊

passwd結構體 include 這個結構體的字段也就是 ect passwd中看到的字段 root x 0 0 root root bin bash bin x 1 1 bin bin sbin nologin daemon x 2 2 daemon sbin sbin nologin etc ...

06 APUE 系統資料檔案和資訊

a getpwent setpwent endpwent include struct passwd getpwent void 成功返回指標,出錯或到過檔案末尾返回 null void setpwent void void endpwent void struct passwd b getpwui...

APUE 第六章 系統資料檔案和資訊

口令檔案 struct passwd struct passwd getpwuid uid t uid 通過使用者id獲得相應的passwd結構 struct passwd getpwnam const char name 通過使用者名稱獲得相應的passwd結構 void setpwent 初始化...