一、概述¶
- 各种系统中都有用户,win(administrator),Linux系统中是 有各种类型的用户的.
- 未来大部分操作使用root实现,进行系统管理的时候都使用root 造成管理混乱.
- 推荐使用普通用户,提升系统安全.
- 简单来说:未来Linux系统会有各种的用户,每个用户都有自己 的用途,root最高权限用户,普通用户,虚拟用户。
- Linux系统是一个多用户系统.
二、UID,GID¶
Linux中的用户是有一个标记,类似于身份号码一样的东西,叫做 UID和GID. 一般情况下UID和GID要唯一。
- UID user id 用户的id号,身份证号码.
- GID group id 用户组id号,户口本号码.
三、用户分类¶
| 用户分类 | 分类方法(uid) |
|---|---|
| root | uid是0 |
| 普通用户 | uid≥1000(Centos7之后,Centos5和Centos6是≥500),手动创建,无法对系统进行更改,只能在当前家目录有权限 |
| 虚拟用户 | uid <1000, 也叫傀儡用户,用于服务,进程运行使用的用户,无法直接使用 |
温馨提示: uid是分类的1种方法.
四、用户相关的文件¶
Linux下面每创建1个用户,一般会影响下面几个文件:
| 用户相关文件 | 说明 |
|---|---|
| /etc/passwd | 存放用户信息 |
| /etc/shadow | 存放密码信息 |
| /etc/group | 用户组信息 |
| /etc/gshadow | 用户组密码信息,几乎不会给用户组设置密码 |
1、/etc/passwd回显内容说说每一列的含义:
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
...
...
- 第一列:用户名
- 第二列:密码标记
- 第三列和第四列:UID:GID
- 第五列:用户说明信息(不指定为空)
- 第六列:用户的家目录
- 第七列(最后一列):用户使用的命令解释器shell,如果是/sbin/nologin则代表虚拟用户/傀儡用户

