什么是用戶
登錄進系統的用戶對硬件資源的操作都需要通過操作系統,操作系統的開發者們都專門開發了安全機制,要使用操作系統必須事先輸入正確的用戶名和密碼。
為何要有用戶
系統上的每一個進程,都需要一個特定的用戶運行,一個用戶擁有特定的權限,該用戶運行的進程與用戶權限一致。
通常在生產環境是使用普通用戶管理服務器,因為root權限過大,容易出問題。
查看用戶信息的命令
- id:查看用戶信息
[chirou@duorou ~]$ id
uid=1001(chirou) gid=1001(chirou) 組=1001(chirou) 環境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
- whoami:查看當前用戶是誰
- who:查看當前登錄的所有用戶登錄時間及終端信息
[chirou@duorou ~]$ who
root tty1 2020-10-28 08:50
chirou pts/0 2020-10-28 08:52 (192.168.12.102)
test pts/1 2020-10-28 15:07 (192.168.12.102)
- w:查看當前登錄的所有用戶詳細信息
[chirou@duorou ~]$ w
19:19:16 up 10:32, 3 users, load average: 0.00, 0.03, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 08:50 30:20 0.11s 0.11s -bash
chirou pts/0 192.168.12.102 08:52 1:40 0.68s 0.19s sshd: chir
test pts/1 192.168.12.102 15:07 4.00s 0.31s 0.21s sshd: test
Linux系統中對用戶的划分
Linux系統中對用戶主要分為管理員root與其他用戶,管理員擁有最高權限,其他用戶根據管理員的分配擁有不同的權限。
在Linux系統中是通過UID和GID來區分不同用戶和組的,用戶的名稱是給人類看的,系統僅僅能夠識別ID這樣的數字。
- UID:用戶ID,唯一標識一個用戶的數字。
- 在CentOS 系統中UID為0的用戶為管理員root用戶,CentOS 7之前UID1-499為系統用戶,為了滿足文件或服務啟動的需要,一般不能登錄,UID500之后為普通用戶。CentOS 7中UID1-200為運行系統自帶進程的系統用戶,201-999為安裝程序的系統用戶。1000+為普通用戶。
- GID:組ID,唯一標識一個組的數字。
每個用戶可以屬於多個組,用戶必須有一個主組,其他為用戶的附加組。每個組里可以包含多個用戶。
用戶相關文件
| 文件 | 作用 |
|---|---|
| /etc/passwd | 記錄用戶賬號信息 |
| /etc/shadow | 記錄用戶密碼信息 |
| /etc/group | 記錄組信息 |
| /etc/gshadow | 記錄組密碼信息 |
| /home/USER_NAME | 用戶家目錄 |
| /etc/skel | 用戶家目錄的模板目錄 |
| /var/spool/mail/USER_NAME | 郵箱文件 |
-
/etc/passwd以冒號:分隔,分為七個字段
- 第一字段:用戶名
- 第二字段:密碼占位符,
- 第三字段:UID
- 第四字段:GID
- 第五字段:用戶注釋信息
- 第六字段:用戶家目錄
- 第七字段:用戶的登錄SHELL
[chirou@duorou ~]$ head /etc/passwd root:x:0:0:root:/root:/bin/bash -
/etc/shadow以冒號:分隔,分為九個字段
- 第一字段:用戶名
- 第二字段:加密后的密碼,!!表示沒有密碼
- 第三字段:最近一次更改密碼的時間,記錄的是當前時間距離Unix元年的天數
- 第四字段:密碼最少使用天數,0表示無限制
- 第五字段:密碼最長使用天數,99999表示無限制。
- 第六字段:密碼距離過期天數的預警時間。
- 第七字段:密碼過期后的寬恕時間,在此時間內用戶可以更改密碼,過了此時間后系統會禁用此用戶,不能再登錄。
- 第八字段:賬號過期時間,如果值為空則表示永久可用。
- 第九字段:保留字段,未使用。
[root@duorou /home]# head -1 /etc/shadow root:$6$.zQAsXpp$3cwrj/2R1rtf.NuMd.PdJX3Wvh8.uRl3z9BvSVzSjiID9jPFIV/ItSX48oaiaknZ1qKhTybiq8vp7DQixET9F0:18554:0:99999:7::: -
/etc/group:組信息文件,分成四個字段
- 第一字段:組名稱。
- 第二字段:組密碼占位符。
- 第三字段:GID。
- 第四字段:顯示該組作為哪個用戶的附加組,多個用逗號分隔。
[root@duorou /home]# head -1 /etc/group root:x:0: -
/etc/gshadow:組密碼文件,分為四段
- 第一段:組名稱。
- 第二段:組密碼,如果是空或者!表示沒有密碼。
- 第三段:用戶組管理者,空表示沒有管理者,如果有多個用逗號分隔。
- 第四段:顯示該用戶組作為哪個用戶的附加組,若有多個用逗號分隔。
[root@duorou /home]# head -1 /etc/gshadow root::: -
/etc/skel:存放用戶家目錄模板文件,新用戶家目錄內的初識內容從該目錄內復制。
[panghu@duorou ~]$ ll -a /etc/skel
總用量 24
drwxr-xr-x. 3 root root 78 10月 6 10:14 .
drwxr-xr-x. 146 root root 8192 10月 28 20:31 ..
-rw-r--r--. 1 root root 18 4月 1 2020 .bash_logout
-rw-r--r--. 1 root root 193 4月 1 2020 .bash_profile
-rw-r--r--. 1 root root 231 4月 1 2020 .bashrc
drwxr-xr-x. 4 root root 39 10月 6 10:14 .mozilla
- /var/spool/mail/:用戶郵箱文件所在目錄
[panghu@duorou ~]$ ll /var/spool/mail
總用量 0
-rw-rw----. 1 chirou mail 0 10月 27 19:45 chirou
-rw-------. 1 root mail 0 10月 20 21:02 root
-rw-rw----. 1 rpc mail 0 10月 6 10:14 rpc
-rw-rw----. 1 test mail 0 9月 26 10:46 test
用戶管理命令
創建用戶:useradd
- -u:指定UID
- -g:指定主組
- -G:指定附加組,附加組必須事先存在。
- -d:指定家目錄
- -c:指定備注信息
- -s:指定shell
- -e:修改過期時間
- -M:不創建家目錄
- -r:創建系統賬號,UID處於系統用戶范圍內,默認沒有家目錄
[test@duorou ~]$ useradd chirou
# 默認會創建一個與用戶名同名的組,組員為該用戶,會在/home目錄下創建一個與用戶同名的目錄,shell為/bin/bash,UID為1000+,永不過期,/var/spool/mail目錄下會創建一個與用戶名相同的郵箱文件。家目錄中會存在.bash_*環境變量相關的文件,這些文件默認從/etc/skel目錄中拷貝。這個默認拷貝環境變量位置是由/etc/default/useradd和/etc/login.defs兩個配置文件定義的。
# 當普通用戶在家目錄下執行了rm -rf *命令,下次登錄系統時會出現-bash-4.1$這樣的提示符,解決方法就是在/etc/skel目錄中拷貝需要的環境變量文件,然后重新登錄即可。
cp -a /etc/skel/.bash* ./
設置密碼:passwd
普通用戶只能修改自己的密碼,root用戶可以修改所有用戶密碼。
passwd chirou
# 執行完后即成功創建了一個普通用戶,可以正常登錄使用。
echo “密碼” | passwd --stdin 用戶名
# 非交互式設置密碼,常用於批量添加用戶。
# 可用系統內置變量生成隨機字符來充當密碼
echo $RANDOM | md5sum | cut -c 1-10
手動創建用戶
useradd和passwd命令創建用戶本質上也是在修改賬戶相關文件,那么我們也可以通過直接編輯這些文件來創建一個新用戶。下述操作都需要root權限才能進行。
- 1、首先編輯/etc/passwd文件,添加新的一行,指定用戶名、UID、GID、家目錄和shell。

- 2、編輯/etc/shadow文件,在最下面添加新的一行,指定與上面相同的用戶名,添加秘文密碼。在shadow文件中密碼都是以秘文形式存放,可以通過openssl passwd命令生成加密的密碼,然后粘貼到密碼字段即可。/etc/shadow的權限是000,修改后需要在末行模式下執行:wq!來強制保存。

- 3、編輯/etc/group文件,添加一行。

- 4、編輯/etc/gshadow文件。

- 5、在/home目錄中創建與用戶名同名的目錄。

- 6、將/etc/skel中的文件復制至該目錄中,並修改屬性。

- 7、創建郵箱文件並修改屬性。

此時新用戶創建完成,可以正常登錄系統。

