前言
- 在Linux系統中,用戶賬戶是登錄系統的唯一憑證,其中root用戶是系統的最高管理者,該用戶的UID是0,與用戶和組群賬戶相關的配置文件有/etc/passwd,/etc/shadow,/etc/group和/etc/gshadow。
一、 用戶賬戶簡介
1、 用戶賬戶分類
- root用戶
- root用戶UID為0。root用戶的權限是最高的,普通用戶無法執行的操作,root用戶都能完成,所以也稱之為超級用戶
- 系統用戶
- 系統用戶的UID為1~999
- 這類用戶不具有登錄Linux的能力,但卻是系統運行不可缺少的用戶。
- 普通用戶
- 系統用戶的UID為1000~60000
- 在Linux系統上進行普通操作,其使用系統的權限受限制。
2、 /etc/passwd文件
- 假設以賬戶zhangsan登錄系統時,系統首先會檢查/etc/passwd文件,存在zhangsan賬戶,然后確定用戶zhangsan的UID,通過UID確認用戶身份,如果存在,則讀取/etc/shadow文件中對應的密碼,核實無誤,則登錄系統,讀取用戶的配置文件
[root@centos83 home]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
..............(省略)..........
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rngd:x:994:991:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin
zhangsan:x:1000:1000::/home/zhangsan:/bin/bash
| 字段 |
字段含義 |
| 用戶名 |
在系統中用戶名應該具有唯一性 |
| 密碼 |
存放加密用戶的密碼,看到的是一個x,其實密碼已經被映射到/etc/shadow文件中 |
| 用戶標識號(UID) |
每個用戶的UID都是唯一的,root用戶的UID是0,普通用戶的UID默認從1000開始 |
| 組群標識號(GID) |
在系統內用一個整數標識用戶所屬的主要組群ID號,每個組群ID都是唯一的 |
| 用戶名全稱 |
用戶名描述,可以不設置 |
| 主目錄 |
用戶登錄系統后首先進入的目錄 |
| 登錄shell |
用戶使用的Shell類型,Linux系統默認使用的Shell是/bin/bash |
2、 /etc/shadow文件
- /etc/shadow文件內容包括用戶及被加密的密碼以及其他/ect/passwd不能包括的信息,比如賬戶有效期等
- /etc/shadow文件只有root用戶可以讀取和操作,確保系統安全
[root@centos83 home]# cat /etc/shadow
root:$6$Uq9EeN5GfNDLF83M$csUva0exzO/n3PIvhKv5D1Xs3Ga06G2whjfagtEtJUW1wlQbREEd6HkOjTRCTqGuZCXvg2WQ1wdyzqY.qfAzE1::0:99999:7:::
bin:*:18397:0:99999:7:::
..............(省略)..........
sshd:!!:18625::::::
rngd:!!:18625::::::
zhangsan:$6$HMTy.raoMPbhboQn$71FPRHyRycVf3AcenfNW1n7/qD7ep.x5vSeBSSxzJdWmvjoQ98oDhfA8Kz/6PlOgKe/ksj58AXeWBPOGAm/dl1:18625:0:99999:7:::
| 字段 |
字段含義 |
| 用戶名 |
這里的用戶名和/etc/passwd中的相同 |
| 加密密碼 |
密碼已經加密,如果由用戶顯示"!!",則表示這個用戶還沒有設置密碼,無法登錄到系統 |
| 用戶最后一次更改密碼的日期 |
從1970年1月1日算起到最后一次修改密碼的時間間隔天數 |
| 密碼允許更換前的天數 |
如果設置為0,則禁用此功能。該字段指定用戶可以更改密碼的天數 |
| 密碼需要更換的天數 |
如果設置為0,則禁用此功能。該字段指定用戶必須更改密碼的天數 |
| 密碼更換前警告的天數 |
用戶登錄系統后,系統登錄程序提醒用戶密碼即將過期 |
| 賬戶被取消激活前的天數 |
表示用戶密碼過期多少天后,系統會禁用此用戶 |
| 用戶賬戶過期日期 |
指定用戶賬戶禁用的天數(從1970年1月1日開始到賬戶被禁用的天數),如果這個字段的值為空,賬戶可以永久使用 |
| 保留字段 |
目前為空,為將來發展做預留 |
二、 用戶賬戶設置
1、useradd:創建用戶
- 創建用戶
- 創建用戶並設置UID為1010
- 創建用戶並設置用戶所屬群組為root
- 創建系統用戶mysql並設置所屬組群
- useradd -r -g mysql mysql
| 選項 |
選項含義 |
| -d <主目錄> |
新賬戶每次登錄時所使用的主目錄 |
| -e <過期日> |
設置賬戶的有效期限,日期格式為MM/DD/YY |
| -f <失效日> |
設置密碼過期多少天后為失效狀態 |
| -c <用戶名全稱> |
設置用戶賬戶的用戶名全稱(描述) |
| -g <主要組群名> |
指定用戶賬戶所屬的主要組群。 |
| -G <次要組群名> |
指定用戶賬戶為多個次要組群的成員,每個組群使用“,”來分隔 |
| -m |
用戶主目錄如果不存在則自動建立 |
| -r |
創建系統用戶賬戶,不會創建用戶主目錄,也不會響應在文件/etc/login.defs中定義的值 |
| -u <用戶UID> |
用戶的UID,數字不可以為負值 |
2、 usermod:修改用戶賬戶
- 修改用戶pp的登錄名為moon
- 修改用戶moon賬戶過期時間為2028年11月23日
- usermod -e 11/23/2028 moon
- 修改用戶moon的主目錄到/home/oopp,並自動創建目錄
- usermod -d /home/oopp -m moon
| 選項 |
選項含義 |
| -m |
移動主目錄的內容到新的位置 |
| -l <新登錄名> |
修改用戶賬戶名稱 |
| -u <用戶UID> |
修改用戶UID |
| -c <用戶名全稱> |
修改用戶賬戶的用戶名全稱 |
| -d <主目錄> |
修改用戶登陸時的主目錄,如果指定-m選項,用戶舊目錄會移動到新的目錄中,如果舊目錄不存在,則創建新目錄 |
| -e <過期日> |
修改賬戶的有效期限,日期格式為MM/DD/YY |
| -f <失效日> |
修改在密碼過期后多少天即設定密碼為失效狀態 |
| -g <主要組群名> |
修改用戶所屬的主要組群 |
| -G <次要組群名> |
修改用戶所屬的次要組群(附加組群) |
3、 userdel:刪除用戶賬戶
- 刪除用戶moon
- 刪除用戶的同時刪除用戶主目錄
| 選項 |
選項含義 |
| -r |
刪除用戶時,把用戶的主目錄和本地郵件存儲的目錄或文件一同刪除 |
| -f |
強制刪除用戶 |
三、組群賬戶簡介
1、 組群賬戶分類
-
分類法一
- 私有組群
- 創建新用戶時,如果沒有指定該用戶所屬那一組群,則Linux會自動創建同名組群,此時這個組群就是私有組群
- 將其他用戶加入到這個私有組群中,會使這個組群變為標准組群
- 標准組群
- 也稱為普通組群,可以包含多個用戶賬戶
- 如果使用標准組群,則在創建新用戶時,應該指定該用戶所屬組群
-
分類法二
- 主要組群
- 當一個賬戶屬於多個組群成員時,登錄后所屬組群便是主要組群,其他組群是次要組群,一個用戶賬戶智能屬於一個主要組群
- 次要組群
- 也稱之為附加組群,一個用戶賬戶可以屬於多個次要組群
2、 /etc/group文件
-
文件簡介
- 內容包括組群名、組群密碼、GID及該組群所包含的用戶
- 比如把某一用戶加入到root組群,那么這個用戶就可以瀏覽root用戶主目錄的文件
- 如果root用戶把某個文件的讀寫執行權限開放,root組群的所有用戶就都可以修改此文件
- 如果是可執行文件,root組群的用戶也是可以執行的
[root@centos83 home]# cat /etc/group
root:x:0:
bin:x:1:
..............(省略)..........
sshd:x:74:
rngd:x:991:
zhangsan:x:1000:
| 字段 |
字段含義 |
| 組群名 |
組群名稱 |
| 組群密碼 |
存放加密的組群密碼,看到一個x,密碼已經被映射到/etc/gshadow文件中 |
| 組群標識號(GID) |
在系統內用一個整數標識組群GID,每個GID都是唯一的,默認普通組群GID從1000開始,root組群GID是0 |
| 組群成員 |
屬於這個組群的成員,如root組群的成員有root用戶 |
- 組群GID范圍查看
//查看系統創建組群默認的GID范圍
[root@centos83 ~]# cat /etc/login.defs |grep GID
GID_MIN 1000
GID_MAX 60000
3、 /etc/gshadow文件
- /etc/gshadow是/etc/group的加密文件,組群密碼存放在此文件中
- /etc/gshadow和/etc/group是互補的兩個文件
- 對於大型服務器,需要針對很多用戶和組群,定制比較復雜的權限模型。設置組群密碼是很有必要的
[root@centos83 ~]# cat /etc/gshadow
root:::
bin:::
daemon:::
sys:::
..............(省略)..........
zhangsan:!::
| 字段 |
字段含義 |
| 組群名 |
組群的名稱 |
| 組群密碼 |
密碼已加密,如果組群顯示的是“!”,表示這個組群沒有密碼 |
| 組群管理者 |
組群的管理者有權在該組中添加、刪除用戶 |
| 組群成員 |
屬於該組群的用戶成員列表,如有多個用戶則用逗號分隔 |
四、 組群賬戶設置
1、 groupadd:創建組群賬戶
- 創建組群china
- 創建GID為1300的組群ous
- 創建系統族群chinese
- groupadd -r chinese
- // cat /etc/group |grep chinese命令查看用戶gid為978,1000以內均為系統組群
| 選項 |
選項含義 |
| -g
|
為組群設置GID |
| -r |
創建系統組群 |
| -o |
允許使用和別的組群相同GID創建組群 |
| -f |
即使組群存在,還是強制創建組群 |
| -p <密碼> |
為新組群設置加密的密碼 |
2、 groupmod:修改組群賬戶
- 修改china的GID為1400(修改的GID必須是新的。否則使用-o)
- 修改組群名稱為suhai
| 選項 |
選項含義 |
| -g
|
設置GID |
| -o |
重復使用組群GID |
| -n <新組群名> |
更改組群名稱 |
3、 groupdel:刪除組群賬戶
- 刪除時,如果該組群中仍舊包括某些用戶,必須先刪除這個用戶后才能刪除組群
- 刪除組群china
五、 用戶和組群賬戶維護
1、 passwd:設置用戶密碼
-
為用戶china添加密碼
-
刪除用戶china密碼
2、 gpasswd:組群管理
- 把用戶china添加到已有的組群group1中
- 從組群group1中刪除china用戶
| 選項 |
選項含義 |
| -a <用戶> |
將一個用戶加入到一個組群中 |
| -d <用戶> |
將一個用戶從一個組群中移除 |
3、 su:切換用戶
- 切換用戶china,但是不切換環境
- 切換用戶china,並切換環境
- 從china用戶切換到root用戶
- su 或者 su -
- 切換root用戶不需要寫root名稱
ps:加了"-",是以login shell登陸的,所以會設置環境變量,也會將目錄變更到用戶所屬目錄下;如果不加,使用的還是切換前用戶的環境變量,有時候會出錯,看情況使用
4、 groups:顯示組群成員
[wuyiz@centos83 ~]$ groups wuyiz
wuyiz : wuyiz suhai
5、 id:顯示用戶UID及該用戶所屬組群的GID
[wuyiz@centos83 ~]$ id
uid=1000(wuyiz) gid=1000(wuyiz) 組=1000(wuyiz),1001(suhai) 環境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023