在Linux 中,用戶的相關信息保存在對應的文件中,這些文件分別是:/etc/passwd 和/etc/shadow 。
/etc/passwd
系統的每一個合法用戶帳號都對應于該文件中的一行記錄。每行記錄定義了一個用戶帳號的屬性。可以用#cat /etc/passwd 或者#vim /etc/passwd 打開查看。
passwd 文件中每行對應一個帳號,每個帳號由7 部分組成,各部分之間用“:”分隔。分別代表 用戶名:用戶密碼(用x 密碼占位符表示):UID (用戶標識號):GID (用戶基本組標識號):備注(用戶全名及用戶信息):用戶家目錄:默認使用的shell (命令解釋程序)
/etc/shadow
Linux 將用戶的口令(密碼)保存在shadow 文件中,該文件不能被普通用戶讀取,只有root 用戶才有權利讀取。shadow 文件與passwd 文件一樣,每個用戶對應其中的一行,并且用8 個冒號分成了9 個部分(稱為“域”)。如上圖,每段分別表示
1 、用戶名:與passwd 用戶名相對應。
2 、用戶密碼:已被加密 如果它的開頭是“$ 1 $” 這意味著基于MD5 算法的加密 !如果是在密碼欄的第一個字符為* 或者是! ,表示此賬號并不會被用來登入,如果是!!表示帳號被鎖定(禁用),如果為空,表示用戶不需要密碼即可登陸。
3 、最近更動密碼的日期:這個字段記錄了更動密碼的那一天的日期。注意:Linux 日期的時間是以1970/01/01 作為 1 ,而1971/01/01 則為366 ,所以這個日期是累加的天數是一個絕對時間!
4 、密碼不可被更動的天數:如果是0 ,表示密碼隨時可以更動。如果在此期間修改系統會提示:You must wait longer to change your password passwd: Authentication token manipulation error
5 、密碼必須在限制的天數內修改的天數:必須要在這個時間之內重新設定的密碼,否則這個賬號將會暫時失效。而99999 ,表示密碼不需要重新輸入!
6 、密碼需要修改期限前的警告期限:當賬號的密碼失效期限快要到的時候,系統會依據這個字段的設定,發出警告(Warning: your password will expire in 5 days )給這個賬號,提醒再過n 天密碼就要失效了。。。
7 、密碼過期的寬限時間:當密碼失效后,還可以用這個密碼在n 天內進行登入。 而在這個天數后還沒有修改密碼,賬號就絕對失效了!
8 、賬號失效日期:也是用1970 年以來的總天數設定。賬號在此規定的日期之后,將無法再使用。通常應用在收費服務的系統中,可以規定一個日期讓該賬號不能再使用!
9 、保留:最后一個字段是保留的,看以后有沒有新功能加入
用戶組的信息保存在/etc/group 和/etc/gshadow 文件下
/etc/group
該文件記錄了系統中所有用戶組的信息,分為四段,各段含義如下:
1、 用戶組名稱:就是組的名字
2、 用戶組密碼:通常不需要設置,如果需要不一個用戶臨時加入其他組可能要用到。密碼記錄在/etc/gshadow 中。
3、 GID :用戶組標識。
4、 用戶列表:以該組為附加組的所有帳號(如果該組是某用戶的基本組則該用戶不再此段列出),每個用戶用“,”隔開。
/etc/gshadow
與/etc/group 類似,也分為四個段,各段含義如下:
1、 用戶組名稱
2、 密碼欄:同樣的,開頭為!表示無法登陸
3、 用戶管理員帳號:
4、 該用戶組的所屬帳號:與/etc/group 內容相同。
帳號管理常用命令
1、 新增用戶命令:useradd
語法:useradd[-c][-d][-e][-f][-g][-G group[,...]][-m[-k skeleton_dir]/-M]
[-s][-u[-o][-n][-r] username
選項:-c 【comment 】新帳號說明欄,對應于/etc/passwd 第五欄的內容。
-d 【home_dir 】設定用戶的家目錄,不設定時使用預設值。
-e 【expire_date 】帳號終止日期,日期的指定格式為MM/DD/YY 。
-f 【inactive_days 】帳號過期幾日后永久停權。當值為0 時帳號則立刻被停權。而當值為-1 則關閉此功能。預設值為-1.
-g 【initial_group 】設置用戶所屬的組。
-G 【group ,[...] 】設置用戶的附加組。
-m
-M 不建立使用者目錄。
-n
-r 建立系統帳號。
-s 【shell 】使用者登錄后使用的shell
-u uid 用戶ID 值。
2 、添加密碼命令:passwd
格式:passwd username
選項:
注釋:使用useradd 建立帳號之后,默認情況,該帳號暫時被封鎖,需要給他設置密碼才能啟用。passwd 常用的方式用兩種,一種是root 用戶幫其他用戶設置或改密碼,命令格式#passwd otherusername root 可以不用知道該用戶的密碼。另一種是用戶自己改密碼直接passwd 回車即開始更改。
3 、修改帳號信息命令:usermod
格式:usermod [-cdegGlsuLu] username
選項:-L 暫時凍結用戶密碼,讓其無法登陸
-U 解凍用戶密碼。
4 、刪除用戶命令:userdel
語法:#userdel [-r] username
選項: -r : 連同用戶的家目錄也一起刪了,不加則只刪除帳號,不刪除家目錄。
用戶組的管理:
1 、新增用戶組命令:groupadd
語法:#groupadd [-g gid] [-r] groupname
選項:-g :后邊接某個特定的GID, 用來指定GID
-r :建立系統用戶組。
2 、修改用戶組命令:groupmod
語法:groupmod [-g newgid] [-n newgroup_name] oldgroup_name
選項:-g :修改已有的用戶組GID 號。
-n :修改已有的用戶組名稱。
注釋:不要隨意更改GID, 否則容易造成系統資源的混亂。
3 、刪除用戶組命令:groupdel
語法:groupdel [groupname]
注釋:要刪除一個用戶組必須確認沒有用戶使用該組作為初始用戶組。
4 、設置用戶組密碼:gpasswd
語法:#gpasswd [-r] groupname
選項: :如果沒有參數,表示給groupname 設置密碼。
-r :將groupname 的密碼刪除。
-R :讓groupname 的密碼欄失效,所以newgrp 就不能用了。