linux中與用戶管理、用戶組控制相關的主要的三個文件是 /etc/group /etc/passwd和/etc/shadow。這三個文件中確定了系統中的所有用戶以及其所在組的信息,包括用戶名,用戶密碼,用戶組,用戶ID和組ID等等,直接通過修改這些文件就可以實現增加用戶等操作,而如adduser <username>這樣的指令本質上最終也是在修改這些文件。下面對這個三個文件的內容做一個簡要分析。
/etc/group使用vim打開該文件
vim /etc/group可以看到文件中由多行組成,其中每行代表一個組的信息,以root組為例說明每一行的格式及含義:
root:x:0:該行由四段組成,每一段間以:區分,每段含義如下:
| 組名稱 | 組密碼 | 組ID | 組成員 |
|---|---|---|---|
| root | x | 0 |
,隔開/etc/passwd同樣使用vim打開該文件,可以看到該文件格式與group類似由多行組成,每行代表了一個用戶的信息,依然以root用戶為例,該行顯示:
其中由7段組成,每段間以:分隔,每段含義如下
| 用戶名 | 用戶密碼 | 用戶ID | 組ID | 備注 | 家目錄 | 啟動shell |
|---|---|---|---|---|---|---|
| root | x | 0 | 0 | root | /root | /bin/bash |
etc/shadow文件中,即接下來要介紹的一個文件用戶ID必須為非負數,同時0固定為root用戶,1~499為系統保留用戶,500以上則為普通用戶備注為一行不含空格的字符串,用于簡要表明該用戶的信息啟動shell為從該用戶登錄系統后所使用的shell程序,常用的shell有sh csh ksh tcsh bash等等,默認情況下為/bin/sh,該段也可以為一個程序如python等,這樣從該用戶登錄系統后只能運行該程序,結束后退出/etc/shadow該文件保存用戶的密碼加密后的信息,打開該文件需要root權限,打開后第一行為root的密碼信息:
root:$id$salt$encrtpted:17051:0:99999:7:::由8個:分割成9個字段,每個字段定義如下
| 用戶名 | 加密值 | 最近密碼修改時間 | 密碼最短使用天數 | 密碼最長使用天數 | n天前提示密碼即將過期 | 密碼非活動天數 | 密碼額定日期 | 保留字段 |
|---|---|---|---|---|---|---|---|---|
| root | $id$salt$encrypted | 17051 | 0 | 99999 | 7 |
對部分字段的說明:
加密值:上表中$id$salt$encrypted并不是實際顯示在文件中的值,而是由兩個$符號隔開的三個字段
| id | 加密方法 |
|---|---|
| 1 | MPS |
| 2a | Blowfish |
| 5 | SHA-256 |
| 6 | SHA-512 |
!則代表該用戶被鎖定,無法登陸,可以使用usermod -U <username解鎖最近密碼修改時間: 從1970年1月1日距密碼修改日期共經歷多少天最短使用密碼使用天數:0為無限制最長使用密碼使用天數:99999為無限制密碼非活動天數:0表示過期立即鎖定,-1表示永不鎖定一般來說不建議直接修改這三個文件,因為這三個文件之間相互之間,以及與其他文件之間是有聯系關系的,單獨修改其中一個文件時還需要對其他關聯文件進行同步修改,而一些常用操作可以通過bash指令來完成,下面指令中<>內為用戶定義的變量值。
useradd <usernamer>用戶刪除 userdel <username>用戶名修改 usermod -l <newname> <oldname>注意這個操作僅僅只修改用戶名稱,家目錄名等需要手動更改鎖定用戶 usermod -L <username>鎖定后用戶無法登陸,需要root權限,會導致etc/passwfd的密碼字段顯示為!解鎖用戶 usermod -U <sername> 解鎖后會去除etc/passwfd的密碼字段的!用戶密碼修改 passwd <username>更改用戶所在組 usermod -G <groups> <username>這個指令會更改用戶到列表中的組中,如果用戶原先所在的組沒有寫入這個列表中,則用戶會自動從這個組退出,如果增加-a選項,則不會從原先所在而沒有在中出現的的組中退出。新聞熱點
疑難解答