前言
Linux系統作爲多用戶多任務的操作系統,可以在同一時間內允許多個用戶登錄、操作及配置計算機,隨着需求的增加,用戶的增加,我們也就需要對用戶進行管理,以至於更有效地開展項目,改善工作,更有效得滿足場景需要,提高效果、效率、效益。
下面我們就來了解一下Linux中如何對用戶進行管理操作。
目錄
一.用戶管理命令
通過系統中的命令對用戶進行相應的操作。在講解命令之前,我們需要了解,在linux操作系統中,以下的幾個概念:
- UID:用戶ID號,用戶的唯一標識號,就相當於一個人的身份證號。
- 所屬用戶組:在linux操作系統中,一個用戶必須有它的用戶組,如果不給新用戶指定用戶組,那麼該會默認創建一個與用戶名相同的組。
- GID:用戶組的ID號。
- 家目錄:與Windows系統相同,可理解爲一個用戶的用戶文件夾,所有用戶的家目錄默認被創建在 /home 目錄下。相當於Windows操作系統中的 C:/Users 目錄。
1.1 創建用戶
通過 useradd
命令來創建新的用戶。
語法格式: useradd [參數] <用戶名>
常用參數:
參數 | 作用 |
---|---|
-u | 指定用戶UID |
-d | 指定用戶家目錄位置 |
-c | 添加用戶說明/備註 |
-g | 指定用戶初始所屬的用戶組 |
-G | 指定用戶所屬附加組 |
-s | 指定用戶登錄的shell解釋器 |
操作演示:
添加新用戶 xiaobei
[root@localhost ~]# useradd xiaobei
添加新用戶 test01 並且指定其家目錄爲 /test/test01
[root@localhost ~]# useradd -d /test/test01 test01
添加新用戶 test01 並且指定ID爲6666
[root@localhost ~]# useradd -u 6666 test01
添加新用戶 test01 並且指定其所屬組爲root,並設置其登錄shell爲nologin
[root@localhost ~]# useradd -g root -s /sbin/nologin test01
1.2 設置密碼
通過passwd
命令來設置當前登錄用戶(自身)或者其他用戶的密碼。該命令如果不加用戶名,即代表對當前登錄的用戶進行操作。不加參數,代表設置密碼。
語法格式: passwd [參數] [用戶名]
常用參數:
參數 | 作用 |
---|---|
-d | 刪除密碼 |
-S | 查詢用戶密碼的狀態 |
-l | 鎖定用戶密碼 |
-u | 解鎖用戶密碼 |
操作演示:
設置當前登錄用戶的密碼:
[root@localhost ~]# passwd
設置用戶xiaobei的密碼
[root@localhost ~]# passwd xiaobei
清除用戶 xiaobei 的密碼
[root@localhost ~]# passwd -d xiaobei
1.3 查看登錄用戶登錄
使用命令who
與 w
命令可以查詢當前系統上已登錄用戶的相關信息。
語法格式: who [參數]
常用參數:
參數 | 作用 |
---|---|
-a | 打印全面信息 |
-b | 打印系統最近引導時間 |
-H | 帶有列名打印信息 |
-u | 打印已登錄用戶列表 |
操作演示:
輸出當前已登錄的用戶信息(帶列名打印)
[root@localhost ~]# who -H
名稱 線路 時間 備註
root pts/0 2020-12-30 16:16 (192.168.3.8)
註釋:線路列表中的 pts/0 ,pts代表遠程終端登錄,如果輸出了 tty1,則tty代表本地終端登錄。
語法格式: w [參數]
常用參數:
參數 | 作用 |
---|---|
-h | 不帶列名輸出 |
-s | 使用短格式輸出 |
操作演示:
輸出當前已登錄用戶信息(帶列名輸出)
[root@localhost ~]# w
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.3.8 16:16 0.00s 0.46s 0.01s w
註釋:LOGIN@ 代表登錄時間,IDLE表示空閒時間,JCPU是與該終端連接的進程佔用的時間,PCPU 是用戶當前進程所佔用的時間。
1.4 修改用戶屬性
使用usermod
命令,可以修改用戶相關屬性和信息。
語法格式: usermod [參數] <用戶名>
常用參數:
參數 | 作用 |
---|---|
-u | 修改用戶UID |
-c | 修改用戶的說明/備註 |
-g | 修改用戶的所屬用戶組 |
-G | 修改用戶的附加組 |
-L | 鎖定用戶密碼 |
-U | 解鎖用戶密碼 |
-s | 修改用戶的登錄shell |
操作演示:
設置用戶xiaobei的登錄shell爲nologin 使其無法登錄
[root@localhost ~]# usermod -s /sbin/nologin xiaobei
1.5 用戶密碼有效性
使用chage
命令修改用戶和用戶密碼的有效期限,這個信息由系統用於確定用戶何時必須更改其密碼。
語法格式: chage [參數] [用戶名]
常用參數:
參數 | 作用 |
---|---|
-M | 密碼保持有效的最大天數 |
-W | 用戶密碼到期前,提前收到警告信息的天數 |
-E | 帳號到期的日期,會禁止此帳號 |
-d | 上一次更改的日期 |
-l | 顯示用戶的密碼相關信息 |
操作演示:
使用戶 xiaobei 的密碼有效期最大爲30天。
[root@localhost ~]# chage -M 30 xiaobei
1.6 刪除用戶
使用命令userdel
刪除用戶。在刪除之前確定用戶沒有登錄。
語法格式: userdel [參數] [用戶名]
常用參數:
參數 | 作用 |
---|---|
-f | 強制刪除用戶賬號 |
-r | 同時刪除用戶的家目錄 |
操作演示:
刪除用戶 test01 同時刪除該用戶的家目錄
[root@localhost ~]# userdel -r test01
1.7 切換登錄用戶
使用 su
命令切換當前登錄用戶。root 用戶切換普通用戶時不需要輸入密碼,反之需要。
語法格式: su [用戶名]
常用參數:
參數 | 作用 |
---|---|
-c | 僅執行一次命令,不切換用戶身份 |
操作演示:
切換到用戶 xiaobei
[root@localhost ~]# su xiaobei
切換到用戶 root 同時一起切換環境變量。
[xiaobei@localhost ~]$ su - root
用root用戶執行一條命令 useradd
[xiaobei@localhost ~]$ su - root -c "useradd test01"
1.8 退出登錄
使用命令 logout
退出登錄。遠程終端以及su
命令登錄的用戶也可用 exit
退出。
二.用戶組管理命令
在前面我們提到過,在創建新用戶時,會同時創建一個與該用戶同名的用戶組。這是因爲Linux中的用戶,必須有一個所屬組,如果在創建用戶時指定一個所屬組,就不會創建與其同名的組了。下面我們只簡單介紹幾個組管理的命令。
2.1 添加用戶組
使用命令groupadd
添加用戶組。
語法格式: groupadd [參數] <組名>
常用參數:
參數 | 作用 |
---|---|
-g | 創建的同時制定用戶組ID |
操作演示:
添加用戶組 userg 並指定id爲6666
[root@localhost ~]# groupadd -g 6666 userg
2.2 修改組屬性
使用命令groupmod
修改用戶組的信息。
語法格式: groupmod [參數] <組名>
常用參數:
參數 | 作用 |
---|---|
-n | 修改組名 |
-g | 修改新的GUID |
操作演示:
修改用戶組 userg 組名爲testgroup
[root@localhost ~]# groupmod testgroup userg
2.3 設置用戶組
使用命令gpasswd
來設置組和組內成員
語法格式: gpasswd <參數 > <組名>
常用參數:
參數 | 作用 |
---|---|
-a | 添加用戶到組 |
-d | 從組刪除用戶 |
操作演示:
把用戶 xiaobei 添加到 group01 用戶組
[root@localhost ~]# gpasswd -a xiaobei group01
2.4 刪除用戶組
使用命令groupdel
來設置組和組內成員。如果組內有初始用戶,則不能刪除,如果組內有附加用戶,也可以刪除。
語法格式: groupdel [參數] <組名>
操作演示:
刪除用戶組 test01
[root@localhost ~]# groupdel test01
三.用戶管理相關的配置文件
以上所有的用戶管理、組管理命令,包括用戶的添加、刪除,密碼的修改,有效期設置等命令的操作,均會保存在配置文件中,也就是命令的操作也就是修改配置文件。換一種說法,例如我們要修改某用戶的密碼有效期,除了可以使用命令,還可以直接修改Linux中記錄用戶信息的配置文件。都可以達到同樣的效果。
3.1 用戶信息配置文件
通過命令進行創建、修改用戶以及相關操作,都是對配置文件/etc/passwd
的修改。比如修改用戶家目錄,可以用命令 usermod
修改,也可以直接修改文件中的第六個字段。該文件除了記錄普通用戶的信息,也記錄了系統用戶的信息。切記,系統用戶的信息不要輕易更改,否則進行某相關操作時,會導致系統錯誤。
通過命令 less /etc/passwd
或者 vim /etc/passwd
可以查看以及修改該配置文件。
文件概覽:
字段對應信息:
1.用戶名稱:2.密碼標誌:3.UID:4.GID :5.用戶說明/備註:6.家目錄:7.登錄的shell
字段解釋:
密碼標誌 x 代表該用戶有密碼。
UID中 0 代表超級用戶,RedHat、CentOS系列的發行版中,1-499爲系統用戶(僞用戶),通過配置文件可以看到它們的shell解釋器都爲nologin也就是不登錄。500-65535爲普通用戶可用的UID。
用戶的附加組可以有多個。
3.2 用戶密碼信息配置文件
在Linux系統中/etc/shadow
文件存放用戶密碼信息,又稱爲“影子文件”。由於存放了密碼信息,爲了保證安全性,該文件只有root用戶可以讀取。
文件概覽:
字段對應信息:
1.用戶名稱:2.加密密碼:3.密碼最後一次修改日期:4.兩次密碼的修改間隔:5.密碼有效期:6.有效期到期前的警告天數:7.寬限天數:8.賬號失效時間
字段解釋:
加密密碼採用了SHA512散列加密算法。如果該字段爲 !! 或 * 就代表該用戶不能登錄。
該文件所有的日期格式均採用時間戳。
兩次密碼的修改間隔爲天數,10 就代表修改過一次密碼後十天內不能再次修改。
unix時間戳是從1970年1月1日(UTC/GMT的午夜)開始所經過的秒數,不考慮閏秒。
Unix時間戳(英文爲Unix epoch, Unix time, POSIX time 或 Unix timestamp)
是從1970年1月1日(UTC/GMT的午夜)開始所經過的秒數,不考慮閏秒。
UNIX時間戳的0按照ISO 8601規範爲 :1970-01-01T00:00:00Z.
一個小時表示爲UNIX時間戳格式爲:3600秒;一天表示爲UNIX時間戳爲86400秒,閏秒不計算。
在大多數的UNIX系統中UNIX時間戳存儲爲32位,這樣會引發2038年問題或Y2038。
-------- 百度百科
第七字段寬限天數,代表用戶封禁前的緩衝天數,如果該值爲3,就代表有效期過三天後再進行用戶封禁。
3.3 創建用戶默認配置信息文件
在創建用戶時,我們可以手動指定家目錄。如果不指定,就會默認把家目錄放到/home
目錄下。如果我想讓它默認創建到其他位置呢?我們就可以通過修改配置文件/etc/default/useradd
文件來實現。
文件概覽:
字段解釋:
HOME字段控制創建用戶時默認的家目錄位置
INACTIVE爲密碼過期的寬限天數
SHELL創建用戶默認的登錄shell
SKEL爲家目錄的模板目錄
CREATE_MAIL_SPOOL是否建立郵箱
GROUP用戶的默認組
EXPIRE密碼失效時間
3.4 用戶限制設定配置文件
在配置文件/etc/login.defs
中,記錄了用戶限制設定。該文件的作用是爲了對用戶更爲規範的管理,例如用戶默認的密碼有效期,就可以通過該文件進行修改,就是前面有講到的chage
命令相關的,不過該文件修改的是用戶創建時的默認項,相當於一個模板文件。注意,該文件設置對用戶root不生效。
文件概覽:
部分字段解釋:
PASS_MAX_DAYS 默認密碼有效期
UID_MIN UID的最小值
PASS_MIN_DAYS 兩次密碼修改的間隔。
四.組管理相關的配置文件
與用戶管理相同,除了命令,也可以通過直接修改配置文件來達到對組的配置。
4.1 組信息配置文件
用戶組的配置文件位置爲/etc/group
。
文件概覽:
字段對應信息:
1.組名:2.組密碼標誌:3.GID:4.組中附加用戶
4.2 組密碼信息配置文件
組密碼信息文件/etc/gshadow
中存放着用戶組的密碼以及管理員用戶名。
文件概覽:
字段對應信息:
1.組名:2.組密碼:3.組管理員用戶名:4.組中附加用戶
結語
不寫個5000字都對不起超詳細三個字。