Linux用户管理
用户管理
基本概述
用户,又称使用者,是指使用电脑或网络服务的人,通常拥有一个用户账号,并以用户名识别。
正常登录Linux或Windows系统,本质都是登陆系统,但是Linux支持同一时间多个用户同时登陆windows默认不支持,但是修改组策略的情况下也是可以多用户登录的。
Linux下的用户的作用
- 系统上的每一个进程(运行的程序),都需要一个特定的用户运行
- 通常在公司是使用普通用户管理服务器,因为root权限过大,容易造成故障。
- 每一个文件都有特定的用户拥有,所以访问一个文件或目录受到用户的限制
- 进程能够以何种方式访问某一个文件或目录,与进程所关联的用户有关
查看系统中所存在的用户
1.查看当前登录的用户信息
[root@localhost ~]# id #查看当前登录用户信息
uid=0(root) gid=0(root) groups=0(root)
UserID:用户id号|GroupID:用户组ID号|该用户的所有组信息
2.每一个进程都会由一个用户身份运行
[root@localhost ~]# ps aux|less #下面结果的第一列就是用户名称
root 33782 0.0 0.0 0 0 ? R 02:46 0:00 [kworker/u256:0]
root 35637 0.0 0.0 0 0 ? R 05:11 0:03 [kworker/0:2]
系统用户相关的配置文件
用户信息配置文件
/etc/passwd
用户密码存储文件
/etc/shadow
用户组信息配置文件
/etc/group
用户组密码存储文件
/etc/gshadow
Linux系统会将用户的信息存放在/etc/passwd,记录了用户的信息,但没有密码信息,密码被存放在/etc/shadow中。
1./etc/passwd 配置文件解释如下图
2./etc/shadow 配置文件解释如下图
用户分类(约定、规范CentOS7)
用户UID | 系统中含义 |
---|---|
0 | 超级管理员用户 |
1-200 | 系统用户,用来运行系统自带的进程,默认已创建 |
201~999 | 系统用户,用来运行用户安装的程序,所以此类用户无需登录系统 |
1000+ | 普通用户,正常可以登陆系统的用户权限比较小能执行的任务有限 |
chage命令修改用户信息
-d 设置最近一次更改密码时间, 0下次登陆系统强制修改密码
-m 设置用户两次改变密码之间使用"最小天数"12
-M 设置用户两次改变密码之间使用"最大天数"
-W 设置密码更改警告时间将过期警告天数设为“警告天数”
-I 设置密码过期天数后, 密码为失效状态
-E 设置用户过期时间, 账户失效后无法登陆
-l 显示用户信息
-d 设置最近一次更改密码时间, 0下次登陆系统强制修改密码
-m:设置用户两次改变密码之间使用的最小天数
-M :设置用户两次改变密码之间使用最大天数
-W:设置密码更改警告天数,将过期天数设为警告天数
-I:设置密码过期天数后密码为失效状态
-E:设置用户过期时间,账户失效后无法登录
-l:显示用户信息
用户操作命令
用户创建
useradd adduser
注意:创建用户在默认不指定组的情况下,会同时创建出跟该用户名相同的组,跟uid相同的gid,除非-g指定组,则不会创建同名组
## 语法
useradd [选项]... 用户名
## 选项
-u:创建用户时指定用户的uid
-g:创建用户时指定用户的gid 指定用户组名(该组必须存在)
-G:创建用户时指定用户的附加组(该组必须存在)
-c:创建用户时指定用户的描述信息
-d:创建用户时指定用户的家目录(该目录可以不存在,会自动创建)
-m:修改用户时迁移用户的家目录,必须配合-d使用
-M:创建用户时不创建用户的家目录
-s:创建用户时指定用户登录的shell(默认是/bin/bash)
-r:创建用户时指定用户为系统用户
创建用户
[root@localhost ~]# useradd lw
-u -g创建用户时指定用户的gid 指定用户组名(该组必须存在)
[root@localhost ~]# useradd lw1 -u 666 -g root
[root@localhost ~]# id lw1uid=666(zls1) gid=0(root) groups=0(root)
-G:创建用户时指定用户的附加组(该组必须存在)
[root@localhost ~]# useradd lw -G root,zhujiao
[root@localhost ~]# id lw
uid=1001(lw) gid=1001(lw) groups=1001(lw),0(root),1000(zhujiao)[root@localhost ~]# useradd lw1 -g zhujiao
[root@localhost ~]# id lw1
uid=1002(lw1) gid=1000(zhujiao) groups=1000(zhujiao
修改用户
usermod modify
## 语法
usermod [选项] 用户名
## 选项
-u:修改用户时指定用户的uid
-g:修改用户时指定用户的gid 指定用户组名(该组必须存在)
-G:修改用户时指定用户的附加组,会覆盖原来的附加组(该组必须存在)
-a:修改用户附加组的时候,配合-a追加使用
-c:修改用户时指定用户的描述信息
-d:修改用户时指定用户的家目录(该目录可以不存在,会自动创建)
-M:修改用户时不创建用户的家目录
-s:修改用户时指定用户登录的shell(默认是/bin/bash)
-r:修改用户时指定用户为系统用户
---------------------------------------
-l:更改用户登录名
-L:锁定用户
-U:解锁用
## 报错
[root@localhost ~]# usermod lw -l lw1
usermod: user lw is currently used by process 70107
原因:lw用户当前正在被PID为70107进程占用,所以无法修改
删除用户
userdel delete
注意:删除用户,默认情况下,只删除用户本身,其他相关目录文件不会删除
## 语法
userdel [选项]... 用户名
## 选项
-r:递归删除,用户所有相关文件
## 警告
[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选项,没有删干净(用户同样可以创建出来)
记录:useradd mysql -s /sbin/nologin -M
查看用户其他命令
## 查看当前系统登录了哪些用户
[root@localhost ~]# who
#用户 #终端#登录时间 #从哪里连接过来
root tty1 2022-03-1416:47
root pts/0 2022-04-0111:00 (10.0.0.1)
root pts/1 2022-03-2312:22 (10.0.0.1)
root pts/2 2022-03-2109:16 (10.0.0.1)
root pts/3 2022-03-2312:22 (10.0.0.1)
lw pts/4 2022-04-0111:13 (10.0.0.1)
lw2 pts/5 2022-04-0112:00 (10.0.0.1)
## 查看当前系统有那些登录的用户详细信息
[root@localhost ~]# w
12:09:03 up 11 days, 5:20, 6 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.0.0.1 11:00 7.00s 0.77s 0.09s tail -f/var/log/messages
root pts/1 10.0.0.1 23Mar22 7.00s 0.51s 0.00s w
root pts/2 10.0.0.1 21Mar22 8days 0.04s 0.04s -bash
root pts/3 10.0.0.1 23Mar22 8days 0.06s 0.06s -bash
lw pts/4 10.0.0.1 11:13 54:15 0.08s 0.08s -bash
lw2 pts/5 10.0.0.1 12:00 8:29 0.06s 0.06s -bash
## 查看当前登录的用户
[root@localhost ~]# whoami
root