2、/etc/shadow回显内容说说每一列的含义:
$ cat /etc/shadow
root:$6$6qLmduqvReJnadEf$q/Rw.yoCiUpqfE1BWxAX4A4g8MBaCMGG5fxVgxWf1pn4NgC5w4imWu2GsJkVLqdJh2irRCkPaDg7fd0fuSPhI/::0:99999:7:::
bin:*:18353:0:99999:7:::
...
...
- 第一列:用户名
- 第二列:密码哈希值,加密后的密码。如果为*则代表用户没有设置密码
- 第三列:最短时间期限,如果是0,则表示没有最短使用期限
- 第四列:最长使用期限
- 第五列:密码更改提前警告
- 第六列:密码失效日期
- 第七列:最后修改日期
- 第八列:密码更改周期
- 第九列和第十列:保留字段
3、/etc/group回显内容说说每一列的含义:
$ cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
...
...
- 第一列:用户组名,默认是和用户名一致
- 第二列:组密码
- 第三列:组ID
- 第四列:组成员
五、用户管理指令¶
- 增加
- 删除
- 修改
- 查看
5.1 增加¶
1、创建用户-useradd
| useradd命令选项 | 命令说明 |
|---|---|
| useradd -u 用户uid 用户 | 指定用户uid |
| useradd -s 命令解释器 用户 | 指定命令解释器,默认是/bin/bash |
| useradd -M 用户 | 单纯创建用户,但是不创建家目录 |
| useradd -g 用户组名 用户名 | 设置用户的初始用户组 |
| useradd -G 用户组名1, 用户组名2 用户名 | 设置用户的附加用户组,允许用户属于多个用户组 |
#添加用户mysql
useradd mysql
#案例02 创建用户mysql指定uid 1314指定命令解释器/sbin/nologin不创建家目录,创建虚拟用户
useradd -u 1314 -s /sbin/nologin -M mysql
#创建新用户mysql888并将其添加到用户组mysqlgroup
groupadd mysqlgroup
useradd -g mysqlgroup mysql888
#创建新用户mysql666并将其添加到用户组`mysqlgroup1`、`mysqlgroup2`、`mysqlgroup3`,如果没有用户组mysqlgroup1、mysqlgroup2、mysqlgroup3,则需要提前创建
echo 'mysqlgroup1 mysqlgroup2 mysqlgroup3' |xargs -n1 groupadd
useradd -G mysqlgroup1,mysqlgroup2,mysqlgroup3 mysql666
2、修改用户密码-passwd
| passwd命令选项 | 命令说明 |
|---|---|
| passwd 用户 | 交互式修改用户密码 |
| echo "密码" | passwd --stdin 用户 | 非交互式修改密码,用于批量修改密码(只能root用) |
#案例03 交互式修改用户mysql密码
passwd mysql
#案例04 非交互式修改用户mysql密码为12345
echo 12345 |passwd mysql
3、切换用户-su
| su命令选项 | 命令说明 |
|---|---|
| su - 用户 | 完全切换用户(更新用户的配置与环境变量) |
#完全切换用户mysql
su - mysql
#退出当前用户
ctrl + d
说明:root切换普通用户不需要输入普通用户密码;反之需要输入root密码
5.2 删除¶
1、删除用户-userdel
| userdel命令选项 | 命令说明 |
|---|---|
| userdel 用户 | 仅仅删除用户,不删除家目录 |
| userdel -r 用户 | 删除用户及家目录 |
# 仅删除用户mysql
userdel mysql
# 删除用户mysql及其家目录
userdel -r mysql
5.3 修改¶
1、修改用户信息-usermod
| usermod命令选项 | 命令说明 |
|---|---|
| usermod -s 命令解释器 用户 | 修改用户登录后使用的Shell终端(用户必须存在) |
| usermod -G 组名 用户 | 修改用户所属的扩展群 |
| usermod -G ' ' 用户 | 把用户从root组踢出 |
#修改mysql用户命令解释器为/bin/bash
usermod -s /bin/bash mysql
#修改mysql用户属于root组
usermod -G root mysql
#把用户mysql从root组踢出
usermod -G ' ' mysql
5.4 查看¶
1、查询用户的uid,gid,用户组信息-id
| id命令选项 | 命令说明 |
|---|---|
| id 用户 | 查询用户的uid,gid,用户组信息,检查用户是否存在 |
#查看用户mysql的uid,gid,用户组信息
id mysql
2、查询当前用户的名字-whoami
| whoami命令选项 | 命令说明 |
|---|---|
| whoami | 查看当前登录用户名字 |
#查看当前登录用户名字
whoami
3、查看当前登录的用户的信息-w
| w命令选项 | 命令说明 |
|---|---|
| w | 显示已登录用户的信息 |
$ w
14:21:13 up 1 day, 22:27, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 14:19 1:45 0.01s 0.01s -bash
root pts/1 192.168.1.108 Fri16 ? 0.20s 0.00s w
上面回显信息说明如下:
14:21:13:当前系统时间。up 1 day, 22:27:系统已经运行了1天22小时27分钟。2 users:当前有2个用户登录。-
load average: 0.00, 0.01, 0.05:系统的负载平均值。这个值表示系统的繁忙程度,分别对应1分钟、5分钟和15分钟的平均负载。在这个示例中,系统的负载很低。 -
USER:用户的登录名。 TTY:终端类型或伪终端号。FROM:用户的登录来源,可以是IP地址或终端类型。如果为空或-代表本地登录;如果是IP地址代表远程登录LOGIN@:用户登录的时间。IDLE:用户的登录会话空闲时间。JCPU:用户的累计CPU时间(以分钟为单位)。PCPU:用户的当前CPU占用百分比。WHAT:用户正在运行的命令或程序。
4、显示用户的登录情况-last
last
| last命令选项 | 命令说明 |
|---|---|
| last | 显示所有用户的登录信息 |
5、显示所有用户最近1次登录情况-lastlog
| lastlog命令选项 | 命令说明 |
|---|---|
| lastlog | 显示所有用户最近1次的登录信息 |
#查看所有用户最近1次的登录信息
lastlog
六、sudo权限管理¶
6.1 什么是sudo¶
sudo(超级用户do) 是一个在Unix和Unix-like操作系统上用于授权普通用户执行特权命令的工具。sudo使系统管理员能够分配特定的权限,允许用户在不完全切换到超级用户(root)的情况下执行特权命令。
6.2 sudo的重要性¶
sudo的重要性体现在以下方面:
- 安全性: sudo允许细粒度的权限控制,系统管理员可以明确授权哪些用户执行哪些命令,而不必将完整的root权限授予用户。这有助于降低潜在的安全风险。
- 审计: sudo记录每个使用它的用户的命令,可以提供审计和跟踪功能,以便了解谁以何种方式使用了特权。
- 管理: sudo简化了权限管理,因为它允许系统管理员将权限授予不同的用户,而不必共享root密码。
6.3 权限管理操作(配置sudo)¶
1、授权普通用户执行管理员命令-sudo
一、 sudo命令常用用法
| sudo命令选项 | 命令说明 |
|---|---|
| sudo 命令 | 普通用户执行授权命令 |
| sudo -l | 查看当前用户有什么sudo权限(一般在最后2行体现) |
二、 sudo命令示例
普通用户执行授权命令vim
$ sudo vim a.txt
查看当前用户有什么sudo权限
$ sudo -l
2、编辑设置sudo-visudo
一、 visudo命令常用用法
| visudo命令选项 | 命令说明 |
|---|---|
| visudo | 使用root用户给普通用户授权 |
二、 visudo命令示例
给普通用户mysql授权cat命令
$ visudo
#第100行后面添加
mysql ALL=(ALL) /bin/cat
给运维人员创建普通用户
$ visudo
#第100行后面添加
mysql ALL=(ALL) NOPASSWD: ALL
七、堡垒机与跳板机¶
- 跳板机,堡垒机是未来工作环境中,远程连接必备设备,服务,用于 实现对连接的操作记录与回放.
- 跳板机:简单的跳板工具.
- 堡垒机:跳板工具+审计功能.
