一.linux安全模型
sequenceDiagram
Alice->>John: Hello John, how are you?
John-->>Alice: Great!
Alice-)John: See you later!
1. linux基于 用户身份 对 资源 进行 控制 和 访问
graph TD
Start --> Stop
- 用户账号
pie title Pets adopted by volunteers
"Dogs" : 386
"Cats" : 85
"Rats" : 15
超级用户:访问权限不受控
erDiagram
CUSTOMER ||--o{ ORDER : places
ORDER ||--|{ LINE-ITEM : contains
CUSTOMER }|..|{ DELIVERY-ADDRESS : uses
普通用户:访问权限受控制
程序用户:给程序使用的,在安装linux操作系统及部分应用程序时,添加一些特定的 低权限 用户账号,这些账号一般不会进入系统,只是维持系统或某个程序的正常运行.
- 组账号:
基本组(私有组):唯一仅且也有一个
附加组(公有组):一人身兼数职;可有可无.
- UID和GID
UID:用户标识号
GID:组标识号
2.2用户身份识别以uid识别
- 超级管理员:root,0
- 程序用户:1-499
- 普通用户:500+(centOS6以前) 1000+(centOS7以后)
注:centOS6 centOS7 区别 :uid不同
2.3组标识识别gid
- 超级用户:root : 0
- 程序用户:1-499
- 普通用户:500-60000
2.3用户账号管理
/etc/passwd:保存文件名称,宿主目录登录shell基本信息
每一行对应一个用户记录
root:x:0:0:root:/root:/bin/bash
root:用户名
x:密码占位符
0:uid ; 身份识别号 0为超级管理员
0:gid; 组标识 0为超级管理员
root: 用户描述说明
/root: 家目录
/bin/bash -s:shell默认类型选择
可使用”man 5 passwd“命令,查看/etc/passwd文件说明及每个字段含义。
/etc/shadow 存放保存密码
-
第一root:用户名
-
第二HzYRIWo05k6aVw2p$aLg7wfHGwoghmuUrIYced 密码 ; 密码为: * ,!! 表示该用户不能登录此系统,若为空 表示无需密码即可登录
-
第三:19055:最后一次修改密码时间
-
第四0:修改密码最小天数 0 不限制
-
第五99999:密码有效期
-
第六7:提前7天提醒
-
第7:宽限天数
-
第8:失效时间 永久
-
第9:保留
三.用户账号管理
用户账号的管理工作主要涉及到用户账号的添加、修改和删除。
3.1## 添加用户账号 useradd
命令格式 :useradd 选项 用户名
添加用户后,会在/etc/passwd文件和/etc/shadow文件中生成相应信息
- 在/etc/passwd 文件和/etc/shadow 文件的末尾增加该用户账号的记录。
- 若未明确知道用户的宿主目录,则在/home 目录下自动创建与该用户账号同名的宿主目录,并在该目录中建立用户的各种初始配置文件。
- 若没有明确指定用户所属的组,则自动创建与该用户账号同名的基本组账号,组账号的记录信息将保存到/etc/group 和 /etc/shadow 文件中。
常用选项:
| 选项 | 含义 |
|---|---|
| -s | 让不让用户的登录shell(比如/bin/bash为可登陆系统,sbin/nologin和/bin/false禁止用户登陆系统) |
| -M | 不建立宿主目录(一般用于系统用户账号 |
| -U | 指定用户的UID,要求该UID未被其他用户使用 |
-s :shell默认类型选择路径:一般给程序系统使用
选择sbin/nologin不让用户登录到系统中去 ,但可以维持某个系统的运行
-M:建立y1用户并且不添加在家目录
-u :指定yy用户的uid
设置/更改用户口令 passwd
-
root用户可以指定用户名作为参数,对指定账号的密码进行管理。不指定用户名时,修改当前账号的密码。
-
普通用户只能执行单独的passwd命令修改自己的密码。
命令格式
passwd 选项 用户
常用选项
| 选项 | 作用 |
|---|---|
| -l | 锁定用户密码,锁定的用户账号将无法再登录系统。(一定要事先设好密码) |
| 选项 | 作用 |
|---|---|
| -d | -d 清除用户密码,使用用户名可直接登录 |
锁定用户密码,锁定后用户无法登陆
| 选项 | 作用 |
|---|---|
| -u | 解锁用户的密码 |
| -f | 强制解锁被锁定的用户密码 |
修改用户账号的属性 usermod
基本格式
usermod 选项 用户名
常用选项:
| 选项 | 作用 |
|---|---|
| -l | 更改用户账号的登录名称。格式:usermod -l 新名称 旧名称 |
| -L | 锁定用户账户 |
| -U | 解锁用户账户 |
| 以下选项与useradd命令中的含义相同 | |
| -u | 修改用户的UID号 |
| -d | 修改用户的宿主目录位置 |
| -e | 修改用户的账户失效时间,可使用YYYY–MM-DD的日期格式 |
| -g | 修改用户的基本组名(或使用GID号) |
| -G | 修改用户的附加组名(或使用GID号) |
| -s | 指定用户的登录Shell |
usermod -l 更改已有用户的名字
格式 :usermod -l 新名字 旧名字
格式:usermod -L 用户名 锁定用户的账号
格式:usermod -u 用户名 解锁账户
修改账户年龄信息chage
删除用户 userdel
格式 userdel [-r] 用户名 //结合-r可以删除宿主目录
加-r可以删除原宿主的目录信息
四. 用户账号的初始配置文件
文件来源:
新建用户账号时,从 /etc/skel 目录中复制而来, 比如默认bin/bash,默认家目录。
用户宿主目录下的初始配置文件只对当前用户有效。
主要的用户初始配置文件:
- 修改/etc/profile文件中相关配置,切换bash或者用户后都需要source /etc/profile才生效;
- 修改/etc/bashrc文件中相关配置,切换bash或者用户后直接生效。
五.组管理
1. 组帐号文件
/etc/group 保存组账号信息
etc/gshadow 保存组账号的密码信息
2. 组账号管理
添加组groupadd 组名 [添加组]
添加组groupadd 选项[-g] 组名 [添加组并指定gid]
注:忘记指令可查询
3.组管理 gpasswd 添加删除组成员
注: gpasswd可以设置组账号密码,但该功能极少使用,一般用来添加或删除组成员。
gpasswd 组名 修改组密码
gpasswd 选项 组名
| -a | 向组内添加一个用户 |
|---|---|
| -d | 从组内删除一个用户成员 |
| -M | 定义组成员列表 |
gpasswd -a 组名向组内添加成员
gpasswd -d 从组内删除一个用户成员
gpasswd -M定义组成员列表
注:忘记指令可查询
4. 删除组账号 groupdel
groupdel 组名
5. 查询账号信息
1.查询用户所属的组 groups
groups 用户名
2.id 查看客户的UID GID 基本组 附加组
3.finger 命令用于查询用户帐号的详细信息
finger 用户名
6. 查询已登录到主机的用户信息
w who users
六.文件/目录的权限和归属
1. 权限和归属的基本概述
| 访问人群分类 | 简写 |
|---|---|
| 所属主 | u |
| 所属组 | g |
| 其他人 | o |
2.文件目录的权限
| 权限 | 简写 |
|---|---|
| 读 | r |
| 写 | w |
| 执行 | x |
3.对文件的权限
-
r 可使用文件查看类工具,比如:cat,可以获取其内容
-
w 可修改其内容
-
x 可以把此文件提请内核启动为一个进程,即可以执行(运行)此文件(此文件的内容必须是可执行)
4.对文件夹的权限
-
r 可以使用ls查看此目录中文件列表
-
w 可在此目录中创建文件,也可删除此目录中的文件,而和此被删除的文件的权限无关
-
x 可以cd进入此目录,可以使用ls -l查看此目录中文件元数据(须配合r权限),属于目录的可访问的最小权限
5.## 查看权限和归属 ll
6. /etc/passwd
| 权限 | 意义 |
|---|---|
| - | 表示文件属性普通文件 |
| rw- | 表示所属主只有读写的权限 |
| r-- | 表示所属组只有度的权限 |
| r-- | 表示其他人只有读的权限 |
| 1 | 表示连接个数 |
| root | 所属主 |
| root | 所属组 |
| 2173 | 文件大小 |
| 7月 23 11.01 | 表示最后修改时间 |
| /etc/passwd | 文件位置路径 |
/etc/shadow
| 权限 | 意义 |
|---|---|
| ---------- | 表示所属主,所属组,其他人无任何权限 |
注:删除文件,和文件的权限无关,只和文件所在文件夹的权限有关
文件夹一定会有执行权限 x
执行权限 x 是文件夹的最小权限 ,没有x权限 文件夹的rw权限不生效
7.chmod 修改权限 -文件/文件夹
-
chmod(change mode)命令用于控制用户对文件/目录的权限
-
Linux的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)
数字表示法
注> 777 表示所有权限都有
chmod 权限rwx号(777) 文件名
8.模式法
命令格式
chmod 对谁(所有者,所属组,其他) 操作(+ - =)权限 文件名
| 谁 | 含义 | |
|---|---|---|
| u | 文件属主 | (属于那个用户) |
| g | 文件属组 | (属于那个组) |
| o | 其他人 | |
| a | 所有人 |
操作权限
| 标题 | |
|---|---|
| + | 添加权限 |
| - | 减少权限 |
| = | 覆盖已有权限 |
权限对root无效,root超级用户不受权限管控
| 标题 | |
|---|---|
| r | 读权限 |
| w | 写权限 |
| x | 执行权限 |
具体操作步骤
9.chown 改变文件和目录的属主 属组
chown [选项] new [:group] old
new是替换的用户 old是被替换的用户
| [选项] | 含义 |
|---|---|
| -c | 显示更改的部分的信息 |
| -f | 忽略错误信息 |
| -h | 修复符号链接 |
| -v | 显示详细的处理信息 |
| -r | 处理指定目录以及其子目录下的所有文件 |
举例
1.把 /var/run/httpd.pid 的所有者设置 root
chown root /var/run/httpd.pid
2.将文件 1.txt 的拥有者设为test,群体的使用者gtest
chown test:gtest 1.txt
3.把 11.txt 的关联组设置为 512 (GID),不改变所有者
chown :512 1.txt
4.将当前前目录下的所有文件与子目录的拥有者皆设为t1,群体的使用者gt2
chown -R t1:gt2 *
10.unmask 权限掩码
- unmask用于控制 新建文件或者文件夹的权限
- 文件夹默认最大权限为777
- 文件默认的最大权限为666 (没有执行权限)
-
新建目录权限= 777-unmask
-
新建文件权限=666 - unmask
-
unmask是需要减去的权限