day14 用户管理
目录
day14 用户管理
Linux中用户的概述
- 用户指的是能够正常登录Linux或Windows系统
- Linux用户与Windows用户的区别
- 支持同一个用户多个设备同时登录
- 支持不同的用户多个设备同时登录
用户的作用
- 系统上的每一个进程(运行的程序)都需要特定的用户运行
- 每一个文件都有特定的用户拥有,所以访问一个文件或目录收到用户的限制
- 进程能够以种方式访问某一个文件或目录,与进程所关联的用户有关
查看系统中用户的命令
# 查看指定用户信息
id:默认,不加用户名的情况下,查看当前登录用户的信息
# 语法
id 用户名
? 15:15:58 root@localhost.localdomain,10.0.0.158:~ # id hjx
uid=666(hjx) gid=1000(hjx) groups=1000(hjx)
# uid:用户id号
# gid:用户组id
# geoups:该用户所有组信息
# 查看进程(每个程序运行的用户)
0 ✓ 15:16:06 root@localhost.localdomain,10.0.0.158:~ # ps -ef
系统用户相关的配置文件
# 用户信息配置文件
/etc/passwd
# 用户密码储存文件
/etc/shadow
# 用户组信息配置文件
/etc/group
# 用户组密码储存文件
/etc/gshadow
/etc/passwd
✓ 15:24:33 root@localhost.localdomain,10.0.0.158:~ # 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
hjx:x:666:1000::/home/hjx:/bin/bash
hjx1:x:777:1001::/home/hjx1:/bin/bash
hjx2:x:1000:1000::/home/hjx2:/bin/bash
hjx3:x:1001:1002::/home/hjx3:/bin/bash
# 文件内容
root:x:0:0:root:/root:/bin/bash
dbus:x:81:81:System message bus:/:/sbin/nologin
hjx:x:666:1000::/home/hjx:/bin/bash
| 第一列 | 第二列 | 第三列 | 第四列 | 第五列 | 第六列 | 第七列 | |
|---|---|---|---|---|---|---|---|
| 内容 | root | x | 0 | 0 | root | /root | /bin/bash |
| 作用 | 用户名 | 密码占位符 | uid | gid | 描述信息 | 用户的家目录 | 用户登录的shell |
/etc/shaow
# 存放用户密码相关信息文件
✓ 15:26:03 root@localhost.localdomain,10.0.0.158:~ # cat /etc/shadow
root:$6$RLucYMAUd.zjSUi.$zBSlHOXGl2arhxeRRekknQYf1IsaMcMXE3l7/he015CtWfcmjOHROtdm9oWTbVuNMg9nLb5o1GpzG2AZAfUwB1::0:99999:7:::
bin:*:17834:0:99999:7:::
hjx:!!:19083:0:99999:7:2:6627567:
# 第一列 :root :用户名
# 第二列 :*!!:没密码,密码加密
# 第三列 :17834:从1970年开始上一次修改密码过了多久
# 第四列 :0:密码最少使用多少天,最少是0
# 第五列 :99999:密码最大使用天数
# 第六列 :7:密码快过期前7天提醒修改密码
# 第七列 :2:密码过期后2天强制修改密码
# 第八列 :6627567:用户密码过期时间,从1970年开始
# 第九列 :空:保留位
用户分类(约定,规范CentOS7)
| 用户uid | 系统中含义 |
|---|---|
| 0 | 超级管理员 |
| 1-200 | 系统用户 |
| 201-999 | 系统用户(可以手动创建) |
| 1000+ | 普通用户 |
chage命令修改用户信息
# chage
-d //设置最近一次更改密码时间, 0下次登陆系统强制修改密码
-m //设置用户两次改变密码之间使用"最小天数"
-M //设置用户两次改变密码之间使用"最大天数"
-W //设置密码更改警告时间将过期警告天数设为“警告天数”
-I //设置密码过期天数后, 密码为失效状态
-E //设置用户过期时间, 账户失效后无法登陆
-l //显示用户信息
//修改时间为2014年08月31日,和图中时间匹配,方便后续验证
[root@zls ~]# date -s '20140831'
Sun Aug 31 00:00:00 CST 2014
[root@zls ~]# date
Sun Aug 31 00:00:01 CST 2014
[root@zls ~]# useradd zls1
[root@zls ~]# echo "123" |passwd --stdin zls1
[root@zls ~]# tail -1 /etc/shadow
zls1:!!:16312:0:99999:7:::
//设置最近一次修改密码时间
[root@zls ~]# chage -d "2014-09-01" zls1
[root@zls ~]# tail -n1 /etc/shadow
zls1:!!:16314:0:99999:7:::
//设置最短使用密码时间
[root@zls ~]# chage -m 2 zls1
[root@zls ~]# tail -n1 /etc/shadow
zls1:!!:16314:2:99999:7:::
//设置密码最长使用时间
[root@zls ~]# chage -M 15 zls1
[root@zls ~]# tail -n1 /etc/shadow
zls1:!!:16314:2:15:7:::
//设置密码警告时间
[root@zls ~]# chage -W 6 zls1
[root@zls ~]# tail -n1 /etc/shadow
zls1:!!:16314:2:15:6:::
[root@zls ~]# chage -W 7 zls1
[root@zls ~]# tail -n1 /etc/shadow
zls1:!!:16314:2:15:7:::
//设置密码过期时间
[root@zls ~]# chage -I 5 zls1
[root@zls ~]# tail -n1 /etc/shadow
zls1:!!:16314:2:15:6:5::
//设置用户过期时间
[root@zls ~]# chage -E "20115-08-31" zls1
[root@zls ~]# tail -n1 /etc/shadow
zls1:!!:16314:2:15:6:5:6627567:
[root@zls ~]# chage -l zls1
Last password change : Sep 01, 2014 //最近一次更改密码时间
Password expires : Sep 16, 2014 //密码过期时间
Password inactive : Sep 21, 2014 //密码失效时间
Account expires : Aug 31, 2015 //用户失效时间
Minimum number of days between password change : 2 //密码最短使用时间
Maximum number of days between password change : 15 //密码最长使用时间
Number of days of warning before password expires : 7 //密码过期前警告天数
//如何验证,只调整时间为如下进行验证:
1.验证普通用户是否能修改密码, 不需要调整时间。
2.普通用户登陆系统后, 会提示警告密码还剩多少天过期
[root@zls ~]# date -s "2014-09-12"
3.普通用户登陆系统后, 强制要求修改密码
[root@zls ~]# date -s "2014-09-18"
4.普通用户登陆系统后, 提示账户已过期
[root@zls ~]# date -s "2014-09-23"
用户操作命令
用户创建
# useradd adduser
注意:创建用户在默认不指定组的情况下,会同时创建出跟该用户名相同的用户组,跟uid一样的gid,除非-g指定组,则不会创建同名组
# 语法
useradd [选项]... 用户名
# 选项
-u:创建指定用户的uid
-g:创建用户时指定用户的gid 指定用户组名(该组必须存在)
-G:创建用户时指定用户的附加组(该组必须存在)
-c:创建用户时指定用户的描述信息
-d:创建用户时指定用户的家目录(该目录可以不存在,会自动创建)
-m:修改用户时迁移用户的家目录,必须配合-d使用
-M:创建用户时不创建用户的家目录
-s:创建用户时指定用户登录的shell(默认是/bin/bash)
-r:创建用户时指定用户为系统用户
# 举例
✗ 16:09:41 root@localhost.localdomain,10.0.0.158:~ # useradd hjx4
# -u -g
4 ✗ 16:11:20 root@localhost.localdomain,10.0.0.158:~ # useradd hjx4 -u 757 -g root
✓ 16:12:21 root@localhost.localdomain,10.0.0.158:~ # id hjx4
uid=757(hjx4) gid=0(root) groups=0(root)
# -G
✓ 16:46:28 root@localhost.localdomain,10.0.0.158:~ # useradd hjx6 -G hjx
0 ✓ 16:46:58 root@localhost.localdomain,10.0.0.158:~ # id hjx6
uid=1003(hjx6) gid=1004(hjx6) groups=1004(hjx6),1000(hjx)
# -c
✓ 16:47:03 root@localhost.localdomain,10.0.0.158:~ # useradd hjx7 -c 'yyds'
✓ 16:49:19 root@localhost.localdomain,10.0.0.158:~ # cat /etc/passwd
hjx5:x:1002:1003::/home/hjx5:/bin/bash
hjx6:x:1003:1004::/home/hjx6:/bin/bash
hjx7:x:1004:1005:yyds:/home/hjx7:/bin/bash
# -d
✗ 16:51:11 root@localhost.localdomain,10.0.0.158:~ # useradd hjx8 -d /yyds
✓ 16:51:57 root@localhost.localdomain,10.0.0.158:~ # cat /etc/passwd
hjx6:x:1003:1004::/home/hjx6:/bin/bash
hjx7:x:1004:1005:yyds:/home/hjx7:/bin/bash
hjx8:x:1005:1006::/yyds:/bin/bash
# -M
✓ 17:15:44 root@localhost.localdomain,10.0.0.158:/ # useradd hjx10 -M
# -s
✓ 17:16:13 root@localhost.localdomain,10.0.0.158:/ # useradd wq -s /sbin/nologin
0 ✓ 17:18:23 root@localhost.localdomain,10.0.0.158:/ # cat /etc/passwd
hjx10:x:1007:1008::/home/hjx10:/bin/bash
wq:x:1008:1009::/home/wq:/sbin/nologin
# -r
✓ 17:18:26 root@localhost.localdomain,10.0.0.158:/ # useradd wq1 -r
✓ 17:20:42 root@localhost.localdomain,10.0.0.158:/ # id wq1
uid=665(wq1) gid=665(wq1) groups=665(wq1)
## 报错1
[root@localhost ~]# useradd zls1 -u 666 -g 666
useradd: group '666' does not exist
原因:666这个组不存在,前提,-g必须加入到一个已存在的组
## 报错2
[root@localhost ~]# mkdir /dsb
[root@localhost ~]# useradd hl1 -d /dsb/
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
原因:使用-d指定用户的家目录时,家目录不能提前创建
修改用户
# usermod
语法
usermod [选项] 用户名
# 选项
-u:修改用户时指定用户uid
-g:修改用户时指定用户gid,指定用户组名(用户组必须存在)
-G:修改用户时指定用户的附加组,会覆盖原来的附加组(附加组必须存在)
-a:修改用户附加组的时候,配合-a追加使用
-c:修改用户时指定用户描述信息
-d:修改用户时指定用户的家目录(该目录可以不存在的话,会自动创建)
-M:修改用户时不创建用户的家目录
-s:修改用户时指定用登录的shell(默认是/bin/bash)
-r:修改用户时指定用户为系统用户
----------------------------------------------------------------
-l:更改用户登录名
-L:锁定用户
-U:解锁用户
# 举例
# -G
✗ 17:38:02 root@localhost.localdomain,10.0.0.158:/ # usermod hjx -G hjx1
0 ✓ 17:38:19 root@localhost.localdomain,10.0.0.158:/ # id hjx
uid=678(hjx) gid=1000(hjx) groups=1000(hjx),1001(hjx1)
# -aG
✓ 17:40:03 root@localhost.localdomain,10.0.0.158:/ # usermod hjx -aG hjx3
0 ✓ 17:40:11 root@localhost.localdomain,10.0.0.158:/ # id hjx
uid=678(hjx) gid=1000(hjx) groups=1000(hjx),1001(hjx1),1002(hjx3)
# -md
✓ 17:40:15 root@localhost.localdomain,10.0.0.158:/ # usermod hjx -m -d /home/1
0 ✓ 17:41:21 root@localhost.localdomain,10.0.0.158:/ # ll /home/
total 0
drwx------. 5 hjx2 hjx 123 Mar 29 10:13 1
# -s
✗ 17:42:24 root@localhost.localdomain,10.0.0.158:/ # cat /etc/passwd
wq:x:1008:1009::/home/wq:/sbin/nologin
✓ 17:42:29 root@localhost.localdomain,10.0.0.158:/ # usermod wq -s /bin/bash
✓ 17:43:08 root@localhost.localdomain,10.0.0.158:/ # cat /etc/passwd
wq:x:1008:1009::/home/wq:/bin/bash
# -l
✓ 17:45:39 root@localhost.localdomain,10.0.0.158:/ # usermod hjx1 -l hjx33
# 报错
[root@localhost ~]# usermod hl3 -l hl38
usermod: user hl3 is currently used by process 70107
原因:hl3用户当前正在被PID为70107进程占用,所以无法修改
删除用户
# userdel
注意:删除用户默认情况下,只删除用户本身,其他相关文件不会被删除
# 语法
userdel [选项]... 用户名
# 选项
-r :递归删除用户所有相关文件
#举例
✓ 17:45:57 root@localhost.localdomain,10.0.0.158:/ # userdel -r hjx2
## 警告[root@localhost ~]# useradd test
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
原因:创建用户时,该用户以前创建过,但是在删除时没有加-r选项,没有删干净(用户同样可以创建出来)
查看用户其他命令
# who
✓ 17:54:05 root@localhost.localdomain,10.0.0.158:/ # who
#用户 终端 登录时间 从哪里链接过来
root pts/0 2022-04-03 15:05 (10.0.0.1)
# 查看当前系统登录了哪些用户
# w
✓ 17:54:12 root@localhost.localdomain,10.0.0.158:/ # w
17:56:04 up 2:51, 1 user, load average: 0.00, 0.02, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.0.0.1 15:05 4.00s 0.48s 0.00s w
# 查看当前登录用户
# whoami
✓ 17:56:05 root@localhost.localdomain,10.0.0.158:/ # whoami
root
思维导图

浙公网安备 33010602011771号