用户管理
Linux中用户的概述
用户指的是能够正常登录Linux或windows系统
与windows用户的区别:
- 支持同一个用户多个设备同时登录
 
- 支持不同的用户多个设备同时登录
 
用户的作用
- 系统上的每一个进程(运行的程序)都需要特定的用户运行
 
- 每一个文件都有特定的用户拥有,所以访问一个文件或目录受到用户的限制
 
- 进程能够以何种方式访问某一个文件或目录, 与进程所关联的用户有关
 
查看系统中用户的命令
## 查看指定用户的信息
id:默认情况不加用户名则查看当前登录用户的信息
## 语法:
id 用户名
# 举例
[root@localhost ~]# id
uid=0(root) gid=0(root) groups=0(root)
# 显示当前用户信息
[root@localhost ~]# id qwe
uid=1001(qwe) gid=1001(qwe) groups=1001(qwe)
# 显示指定用户信息
uid(UserID):用户id号
gid(GroupID):用户组id号
groups:该用户的所有组信息
## 查看进程(每个进程的运行用户)
[root@localhost ~]# ps -ef
系统用户相关的配置文件
## 用户信息配置文件
/etc/passwd
## 用户密码存储文件
/etc/shadow
## 用户组信息配置文件
/etc/group
## 用户组密码存储文件
/etc/gshadow
/etc/passwd
[root@localhost ~]# 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
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
swu:x:1000:1000:swu:/home/swu:/bin/bash
qwe:x:1001:1001::/home/qwe:/bin/bash
wsh:x:1100:1100::/home/wsh:/bin/bash
## 文件内容
root:x:0:0:root:/root:/bin/bash
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
swu:x:1000:1000:swu:/home/swu:/bin/bash
| 以:为分隔符 | 
第一列 | 
第二列 | 
第三列 | 
第四列 | 
第五列 | 
第六列 | 
第七列 | 
| 内容 | 
swu | 
x | 
1000 | 
1000 | 
swu | 
/home/swu | 
/bin/bash | 
| 作用 | 
用户名 | 
密码占位符 | 
UID | 
gid | 
描述信息 | 
用户的家目录 | 
用户登录的shell | 
/etc/shadow
## 存放用户密码相关信息文件
root@localhost ~]# cat /etc/shadow
root:$6$HuSzyFn14so7ry8g$3L4s3GDiR642GEGim9nxCaMvsTDBc9qP1ZuljSAcjkFLDFow/9i/KU1D7Yam4BO5Ty89aVA9ux5wDRqFssROQ/::0:99999:7:::
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
adm:*:18353:0:99999:7:::
lp:*:18353:0:99999:7:::
sync:*:18353:0:99999:7:::
shutdown:*:18353:0:99999:7:::
halt:*:18353:0:99999:7:::
mail:*:18353:0:99999:7:::
operator:*:18353:0:99999:7:::
games:*:18353:0:99999:7:::
ftp:*:18353:0:99999:7:::
nobody:*:18353:0:99999:7:::
systemd-network:!!:19071::::::
dbus:!!:19071::::::
polkitd:!!:19071::::::
sshd:!!:19071::::::
postfix:!!:19071::::::
swu:$6$PG7XakgZJq21LAUT$dJ0UelNxeSsFNhYhsP/XfQkGUGuu0EmJcuc6vWD5ELentDIoFk2ht8sHtAtBhD50P1wifEimd0LMEyZmKBzIU.::0:99999:7:::
qwe:$6$6IfDwndN$JyhFuvdlQqd7d1xj9ZXCjoadwld7aX7kByP1nOSk94wEp2rwlGMDBK7V6j8/Ta8h7YgICSRTxo2cjBpRfLpPz0:19077:0:99999:7:::
wsh:!!:19083:0:99999:7::
## 文件内容
root:$6$HuSzyFn14so7ry8g$3L4s3GDiR642GEGim9nxCaMvsTDBc9qP1ZuljSAcjkFLDFow/9i/KU1D7Yam4BO5Ty89aVA9ux5wDRqFssROQ/::0:99999:7:::
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
qwe:$6$6IfDwndN$JyhFuvdlQqd7d1xj9ZXCjoadwld7aX7kByP1nOSk94wEp2rwlGMDBK7V6j8/Ta8h7YgICSRTxo2cjBpRfLpPz0:19077:0:99999:7:::
wsh:!!:19083:0:99999:7::
| 以:为分隔符 | 
第一列 | 
第二列 | 
第三列 | 
第四列 | 
第五列 | 
第六列 | 
第七列 | 
第八列 | 
第九列 | 
| 内容 | 
wsh | 
!!或*(没有密码) | 
19083 | 
0 | 
99999 | 
7 | 
空 | 
空 | 
空 | 
| 作用 | 
用户名 | 
密码(加密) | 
从1970年开始上一次修改密码过了多少天 | 
密码最少使用多少天,0代表没有限制 | 
密码最大使用多少天 | 
密码过期前七天,提示要修改密码 | 
密码过期多少天后,强制修改密码 | 
用户过期时间,从1970年开始 | 
保留位 | 
用户分类(约定、规范CentOS7)
| 用户UID | 
系统中含义 | 
| 0 | 
超级管理员用户 | 
| 1-200 | 
系统用户(系统自己创建的) | 
| 201-999 | 
系统用户(手动创建的) | 
| 1000+ | 
普通用户 | 
chage命令修改用户信息
-d //设置最近一次更改密码时间, 0下次登陆系统强制修改密码
[root@localhost ~]# chage -d '2022-4-1' wsh
-m //设置用户两次改变密码之间使用"最小天数"
[root@localhost ~]# chage -m 3  wsh
[root@localhost ~]# tail -n1 /etc/shadow
wsh:!!:19083:3:99999:7:::
-M //设置用户两次改变密码之间使用"最大天数"
[root@localhost ~]# chage -M 10  wsh
[root@localhost ~]# tail -n1 /etc/shadow
wsh:!!:19083:3:10:7:::
-W //设置密码更改警告时间 将过期警告天数设为“警告天数”
[root@localhost ~]# chage -W 5  wsh
[root@localhost ~]# tail -n1 /etc/shadow
wsh:!!:19083:3:10:5:::
-I //设置密码过期天数后, 密码为失效状态
[root@localhost ~]# chage -I 10  wsh
[root@localhost ~]# tail -n1 /etc/shadow
wsh:!!:19083:3:10:5:10::
-E //设置用户过期时间, 账户失效后无法登陆
[root@localhost ~]# chage -E "2022-6-1"  wsh
[root@localhost ~]# tail -n1 /etc/shadow
wsh:!!:19083:3:10:5:10:19144:
-l //显示用户信息
[root@localhost ~]# chage -l   wsh
Last password change                    : Apr 01, 2022
Password expires                    : Apr 11, 2022
Password inactive                   : Apr 21, 2022
Account expires                     : Jun 01, 2022
Minimum number of days between password change      : 3
Maximum number of days between password change      : 10
Number of days of warning before password expires   : 5
用户操作命令
用户创建
useradd 或 adduser
注意:创建用户在默认不指定组的情况下,会同时创建出跟该用户名相同的组,跟uid相同的gid,除非-g指定组,则不会创建同名组
## 语法
useradd  [选项]...  用户名
## 选项和举例
-u:创建用户时指定用户的uid
-g:创建用户时指定用户的gid 指定用户组名(该组必须存在)
root@localhost ~]# adduser wsh1 -u 135 -g wsh
[root@localhost ~]# id wsh1
uid=135(wsh1) gid=1100(wsh) groups=1100(wsh)
-G:创建用户时指定用户的附加组(该组必须存在)
[root@localhost ~]# adduser wsh2 -G wsh,qwe
[root@localhost ~]# id wsh2
uid=1102(wsh2) gid=1102(wsh2) groups=1102(wsh2),1001(qwe),1100(wsh
-c:创建用户时指定用户的描述信息
[root@localhost ~]# adduser wsh3 -c 'dd'
[root@localhost ~]# cat /etc/passwd
wsh3:x:1103:1103:dd:/home/wsh3:/bin/bash
-d:创建用户时指定用户的家目录(该目录可以不存在,会自动创建)
[root@localhost ~]# adduser wsh4 -d /www
[root@localhost ~]# ls /
abc  boot  etc   lib    media  olboyedu  proc  run   srv  tem  usr  www
bin  dev   home  lib64  mnt    opt       root  sbin  sys  tmp  var  x_n
-m:修改用户时迁移用户的家目录,必须配合-d使用
[root@localhost ~]# cat /etc/passwd
wsh4:x:1104:1104::/www:/bin/bash
[root@localhost ~]# usermod wsh4 -m -d /home/wsh4
[root@localhost ~]# cat /etc/passwd
wsh4:x:1104:1104::/home/wsh4:/bin/bash
-M:创建用户时不创建用户的家目录
[root@localhost ~]# adduser wsh6 -M
[root@localhost ~]# cat /etc/passwd
wsh6:x:1105:1105::/home/wsh6:/bin/bash
[root@localhost ~]# ls /home/
qwe  swu  web.log  ws  wsh  wsh1  wsh2  wsh3  zls
-s:创建用户时指定用户登录的shell(默认是/bin/bash)
[root@localhost ~]# adduser wsh7 -s /sbin/nologin
[root@localhost ~]# cat /etc/passwd
wsh7:x:1106:1106::/home/wsh7:/sbin/nologin
-r:创建用户时指定用户为系统用户
[root@localhost ~]# adduser wsh8 -r 
[root@localhost ~]# id wsh8
uid=998(wsh8) gid=996(wsh8) groups=996(wsh8)
## 报错1
[root@localhost ~]# adduser ert -u 1111 -g 1111
adduser: group '1111' does not exist
原因:1111这个组不存在,前提,-g必须加入到一个已存在的
## 报错2
[root@localhost ~]# mkdir /ert
[root@localhost ~]# useradd qqq -d /ert/
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
原因:使用-d指定用户的家目录时,家目录不能提前创建
修改用户
usermod modify
## 语法
usermod [选项] 用户名
## 选项和举例
-u:修改用户时指定用户的uid
[root@localhost ~]# id wsh
uid=1100(wsh) gid=1100(wsh) groups=1100(wsh)
[root@localhost ~]# usermod wsh -u 1300
[root@localhost ~]# id wsh
uid=1300(wsh) gid=1100(wsh) groups=1100(wsh)
-g:修改用户时指定用户的gid 指定用户组名(该组必须存在)
[root@localhost ~]# usermod wsh -g root
[root@localhost ~]# id wsh
uid=1300(wsh) gid=0(root) groups=0(root)
-G:修改用户时指定用户的附加组,会覆盖原来的附加组(该组必须存在)
[root@localhost ~]# id wsh2
uid=1102(wsh2) gid=1102(wsh2) groups=1102(wsh2),1001(qwe),1100(wsh)
[root@localhost ~]# usermod wsh2 -G root
[root@localhost ~]# id wsh2
uid=1102(wsh2) gid=1102(wsh2) groups=1102(wsh2),0(root)
-a:修改用户附加组的时候,配合-G追加使用
[root@localhost ~]# usermod wsh2 -aG qwe
[root@localhost ~]# id wsh2
uid=1102(wsh2) gid=1102(wsh2) groups=1102(wsh2),0(root),1001(qwe)
-c:修改用户时指定用户的描述信息
[root@localhost ~]# cat /etc/passwd
wsh3:x:1103:1103:dd:/home/wsh3:/bin/bash
[root@localhost ~]# usermod wsh3 -c "www"
[root@localhost ~]# cat /etc/passwd
wsh3:x:1103:1103:www:/home/wsh3:/bin/bash
-d:修改用户时指定用户的家目录(该目录可以不存在,会自动创建)
[root@localhost ~]# cat /etc/passwd
wsh8:x:998:996::/home/wsh8:/bin/bash
[root@localhost ~]# usermod wsh8 -d www
[root@localhost ~]# cat /etc/passwd
wsh8:x:998:996::www:/bin/bash
-s:修改用户时指定用户登录的shell(默认是/bin/bash)
[root@localhost ~]# cat /etc/passwd
wsh8:x:998:996::www:/bin/bash
[root@localhost ~]# usermod wsh8 -s /sbin/nologin
[root@localhost ~]# cat /etc/passwd
wsh8:x:998:996::www:/sbin/nologin
删除用户
userdel delete
注意:删除用户,默认情况下,只删除用户本身,其他相关目录文件不会删除
## 语法
userdel   [选项]...   用户名
## 选项
-r:递归删除,用户所有相关文件
## 举例
[root@localhost ~]# userdel wsh1
[root@localhost ~]# id wsh1
id: wsh1: no such user
[root@localhost ~]# ls /home/
qwe  swu  web.log  ws  wsh  wsh1  wsh2  wsh3  wsh4  wsh7  zls
# -r
[root@localhost ~]# userdel -r wsh2
[root@localhost ~]# id wsh2
id: wsh2: no such user
[root@localhost ~]# ls /home/
qwe  swu  web.log  ws  wsh  wsh1  wsh3  wsh4  wsh7  zls
## 警告
[root@localhost ~]# adduser wsh1
adduser: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
原因:创建用户时,该用户以前创建过,但是在删除时没有加-r选项,没有删干净(用户同样可以创建出来)
查看用户其他命令
## 查看当前系统登录了哪些用户
[root@localhost ~]# who
#用户     #终端         #登录时间           #从哪里连接过来
root     pts/0        2022-04-02 01:30 (10.0.0.1)
## 查看当前系统登录了哪些用户
[root@localhost ~]# w
 21:34:16 up 0 min,  1 user,  load average: 0.17, 0.05, 0.02
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.0.0.1         21:34    0.00s  0.00s  0.00s w