day4.3
用户管理
# Linux中用户的概括
用户指的是能够正常登录Linux或windows系统
# 与windows用户的区别
支持同一个用户多个设备同时登录
支持不同的用户多个设备同时登录
# 用户的作用
1.系统上每一个进程都需要特定的用户运行
2.每一个文件都有特定的用户拥有,所以访问一个文件或目录受到用户的限制
3.进程能够以何种方式访问某一个文件或目录,与进程所关联的用户有关
查看系统用户的命令
# 查看用户特定信息
id:默认情况下不加用户名,则查看当前登陆用户的信息
# 语法
id 用户名
[root@localhost ~]# id wc
uid=1000(wc) 用的id号
gid=1000(wc) 用户组号
groups=1000(wc) 该用户的所有信息
# 查看进程
[root@localhost ~]# ps -ef
系统用户相关配置文件
# 用户信息配置文件
/etc/passwd
举例
[root@28technicians ~]# 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
|
第一列 |
第二列 |
第三列 |
第四列 |
第五列 |
第六列 |
第七列 |
内容 |
root |
x |
0 |
0 |
root |
/root |
/bin/bash |
作用 |
用户名 |
密码占位符 |
uid |
gid |
描述信息 |
用户的家目录 |
用户登陆的shell |
# /etc/shadow
存放用户密码相关信息文件
[root@28technicians ~]# cat /etc/shadow
root:$6$HIZwKMy6GZ5jHzYA$cnBPWWwBCT4b69LHBPI9T25nhOTMNwa6u/jcTYJa4xwHPSzEGoYaAwT5MzkQ5Fx.zinjBQGj/nHiqchE109UX/::0:99999:7:::
bin:*:17834:0:99999:7:::
daemon:*:17834:0:99999:7:2:66275
以:为分隔符 |
第一列 |
第二列 |
第三列 |
第四列 |
第五列 |
第六列 |
第七列 |
第八列 |
第九列 |
内容 |
root |
*(!!)没加密 |
17834 |
0 |
99999 |
7 |
2 |
66275 |
无 |
作用 |
用户名 |
密码(加密) |
从1970年开始 上一次修改密码过了多少天 |
密码最少使用多少天,0代表没有限制 |
密码最大使用多少天 |
密码快过期的7天提示要修改密码 |
密码过期后强制修改密码 |
用户快过期时间从1970年开始 |
|
#用户的分类
用户的uid |
系统中含义 |
0 |
超级管理员用户 |
1-200 |
系统用户(系统自己创建的) |
201-999 |
系统用户(可以手动创建的) |
1000+ |
普通用户 |
# 用户组信息配置文件
/etc/group
举例
[root@28technicians ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
# 用户组密码储存文件
/etc/gshadow
举例
[root@28technicians ~]# cat /etc/gshadow
root:::
bin:::
daemon:::
chage命令修改用户信息(了解)
-d 设置用户两次改变密码之间使用天数
-d //设置最近一次更改密码时间, 0下次登陆系统强制修改密码
-m //设置用户两次改变密码之间使用"最小天数"
-M //设置用户两次改变密码之间使用"最大天数"
-W //设置密码更改警告时间将过期警告天数设为“警告天数”
-I //设置密码过期天数后, 密码为失效状态
-E //设置用户过期时间, 账户失效后无法登陆
-l //显示用户信
用户操作命令
用户创建
# useradd adduser
创建用户在默认情况下,会同时创建出跟该用户名相同的组,跟uid相同的uid,除非-g指定组,则不会创建同名组
# 语法
useradd [选项]... 用户名
# 选项
-u:创建用户时指定用户的uid
举例
[root@28technicians ~]# useradd wc1 -u 666
[root@28technicians ~]# id wc1
uid=666(wc1) gid=1001(wc1) groups=1001(wc1)
-g:创建用户时指定用户的gid 指定用户组名(改组必须存在)
举例
[root@28technicians ~]# useradd wc2 -g root
[root@28technicians ~]# id wc2
uid=1001(wc2) gid=0(root) groups=0(root)
-G:创建用户时指定用户的附加组(改组必须存在)
举例
[root@28technicians ~]# useradd wc2 -G root
[root@28technicians ~]# id wc2
uid=1001(wc2) gid=1001(wc2) groups=1001(wc2),0(root)
-c:创建用户指定用户的描述信息
举例
[root@28technicians ~]# useradd wc2 -c 'dsb'
[root@28technicians ~]# cat /etc/passwd
wc2:x:1001:1001:dsb:/home/wc2:/bin/bash
-d:创建用户时指定用户的家目录(该目录可以不存在,会自动创建)
-m:修改用户时迁移用户的家目录,必须配合-d使用
举例
[root@28technicians ~]# useradd wc2 -d /dsb
[root@28technicians ~]# cat /etc/passwd
wc2:x:1001:1001:dsb:/dsb:/bin/bash
[root@28technicians ~]# useradd wc2 -m -d /home/aaa
[root@28technicians ~]# cat /etc/passwd
wc2:x:1001:1001:dsb:/home/aaa:/bin/bash
-M:创建用户时不能创建用户的家目录
举例
[root@28technicians ~]# useradd wc2 -M
[root@28technicians ~]# cat /etc/passwd
wc2:x:1001:1001:dsb:/home/wc2:/bin/bash
-s:创建用户时指定登陆的shell(默认是/bin/bash)
举例
[root@28technicians ~]# useradd wc2 -s /sbin/nologin
[root@28technicians ~]# cat /etc/passwd
wc2:x:1001:1001:dsb:/home/wc2:/sbin/nologin
-r:创建用户时指定用户为系统用户
举例
[root@28technicians ~]# useradd wc3 -r
[root@28technicians ~]# cat /etc/passwd
wc3:x:998:996::/home/wc3:/bin/bash
# 报错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 modify
# 语法
usermod [选项] 用户名
# 选项
-u:修改用户时指定用户的uid
-g:修改用户时指定用户的gid 指定用户组名(该组必须存在)
-G:修改用户时指定用户的附加组,会覆盖原来的附加组(该组必须存在)
-a:修改用户附加组的时候,配合-a追加使用
-c:修改用户时指定用户的描述信息
-d:修改用户时指定用户的家目录(该目录可以不存在,会自动创建)
-M:修改用户时不创建用户的家目录
-s:修改用户时指定用户登录的shell(默认是/bin/bash)
-r:修改用户时指定用户为系统用户
---------------------------------------
-l:更改用户登录名
-L:锁定用户
-U:解锁用户
举例
[root@localhost ~]# id wc1
uid=1001(wc1) gid=1001(wc1) groups=1001(wc1),0(root),1000(zhu)
[root@localhost ~]# usermod wc1 -G hl
[root@localhost ~]# id wc1
uid=1001(wc1) gid=1001(wc1) groups=1001(wc1),1003(hl)
# -aG
[root@localhost ~]# id wc1
uid=1001(wc1) gid=1001(wc1) groups=1001(wc1),0(root),1000(zhu)
[root@localhost ~]# usermod wc1 -aG hl
[root@localhost ~]# id wc1
uid=1001(wc1) gid=1001(wc1) groups=1001(wc1),0(root),1000(zhu),1003(hl)
# -md
[root@localhost ~]# usermod hl -m -d /home/hl
# -s[root@localhost ~]# usermod hl -m -d /home/hl
# -l[root@localhost ~]# usermod hl3 -l hl38
## 报错
[root@localhost ~]# usermod hl3 -l hl38
usermod: user hl3 is currently used by process 70107
原因:hl3用户当前正在被PID为70107进程占用,所以无法修改
删除用户
usedel delete
注意:删除用户,默认情况下,只删除用户本身,其他相关目录文件不会删除
# 语法
usedel [选项]... 用户名
# 选项
-r:递归删除,用户所有相关文件
举例
[root@28technicians ~]# userdel -r wc2
# 警告
[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选项,没有删干净(用户同样可以创建出来)
查看用户其他命令
[root@28technicians ~]# who
用户 终端 登陆时间 从哪里连接
root tty1 2022-04-02 13:46
root pts/1 2022-04-02 15:14 (10.0.0.1)
[root@28technicians ~]# w
16:59:25 up 3:12, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 13:46 3:12m 0.01s 0.01s -bash
root pts/1 10.0.0.1 15:14 5.00s 0.05s 0.00s w
[root@28technicians ~]# whoami
root