用戶,是計算機識別使用者身份的一種唯一使用標識。
而現實生活中為了方便人類記憶使用等,用戶名往往是用便于人類識別的語言來記錄的。但事實上計算機并不對人類語言敏感,所以有必要把人類語言跟機器語言對應上。于是,linux給每一個創建用戶提供了一個UID。當使用用戶名登錄時,系統換自動對應UID來識別該用戶身份。
而用戶名與UID的對應信息就儲存在一個名稱解析庫中。
/etc/passwd
用戶名的名稱解析庫:/etc/passwd記錄了用戶名與相應的UID的對應關系以及一些額外的附加信息。
Cat /etc/passwd會看到各用戶名的詳細信息如下:
每一行都是一個用戶的完整信息,并且被‘:’分割成7個字段。從左至右依次是:
用戶名:密碼占位符:UID:GID:用戶描述信息:家目錄:默認shell
其中第二個字段密碼占位符比較特殊。剛開始時這個位置確實是記錄密碼的,但由于每一個用戶對/etc/passwd都有讀取權限,所以并不安全。后來,系統對此做了優化,把密碼“轉移”,只留下了占位符X。
/etc/shadow
剛才提到為了安全起見,/etc/passwd中的密碼字符串被“緊急轉移”,那么轉移到哪里去了呢,就是這里/etc/shadow。所以這個文件就只有萬能管理員root有讀取權限。如此一來“組織”就安全多了。同樣,我們cat一下看看:
看到了吧,那一串長長的奇怪的字符就是密碼了??床欢脑蚴且驗樽隽藛蜗蚣用?。除了一堆看不懂的字符串之外,還有一些密碼的期限信息。同樣的,使用‘:’分隔,分隔出了9個字段。自左向右依次是:
用戶名:加密的密碼:最后一次修改時間:密碼的最小年齡:密碼的最大年齡:密碼警告時段:密碼禁用期:賬戶過期日期:保留字段
加密的密碼字段又被‘$’分割成了三段:
第一段:‘$6’為加密算法,數字1-6分別代表了六種加密算法:md5,sha1,sha224,sha256,sha384,sha512;
第二段:有八位字符,是一串隨機數,被稱作salt,鹽。
第三段:才是真正的密碼轉換過來的。
如果密碼字段有*或!,表示用戶將無法使用密碼登陸(但可以使用其他方式登錄系統)。此字段也可為空,此時認證為特定的登錄名時,不要求密碼。然而,一些讀取 /etc/shadow文件的應用程序,在密碼字段為空時,可能決定禁止任何訪問。
最后一次修改時間:代表的是從linux元年1970年1月1日算起到用戶最后一次修改密碼的時間,若設置為0表示用戶應該在下次登錄系統時修改密碼??兆侄伪硎久艽a年齡功能被禁用。
密碼的最小年齡:代表用戶修改一次密碼后要間隔多長時間才允許再次修改,空字段或0代表沒有最小密碼年齡。
最大密碼年齡:是代表改一個密碼經過多長時間后必須再次修改,空字段表示沒有限制。如果最大密碼年齡小于最小密碼年齡,用戶將不能修改此密碼。
密碼警告時段:密碼過期之前,提前警告用戶的天數??兆侄位?/span>0表示沒有密碼警告期。
密碼禁用期:密碼過期后,仍然接受此密碼的天數(在此期間,用戶應該在下次登錄時修改密碼,強制要求。),過了這個期限,使用用戶的當前密碼將無法登陸??兆侄伪硎静粫娭泼艽a過期。
賬戶過期日期:表示從1970年1月1日開始算起的天數。超過這個期限賬號無法使用密碼登錄。即便其密碼沒有過期該目錄也無法使用。
/etc/group
Linux是多用戶,多任務的操作系統。一個系統上往往會有多個用戶,所以為了方便管理這些用戶,linux為用戶提供了用戶組的管理機制。同樣的/etc/group就是用來存放組名解析和組的一些有關信息。
還是用’:‘分隔,分隔出了四個字段。分別是:
組名:組密碼:GID:用戶列表
組密碼依然是使用的占位符X,真正的密碼已經“轉移”到/etc/gshadow。
GID中存放的是對應組名的組密碼。
用戶列表顯示了該組中的組成員。
/etc/gshadow
用戶組密碼的相關信息。‘:’分隔出了四個字段:
組名:加密的密碼:管理員:成員
加密了的密碼:此密碼用于不是此組成員的用戶獲取此組的權限。此字段可以為空,此時,只有組成員可以獲取組權限。 以嘆號開始的密碼字段意味著密碼被鎖定。該行的剩余字符表示鎖定之前的密碼。
管理員:必須是一個逗號分隔的用戶名列表。管理員可以更改組密碼和成員。
成員:以此組為附加組的用戶,必須是一個逗號分隔的用戶名列表。成員可以免密碼訪問組。
/etc/login.defs
/etc/login.defs定義了一些管理用戶和用戶組時的默認配置。
例如:定義了創建用戶時默認會為該用戶創建一個郵箱,郵件的存儲路徑為/var/spool/mail。
定義了用戶密碼的期限信息。
創建用戶不指定UID時,系統默認指定UID的范圍:
系統用戶UID:201-999
普通用戶UID:1000-60000
創建用戶時是否為其創建一個家目錄:
Yes,是
No,否
刪除一個用戶時,若其用戶組中沒有其他用戶時,是否把該用戶組一并刪除:
Yes,是
No,否
創建密碼時使用的加密算法:
SHA521
/etc/default/useradd
從目錄名就可以看出,此文件是關于創建用戶時的一些默認配置信息。
GROUP=100:當不創建似有組為主組時,使用user組作為主組。
HOME=/home:用戶家目錄的默認創建位置,默認會在/home創建一個與用戶同名的家目錄。
INACTIVE=-1:是否啟用密碼禁用期,-1代表不起用。
EXPIRE=:賬號終止日期,不設置代表不啟用。
SHELL=/bin/bash:默認使用的shell類型。
SKEL=/etc/skel:用戶家目錄中的環境文件,默認添加用戶的目錄默認文件存放位置;也就是說,當我們用adduser添加用戶時,用戶家目錄下的文件,都是從這個目錄中復制過去的。
CREATE_MAIL_SPOOL=yes:默認為新創建的用戶添加郵箱位置。會在/var/spool/mail下為用戶創建一個同名的郵箱。
原創文章,作者:Hulk,如若轉載,請注明出處:http://www.www58058.com/53729