#### 用户密码文件
- /etc/shadow存储密码加密后的密文,又称为“影子文件”,该文件为了保证了账户密码的安全性只有 root 账户拥有读权限,注意:若该文件权限发生变化,需要留心恶意攻击
```bash
[root@server ~]# ll /etc/shadow
----------. 1 root root 1130 4月 26 14:39 /etc/shadow
[root@server ~]# head -1 /etc/shadow
root:$6$u6dOBCaz335byzFq$WcZK5t3EAHzCxy0AP8rscP/CrM/SZLzZZDCzkE2T6yiVpnSz92iWt/wd4jL9oBfFglbVrdhsUmRCVfWKTqNdv/::0:99999:7:::
```
- /etc/shadow文件中的每行9个字段的含义为:
```bash
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
```
#### 工作组账号文件
- /etc/group文件存储每个组工作组信息
```bash
[root@server ~]# ll /etc/group
-rw-r--r--. 1 root root 810 4月 26 14:39 /etc/group
[root@server ~]# head -1 /etc/group
root:x:0:
```
- 字段说明:
| **字段** | **说明**
| Groupname | 组的名字
| Passwd | 组的加密口令
| GID | 是系统区分不同组的ID,在/etc/passwd域中的GID字段是用这个数来指定账户的基本组 |
| Userlist | 是用“,”分开的账户名,列出的成员以该组为附加组
## 用户管理
### 添加新用户
#### 格式
```bash
useradd -参数 账户名
```
#### 参数
```bash
-c 注释信息:设置相关的说明信息,如,:真实姓名、邮箱地址等。
-d:目录:设定账户的家目录(默认为/home/用户名)。
-e YYYY-MM-DD:设置用户的失效日期,此日期后将不能使用该账号。
-f 天数:指定密码到期后多少天账号被禁用,若指定为0,则表示账号到期后被立即禁用;若指定 为-1,则表示账号过期后不被禁用(即密码永不过期)。
-g 组名或GID号:为账户指定所属的基本组,该组在指定时必须已存在。
-G:组名或GID号列表:为账户指定所属的扩展组,各组在指定时已存在,附加组可以有多个,组之间用“,”分隔。
-M:不创建账户家目录。
-N:不创建与账户名同名的基本组。
-p:密码:指定账户的登录密码。
-s shell名:指定账户登录后使用的Shell,默认是bash。
-u 用户号:设置账号的UID,默认是已有账户的最大UID加1。如果同时有-o选项,则可以重复使用其他用户的标识号。
```
#### 示例
- 例1:新建账户test1,查看对应配置文件和家目录
```bash
[root@server ~]# useradd test1
[root@server ~]# tail -1 /etc/passwd
test1:x:1001:1001::/home/test1:/bin/bash
[root@server ~]# tail -1 /etc/shadow
test1:!!:19483:0:99999:7::: # 注意 :!!表示密码尚未设置
[root@server ~]# ls -ld /home/test1
drwx------. 3 test1 test1 78 5月 6 13:55 /home/test1
[root@server ~]# ls -A /home/test1
.bash_logout .bash_profile .bashrc .mozilla
```
- 例2:新建账户test2,指定UID为2001、登录Shell为/bin/bash,账号永不过期
```bash
[root@server ~]# useradd -u 2001 -s /bin/bash -e -1 test2
```
- 例3:新建用于访问FTP的test3账户,禁止其登录且不创建家目录
```
[root@server ~]# useradd -M -s /sbin/nologin test3
```
- 例4:新建账户test4,UID=3001, 工作组=test1 , 家目录=/test
```bash
[root@server ~]# useradd test4 -u 3001 -g test1 -d /test
```