一、概述

  • 各种系统中都有用户,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则代表虚拟用户/傀儡用户

Aspose.Words.9a5b07bb-0a8f-47a2-8550-162893c1c8fd.027

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

七、堡垒机与跳板机

  • 跳板机,堡垒机是未来工作环境中,远程连接必备设备,服务,用于 实现对连接的操作记录与回放.
  • 跳板机:简单的跳板工具.
  • 堡垒机:跳板工具+审计功能.

Aspose.Words.9a5b07bb-0a8f-47a2-8550-162893c1c8fd.062