unix口令檔案/etc/passwd 包含了下表所示的字段:
系統定義了兩個獲取口令檔案項的函式,在給出使用者登入名或數值使用者id後,這兩個函式能夠檢視相關項。
struct passwd *getpwuid(uid_t uid);
struct passwd *getpwnam (const char *name);
getpwuid函式由ls程式使用,將i節點中的數字使用者id對映為使用者登陸名,在鍵入登入名時,getpwnam函式由login程式使用。
如果要檢視的只是登入名或使用者id,這兩個函式就能滿足要求,但是有些程式要檢視整個口令檔案,下面三個函式可滿足此要求:
呼叫getpwent,它返回口令檔案的下乙個記錄項,也就是返回乙個由他填好的passwd結構的指標。
函式setpwent反繞它所使用的檔案,endpwent關閉這些檔案,在使用getpwent檢視完口令檔案後,一定要呼叫endpwent關閉這些檔案。
下列程式給出了getpwnam函式的乙個實現
#include #include #include struct passwd *getpwnam(const char *name)
在函式開始出呼叫setpwent是自我保護措施,以確保如果呼叫者在此之前已經呼叫getpwent開啟了有關檔案情況下,反繞有關檔案使它們定位到檔案開始處。
陰影口令:
加密口口令是經過單向加密演算法處理過的使用者口令副本,因為此演算法是單向的,所以不能從加密口令猜測到原來的口令。但可以對口令進行猜測,將猜測的口令經演算法變成加密形式,然後將其與原加密口令對比。
為防止這樣,系統將加密口令放在另乙個稱為陰影口令的檔案中(shadow password),該檔案至少包含使用者名稱和加密口令。
其他資料檔案:
上面討論了兩個系統資料檔案-口令檔案和組檔案,在日常中,unix還使用其他檔案,一般情況下,對於每個資料檔案至少有3個函式:
2.set函式,開啟相應資料檔案,然後反繞該檔案,如果希望在檔案起始開始處理,則呼叫此函式
3.end函式:關閉相應資料檔案
下表示訪問系統資料檔案的一些例程
登陸賬戶記錄:
大多數unix系統都提供兩個資料檔案,utmp檔案記錄當前登陸到系統的各個使用者,wtmp檔案跟蹤各個登陸和登出事件,每次寫入這兩個檔案中的是包含下列結構的乙個二進位制記錄:
登陸時,login填寫此類結構,然後將其寫入到utmp檔案中,同時頁將其填寫到wtmp檔案中,登出時init程序將utmp檔案相應記錄刪除。將乙個新紀錄填寫到wtmp檔案中。
系統標識:
命令 uname -a //可以返回系統的版本資訊和核心資訊等
unix環境高階程式設計
unix 日曆時間 自1970 年1 月1 日00 00 00 以來的國際標準時間 utc 程序時間 cpu 時間 時鐘時間 程序執行時間的總量。使用者cpu 時間 執行使用者指令時間量。系統cpu 時間 執行核心所經歷時間。命令 time 第三章至第七章 原子操作 任何乙個要求多於1 個函式呼叫的...
unix環境高階程式設計
檔案描述符file descriptor通常是乙個小的非負整數,核心用以標識乙個特定程序正在訪問的檔案。當核心開啟乙個現有檔案或建立乙個新檔案時,它都返回乙個檔案描述符。在讀寫檔案時,可以私用這個檔案描述符。按管理,每當執行乙個新程式時,所有的shell都為其開啟了3個標準檔案描述符 標準輸入,標準...
UNIX環境高階程式設計
本書是被譽為unix程式設計 聖經 的advanced programming in the unix environment一書的更新版。在本書第1版出版後的十幾年中,unix行業已經有了巨大的變化,特別是影響unix程式設計介面的有關標準變化很大。本書在保持了前一版風格的基礎上,根據最新的標準對...