getpwuid(3)
#include<sys/types.h>
#include<pwd.h>
struct passwd *getpwuid(uid_t uid);
功能:
?參數(shù):
返回值:
1尘执、/etc/passwd文件
這個文件中存放的是系統(tǒng)的所有的用戶的信息。可以使用cat命令查看次文件的具體內容
1
)/etc/passwd 的內容理解:在/etc/passwd 中躏升,每一行都表示的是一個用戶的信息;一行有7個段位;每個段位用:號分割摊崭,例如:
beinan:x:500:500:beinan sun:/home/beinan:/bin/bash
linuxsir:x:501:502::/home/linuxsir:/bin/bash
第一字段:用戶名(也被稱為登錄名);在上面的例子中蛾狗,我們看到這兩個用戶的用戶名分別是 beinan 和linuxsir;
第二字段:口令笨鸡;在例子中我們看到的是一個x,其實密碼已被映射到/etc/shadow 文件中啊终;
第三字段:UID 镜豹;請參看本文的UID的解說;
第四字段:GID蓝牲;請參看本文的GID的解說;
第五字段:用戶名全稱泰讽,這是可選的例衍,可以不設置昔期,在beinan這個用戶中,用戶的全稱是beinan sun 佛玄;而linuxsir 這個用戶是沒有設置全稱硼一;
第六字段:用戶的家目錄所在位置;beinan 這個用戶是/home/beinan梦抢,而linuxsir 這個用戶是/home/linuxsir 般贼;
第七字段:用戶所用SHELL 的類型,beinan和linuxsir 都用的是 bash 奥吩;所以設置為/bin/bash 哼蛆;
2
)關于UID 的理解:
UID
是用戶的ID 值,在系統(tǒng)中每個用戶的UID的值是唯一的霞赫,更確切的說每個用戶都要對應一個唯一的UID腮介,系統(tǒng)管理員應該確保這一規(guī)則。系統(tǒng)用戶的UID的值從0開始端衰,是一個正整數(shù)叠洗,至于最大值可以在/etc/login.defs可以查到,一般Linux發(fā)行版約定為60000旅东;UID是確認用戶權限的標識灭抑,用戶登錄系統(tǒng)所處的角色是通過UID 來實現(xiàn)的,而非用戶名抵代,切記名挥; 在Linux 中,root的UID是0主守,擁有系統(tǒng)最高權限禀倔;比如我在/etc/passwd 中把beinan的UID改為0后,你設想會發(fā)生什么呢参淫?beinan這個用戶會被確認為root用戶救湖。beinan這個帳號可以進行所有root的操作;
一般情況下涎才,每個Linux的發(fā)行版都會預留一定的UID和GID給系統(tǒng)虛擬用戶占用鞋既,虛擬用戶一般是系統(tǒng)安裝時就有的,是為了完成系統(tǒng)任務所必須的用戶耍铜,但虛擬用戶是不能登錄系統(tǒng)的邑闺,比如ftp、nobody棕兼、adm陡舅、rpm、bin伴挚、shutdown等靶衍;預留數(shù)量以各個系統(tǒng)中/etc/login.defs
中的 UID_MIN 的最小值為準灾炭;比如Fedora 系統(tǒng) login.defs的UID_MIN是500,而UID_MAX值為60000颅眶,也就是說我們通過adduser默認添加的用戶的UID的值是500到60000之間蜈出;
查看/etc/login.defs如下
# Min/max values for automaticgid selection in groupadd
#
GID_MIN?????????????1000
GID_MAX????????????60000
# System accounts
#SYS_GID_MIN??????????100
#SYS_GID_MAX??????????999
2、關于/etc/shadow 1)/etc/shadow 概說涛酗;/etc/shadow文件是/etc/passwd 的影子文件铡原,這個文件并不由/etc/passwd
而產生的,這兩個文件是應該是對應互補的商叹;shadow內容包括用戶及被加密的密碼以及其它/etc/passwd
不能包括的信息燕刻,比如用戶的有效期限等;這個文件只有root權限可以讀取和操作沈自,權限如下:-r——– 1 root root 1.5K 10月1609:49 /etc/shadow
2)/etc/shadow 的內容分析酌儒;/etc/shadow 文件的內容包括9個段位,每個段位之間用:號分割枯途;我們以如下的例子說明忌怎;
beinan:$1$VE.Mq2Xf$2c9Qi7EQ9JP8GKF8gH7PB1:13072:0:99999:7:::
linuxsir:$1$IPDvUhXP$8R6J/VtPXvLyXxhLWPrnt/:13072:0:99999:7::13108:
第一字段:用戶名(也被稱為登錄名),在/etc/shadow中酪夷,用戶名和/etc/passwd 是相同的榴啸,這樣就把passwd 和shadow中用的用戶記錄聯(lián)系在一起;這個字段是非空的晚岭;
第二字段:密碼(已被加密)鸥印,如果是有些用戶在這段是x,表示這個用戶不能登錄到系統(tǒng)坦报;這個字段是非空的库说;
第三字段:上次修改口令的時間;這個時間是從1970年01月01日算起到最近一次修改口令的時間間隔(天數(shù))片择,您可以通過passwd 來修改用戶的密碼潜的,然后查看/etc/shadow中此字段的變化;
第四字段:兩次修改口令間隔最少的天數(shù)字管;如果設置為0,則禁用此功能啰挪;也就是說用戶必須經過多少天才能修改其口令;此項功能用處不是太大嘲叔;默認值是通過/etc/login.defs文件定義中獲取亡呵,PASS_MIN_DAYS 中有定義;
第五字段:兩次修改口令間隔最多的天數(shù)硫戈;這個能增強管理員管理用戶口令的時效性锰什,應該說在增強了系統(tǒng)的安全性;如果是系統(tǒng)默認值,是在添加用戶時由/etc/login.defs文件定義中獲取歇由,在PASS_MAX_DAYS 中定義卵牍;
第六字段:提前多少天警告用戶口令將過期果港;當用戶登錄系統(tǒng)后沦泌,系統(tǒng)登錄程序提醒用戶口令將要作廢;如果是系統(tǒng)默認值辛掠,是在添加用戶時由/etc/login.defs文件定義中獲取谢谦,在PASS_WARN_AGE 中定義;
第七字段:在口令過期之后多少天禁用此用戶萝衩;此字段表示用戶口令作廢多少天后回挽,系統(tǒng)會禁用此用戶,也就是說系統(tǒng)會不能再讓此用戶登錄猩谊,也不會提示用戶過期千劈,是完全禁用;
第八字段:用戶過期日期牌捷;此字段指定了用戶作廢的天數(shù)(從1970年的1月1日開始的天數(shù))墙牌,如果這個字段的值為空,帳號永久可用暗甥;
第九字段:保留字段喜滨,目前為空,以備將來Linux發(fā)展之用撤防;