目录

一.系统引导

1.1基本概念

1.2 GRUB 文件损坏,引起的Linux系统无法启动

1.2.1模拟GRUB文件损坏情况

1.2.2修复步骤

1.3 /boot目录损坏,Linux无法启动

1.3.1 模拟/boot目录损坏情况

1.3.2修复步骤

二、系统管理器(systemd)

2.1基本概念

2.2管理systemctl单元(systemctl)

2.3查看服务状态

2.4启用和关闭服务

2.5开机自启服务

2.6屏蔽服务

2.7单元文件

三.防火墙

3.1 基本概念

3.2iptables防火墙

3.2.1基本原理

3.2.2基本概念

3.2.3iptables使用前提

3.2.4iptables 格式及参数

3.2.5查看和清空规则

3.2.6 添加和删除规则

3.2.7通用匹配规则

3.2.8端口规则匹配

3.2.9IP规则匹配

3.2.10修改规则

3.2.11扩展端口规则

3.3firewalld防火墙

3.3.1基本概念

3.3.2firewalld格式与参数

3.3.3前提条件

3.3.4firewalld的具体使用

四.APACHE服务

4.1基本概念

4.2安装并启用

4.3服务主配置文件

4.4主机访问控制

4.5Apache虚拟主机

4.5.1基本概念

4.5.2实现步骤

五.增强型Linux(SELinux)

5.1基本概念

5.2SELinux的操作指令

5.3管理SELinux Context


一.系统引导

1.1基本概念

        1.作用:指Linux系统从电源开启到进入完整系统的全过程。

        2.核心:GRUB找到内核,内核挂载根文件系统系统,systemd管理后续的服务启动。

        3.五大阶段:BIOS/UEFI 自检 → GRUB 加载内核 → 内核初始化 → systemd 启动服务 → 用户登录

        BIOS/UEFI 自检:硬件自检与启动介质定位,确定硬件正常工作,并找到装有引导程序的设备。

        GRUB 加载内核:加载内核与初始化内存盘,找到Linux内核和临时文件系统,将他们加载到内核当中,为内核初始化做准备

        内核初始化:接管硬件并挂载根文件系统,完成硬件的核心初始化,并且使用临时文件系统的驱动将他们挂载到跟文件系统中

        systemd启动服务:系统的第一个进程(PID 1),并行启动所有必要的系统服务(如网络、日志、SSH 等),将系统引导至可用状态

        用户登录:用户输入账号密码,登录Linux系统

        

        内核初始化到启动服务的过程:

                /sbin/init -> /lib/systemd/systemd -> /usr/lib/systemd/system

        系统启动目录:

                /boot: Linux 系统的“启动分区”,包含了启动过程中最核心的静态文件

                /boot/grub2/grub.cfg: GRUB 2 的配置文件,定义了启动菜单、内核参数和启动项

1.2 GRUB 文件损坏,引起的Linux系统无法启动

1.2.1模拟GRUB文件损坏情况

        1.修改grub,conf文件名,模拟文件不存在或损坏情况:

cd /boot/grub2    #cd到启动目录下
ls
mv grub.cfg grub.cfg.back    #破坏grub.conf文件

        2.重启虚拟机,Linux系统进入grub模式,出现以下情况,表示启动文件被破坏:

reboot

1.2.2修复步骤

        1.手动指定 /boot 分区的位置

set root="hd0,msdos1"

        2.手动指定内核文件和根文件系统位置,加载 Linux 内核并传递启动参数

linux16 /vmlinux-3.10.0-1160.e17.x86_64 root=/dev/mapper/centos-root

        3.初始内存文件系统

initrd16 /initramfs-3.10.0-1160.el7.x86_64.img

        4. 重启Linux系统,即可正常进入

reboot

1.3 /boot目录损坏,Linux无法启动

1.3.1 模拟/boot目录损坏情况

        1.删除/boot目录

rm -rf /boot/~

        2.重启系统,会进入救援模式

reboot

1.3.2修复步骤

        1.点击虚拟机的发送键,接着快速点入虚拟机,按 fn + f12,进入BIOS配置界面

        2.移动光标到Boot选项,选定CD光盘驱动,按住  shift 和 “+”键调到最上面,用光盘驱动来引导系统驱动,注意:虚拟机上须有光盘.iso文件

        3.移动到Exit选项,保存设置并退出界面

        4.进入故障排除菜单,接着进入救援模式

        5.输入1,继续启动

        6.按回车键,进入精简shell环境

        7.重启环境配置,进入到系统的root根目录下

chroot /mnt/sysimg

        8.开启网络服务

nmcli c up ens32    #这里注意你的网络类型
vim /etc/resolv.conf    #编辑DNS配置界面
#添加以下内容
nameserver    192.168.7.2    #你当前虚拟机所在网路的网关
ip a    #观察是否成功启动网络

        9.重装Linux内核,将GRUB,系统引导文件安装到/dev/sda硬盘下

yum reinstall -y kernel    #重装Linux内核
grub2-install /dev/sda    #将GRUB安装到硬盘MBR
ls /boot/grub2    #查看GRUB是否安装成功

        10.输入两次exit退出

exit
exit

        11.重新进入BOOT配置界面,将光盘驱动调到硬盘下面,接着保存退出,即可修复

二、系统管理器(systemd)

2.1基本概念

        1.作用:一个初始化系统,用于引导用户空间并管理用户进程

        2.特点:

       1. 具备并行化能力

        2.按需启动守护进程

        3.使用Linux控制组跟踪进程

        4.维护和自动挂载点

        5.实现基于依赖的服务控制关系

        6.在调程序时,每个切片都获得相同的CPU时间

2.2管理systemctl单元(systemctl)

        1.查询所有单元的状态,验证系统启动情况

systemctl [--all]

        2.仅查询服务单元状态

systemctl --type=service    

        3.查询服务的启用状态和开机自启状态

systemctl is-active 服务名    #检查这个服务是否启用
systemctl is-enabled 服务名    #检查这个服务是否开机自启

        4.查看所有单元的启用和禁用设置

systemctl list-unit-files [--type=service]    #没有选服务,即查询所有服务

2.3查看服务状态

        作用:查看服务的状态和日志

systemctl status 服务名

loaded: 单元配置文件已处理

active (running): 运行一个或多个持续进程

active (exited): 成功完成一次性配置

active (waiting): 正在运行但等待某个事件

inactive: 未运行

enabled: 将在开机时启动

disabled: 不会在开机时启动

2.4启用和关闭服务

        作用:打开,关闭或者重启服务

systemctl start 服务名    #开启服务
systemctl stop 服务名    #关闭服务
systemctl restart 服务名    #重启服务    
systemctl reload 服务名    #重载服务,不必关闭服务就可修改服务配置

2.5开机自启服务

systemctl enable [--now] 服务名    #启动开机自启服务,加now表示立即启用服务
systemctl disable [--now] 服务名    #关闭开机自启服务

2.6屏蔽服务

        作用:屏蔽一些可能存在冲突的服务,确保服务正常运行。

        屏蔽服务与禁用服务的区别

        屏蔽服务:既不能手动启动也不能自动启动。

        禁用服务:不会在启动时或由其他单元文件自动启动,但可以手动启动。

systemctl mask 服务名
systemctl unmask 服务名    #关闭屏蔽设置

2.7单元文件

        维护者文件:/usr/lib/systemd/system/

        管理员文件:/etc/systemd/system/

        非持久化日志保存地址:/run/systemd/

优先级:

        /etc 下的单元文件将优先于 /usr 下的单元文件。

三.防火墙

3.1 基本概念

        1.作用:负责监控和控制进出网络,阻止外部网络,访问系统,保护系统

        2.分类:iptables 和 firewalld

        iptables:底层、直接、静态的内核包过滤工具,直接操作内核的 Netfilter 框架。

        firewalld:是 iptables 的上层、动态、服务化的工具,便于配对防火墙

        相同:本质上都是对系统内核"netfilter"进行操作,他才是防火墙的核心,iptables和firewalld都是它的客户端代理

        不同:

                iptables 在 /etc/sysconfig/iptables 中储存配置(底层,操作繁琐)

                firewalld 将配置储存在 /usr/lib/firewalld/ 和/etc/firewalld/ 中的各种 XML 文件里(上游,操作简单)

        3.客户端到服务端系统的过程:

        clicent ->iptables -> tcpwarap ->server ->filesystem ->selinux 

3.2iptables防火墙

3.2.1基本原理

        1.作用:通过iptables提供管理、修改、删除或者插入规则;用户和内核交互的工具就是iptables。它只是一个客户端代理,核心是对netfilter进行操作

        2.工作原理分类(raw mangle nat filter 四个表

        主机防火墙:主要是用来防范单台主机的进出报文;-----filter表 INPUT链
        网络防火墙: 能够实现对进出本网络的所有主机报文加以防护----nat表
                raw表:用于对数据包进行连接跟踪前的处理。
                mangle表:用于修改数据包的IP头或其他信息。(不用)
                nat表:用于网络地址转换,如源地址转换和目标地址转换。
                filter表:用于执行包过滤,是最常用的表,决定数据包是否被接受、丢弃或拒绝。

        3.iptables的缺点:

        (1)防火墙虽然可以过滤互联网的数据包,但却无法过滤内部网络的数据包。因此若有人从内部网络攻击时, 防火墙没有作用。
        (2)电脑本身的操作系统亦可能因一些系统漏洞,使入侵者可以利用这些漏洞绕过防火墙过滤,从而入侵电 脑。
        (3)防火墙无法有效阻挡病毒攻击,尤其是隐藏在数据中的病毒。

        4.iptables的工作流程

        1. 防火墙是一层层过滤的。按照配置规则的顺序从上到下,从前到后进行过滤的。此时,第一条规则匹配成功。则不会继续匹配。

        2. 如果匹配上了规则,即明确表明是阻止还是通过,此时数据包就不在向下匹配新规则了。匹配到即停止继续匹配。

        3. 如果所有规则中没有明确表明是阻止还是通过这个数据包,也就是没有匹配上规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。

        4. 防火墙的默认规则是对应链的所有的规则执行完以后才会执行的(。

3.2.2基本概念

        (1)四个阶段:

        1.iptables:Linux 内核中处理数据包过滤的网络框架,是整个防火墙的“地基”。

        2.tables:按照不同的功能(如过滤、NAT、修改数据包)进行划分的规则集容器

        3.chains:在数据包处理流程中,不同阶段的钩子点,用于挂载具体的规则。

        4.policy:实际执行的匹配条件和动作,是防火墙的最小执行单元

如下比喻:

iptables tables chains policy
小区 小区里的房子 房子里的衣柜 衣柜里衣服的拜访规则

        (2)四个表:

        1.raw表:设置数据包的连接跟踪标志,通常用于在连接跟踪生效前对数据包进行处理。

        2.manager表:修改数据包的某些字段或标记数据包。

        3.nat表:用于修改数据包的网络地址(源地址和目标地址)。

        4.filter表:用来判断一个数据包是否可以通过,(常用)

        5.顺序:raw ---> mangle --->nat --->filter

        (3)五条链:

        1.input链:处理进入本机的流量,决定了哪些数据包可以进入本机,哪些应该被拒绝或丢弃

        2.output链:处理从本机发出的流量,控制本机如何向外部网络发送流量

        3.forward链:处理经过本机转发的流量,控制流量是否可以从一个接口转发到另一个接口

        4.prerouting链:处理进入本机的数据包,将外部的请求转发到内网的某个特定设备

        5.postrouting链:处理从本机发出的数据包,将内网设备的源IP 地址修改为路由器的公共IP 地址

        6.工作顺序:

        1.PREROUTING:首先处理进入本机的数据包,用于目标地址转换(DNAT)。

        2.INPUT:如果数据包的目标是本机,数据包会进入INPUT 链,决定是否允许本机接受该数据包。

        3.FORWARD:如果数据包不属于本机(即目标是其他网络),数据包会进入FORWARD 链,决定是否允许转发。

        4.POSTROUTING:在数据包离开本机之前,源地址转换(SNAT)会在此链中进行。

        5.OUTPUT:如果数据包是从本机发出的,数据包会经过OUTPUT 链,决定是否允许本机向外发送该数据包。

        (4)四表五链

        在这四个表中,分别存放着不同数量的链

        1.raw表:PREROUTING、OUTPUT,用于数据包跟踪,内核模块iptables_raw

        2.managle表:PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING,

用于路由标记。内核模块 iptables_mangle

        3.nat表:PREROUTING、INPUTOUTPUT、POSTROUTING,用于转换地址,保护内网,内核模块叫iptable_nat

        4.filter表:INPUT、FORWARD、OUTPUT,用于根据规则来处理数据包,内核模块iptable_filter

3.2.3iptables使用前提

        安装iptabales,并禁用防火墙和selinux,查看规则配置文件

yum install -y iptables-service    #安装服务
systemctl disable --now firewalld    #关闭firewalld服务,与iptables不兼容
setenforce 0    #关闭selinux
systemctl start iptables    #启动服务
systemctl status iptables    #查看服务状态
rpm -ql iptables  | grep iptables    #记录规则配置文件(/usr/sbin/iptables)

3.2.4iptables 格式及参数

iptables 动作 -[参数]

 参数:

        -L : 列出一个链或所有链中的规则信息

        -n: 以数字形式显示地址、端口等信息

        -v: 以更详细的方式显示规则信息

        --line-numbers: 查看规则时,显示规则的序号(通过需要删除规则-D INPUT 1)

        -F: 清空所有的规则(-X是清理自定义的链,用的少;-Z清零规则序号)

        -D (指定序号): 删除链内指定序号(或内容)的一条规则

        -P: 为指定的链设置默认规则

        -A: 在链的末尾追加一条规则

        -I (指定序号): 在链的开头(或指定序号)插入一条规则

        -t: 指定表名,默认为filter表

        -j:控制类型, 通过前面匹配到之后是丢弃还是保留数据包的处理方式: ACCEPT允许,REJECT拒绝,DROP丢弃:不会给用户返回任何的拒绝消息,不推荐使用。

        动作:添规则还是删除规则

        -p:匹配条件:数据包特征ip,端口等如果不写-t 默认使用filter表

3.2.5查看和清空规则

        1.列出指定表名的规则

iptables -t 指定表名 -L    #查看指定表名的规

        2.列出所有链中的规则

iptables -L

        3.以数字形式显示所有链中的ip,端口和控制类型

iptables -nL

3.2.6 添加和删除规则

        1.最后一行添加规则

iptables -t 表名 -A 链名 -p 协议 -j 类型    

        2.指定表名链里的第几行添加规则默认为第一行

iptables -I 链名 (数字) -p 协议 -j 类型 -t 表名

        3.删除指定表名的指定链表里的第几行规则

iptables -t 表名 -D 链名 数字

3.2.7保存规则和刷新规则

        1.保存规则,将临时规则写进防火墙文件

iptables-save > etc/sysconfig/iptables

        2.刷新规则,清空当前iptables设置的所有规则

iptables -F

3.2.7通用匹配规则

        通用:可以独立使用Iptables,只能匹配四层及四层一下的协议

        -p 协议:

                 tcp ---用的最多

                udp

                icmp ---ping的时候用的协议

        1.禁止所有主机ping自己,(自己也不行)

iptables -A INPUT -p icmp -j REJECT 

        2.丢弃所有主机发来的包

iptables -I INPUT -p icmp -j DROP

3.2.8端口规则匹配

        禁止主机通过指定端口号访问

        端口:

                --sport --源端口

                --dport --目标端口

        拒绝192 .168 .246 .201这台机器通过22端口到80端口的访问,包括22和80端口在内

iptables -I INPUT -s 192.168.7.135 -p tcp --dport 22:80(外机端口) -j REJECT

3.2.9IP规则匹配

        禁止源192 .168 .246 .201主机ping进来

iptables -I INPUT -s 192.168.7.135(外机IP)  -p icmp -j REJEC

3.2.10修改规则

        允许外机使用原先禁止的80端口访问主机

iptables -R INPUT 1 -s 192.168.7.135(外机IP) -p tcp --dport 80(外机端口) -j ACCEPT

3.2.11扩展端口规则

        显示匹配:如端口匹配,IP范围,MAC 地址,等特殊匹配

指定ip范围:

语法:

        -m iprange --src-range                

指定多端口范围:一次拒绝多个指定端口

语法:

        -m multiport --sports #源端口

        -m multiport --dports #目的端口

        1.拒绝指定范围的主机IP访问

iptables -I INPUT -p tcp --dport 80 -m iprange --src-range 192.168.7.199-192.168.7.206 -j REJECT

        2.指定多端口范围:一次拒绝多个指定端口

iptables -A INPUT -p tcp -m  multiport --dports 22,80 -s 192.168.7.135 -j REJECT

        3.拒绝指定网卡的访问,这个指令会断掉SSH,远程连接

iptables -I INPUT -i ens32(指定网卡) -j DROP

3.3firewalld防火墙

3.3.1基本概念

        1.作用:提供了一个动态管理的防火墙, 用以支持网络 “ zones” , 以分配对一个网络及其相关链接和界面一定程度的信任。

        2.区域划分:

        Firewalld将网卡对应到不同的区域(zone)

        通过不同的zone定义了不同的安全等级:

                trusted :允许所有流量通过

                home/internal:仅允许ssh数据通过

                work:仅允许ssh , ipp-client dhcpv6-client 数据通过

                public:默认区域,仅允许ssh , dhcpv6-client数据通过

                external:仅允许ssh数据通过,通过该区域的数据将会伪装(SNAT / DNAT)

                dmz:仅允许ssh数据通过

                block:任何传入的网络数据包都将被阻止。拒绝所有流量

                drop:丢弃所有流量,没有返回回应消息

3.3.2firewalld格式与参数

firewall-cmd -[参数]

参数:

        --permanent :永久生效的配置参数、资源、端口以及服务等信息

1.域zone相关的命令

        --get-default-zone :查询默认的区域名称
        --set-default-zone=<区域名称> :设置默认的区域
        --get-active-zones :显示当前正在使用的区域与网卡名称
        --get-zones :显示总共可用的区域
2.services管理的命令
         --add-service=<服务名> --zone=<区域> :设置指定区域允许该服务的流量
        --remove-service=<服务名> --zone=<区域> :设置指定区域不再允许该服务的流量
3.Port相关命令
        --add-port=<端口号/协议> --zone=<区域> : 设置指定区域允许该端口的流量
        --remove-port=<端口号/协议> --zone=<区域> :设置指定区域不再允许该端口的流量
4.查看所有规则的命令
        --list-all --zone=<区域>: 显示指定区域的网卡配置参数、资源、端口以及服务等信息
        --reload :让“永久生效”的配置规则立即生效,并覆盖当前的配置规则

3.3.3前提条件

        关闭iptables服务,开启firewalld服务

systemctl stop iptables
systemctl start firewalld

3.3.4firewalld的具体使用

        1.查看和设定指定区域

firewall-cmd --get-default-zone    #查看当前的防火墙区域
firewall-cmd --set-default-zone=区域    #设定成指定区域

        2.向指定区域添加或删除服务

firewall-cmd --permanent --add-service=服务名 --zone=区域     #向指定区域添加指定服务,重载
firewall-cmd --permanent --zone=区域 --remove-service=服务名     #移除指定区域内的服务

        向public区域添加http服务

                从public区域移除http服务

        3.pubic 区域添加服务,以添加端口的方式

firewall-cmd --permanent --add-port=端口号/网络协议 --zone=区域    #向区域添加指定服务
firewall-cmd --permanent --remove-port=端口号/网络协议 --zone=区域    #向区域移除指定服务

                向public区域添加80端口:

                移除public区域80端口:

四.APACHE服务

4.1基本概念

        1.作用:Apache软件基金会的一个开放源码的网页服务器,快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。

        2.端口号:80(默认,可修改)

        3.默认发布页:/var/www/html,在浏览器中输入本机IP可以看到默认发布文件内容

4.2安装并启用

        1.安装软件

yum install httpd httpd-manual -y

        2.启用并设置开机自启

systemctl enable --now httpd
#以下是加入防火墙的步骤,,也可以直接禁用防火墙
#firewall-cmd --permanent --add-service=http
#firewall-cmd --reload

4.3服务主配置文件

        1.文件路径:/etc/httpd/conf/httpd.conf

        2.文件内容:

4.4主机访问控制

        1.作用:

        2.编辑 /etc/httpd/conf/httpd.conf,重启服务

vim /etc/httpd/conf/htppd.conf    #添加以下内容
systemctl restart httpd

        2.创建用户密码文件,用于用户认证

htpasswd -cm /etc/httpd/conf/htpasswd admin

         -c:创建一个加密文件;

        -m:默认采用MD5算法对密码进行加密;  

        -D:删除指定的用户 如果密码文件已经存在,不要加-c参数,不然会覆盖源文件

        3.编辑配置文件,配置用户认证

vim /etc/httpd/conf/httpd    #编辑文件,修改之前的主机配置,添加以下信息
systemctl restart httpd

        4.测试:这里的hello是/var/www/html目录下的index.html内容

echo hello > /var/www/html/index.html
curl http://192.168.7.135/admin/ -u admin:123456    #-u:用户:密码

4.5Apache虚拟主机

4.5.1基本概念

        1.作用:在一个Apache服务器上可以配置多个虚拟主机,实现一个服务器提供多站点服务,访问同一个服务器上的不同目录。

        2.共有三种配置方法:基于IP配置,基于域名配置,基于端口配置

4.5.2实现步骤

        1.定义一个默认发布点的虚拟机,防止/var/www/html目录下的网页失效(可选)

vim /etc/httpd/conf.d/default.conf    #后面的文件名可以自拟,格式为:文件名.conf

        添加以下内容:

        2.创建一个新的虚拟机:在当前目录下创建一个.conf文件,添加虚拟主机的配置信息,目录为本机下的/www/www.linux.org

vim /etc/httpd/conf.d/vhost.conf #同上,文件名可以自拟

        添加以下内容:

        3.创建用户认证,并修改文件上的需求用户(require user),修改成你创建的用户名

htpasswd -cm /etc/httpd/conf/htpasswd admin    #最后面一句表示你要创建的用户名,接着回车输入你的密码
vim /etc/httpd/conf.d/vhost.conf    #编辑这个文件,将你的用户名添加或更改上去
systemctl restart htppd    #重启服务

        4.创建用户目录,以你添加的虚拟主机定义的目录为准,也可以修改虚拟主机上的目录

mkdir -p /www/www.linux.org
touch /www/www.linux.org/index.html    #在该目录下创建一个index.html文件,用于测试
echo www.linux.org > /www/www.linux.org/index.html    #加一段文字,用于测试

        5.编辑客户端的域名解析文件,将www.linux.org域名加入到服务端的IP解析后面

vim /etc/hosts

        6.在客户端上访问服务端的www.linux.org目录,观察是否有信息输出

curl http://www.linux.org/ -u admin:123456    #-u后面改成之前你定义的用户和密码

五.增强型Linux(SELinux)

5.1基本概念

        1.作用:控制服务安全,是在进行程序、文件等细部权限设置依据的一个核心模块,最大限度地减小系统中服务进程可访问的资源。

        2.DAC与MAC

        DAC:自主访问控制,它的主体是用户,在没有使用 SELinux 的操作系统中,决定一个资源是否能被访问的因素是:某个资源是否拥有对应用户的权限(读、写、执行)。而root 用户不受任何管制,系统上任何资源都可以无限制地访问。

        MAC:强制访问控制,它的主体是进程,在使用了 SELinux 的操作系统中,决定一个资源是否能被访问的因素除了上述因素之外,还需要判断每一类进程是否拥有对某一类资源的访问权限。即使是以 root 身份运行的服务进程,一般也只能访问到它所需要的资源

5.2SELinux的操作指令

        1.查看当前系统的selinux状态

getenforece    #查看当前的selinux状态

selinux的三种启动状态:

        Enforcing(强制模式):SELinux 完全启用,所有违反策略的操作都会被阻止,并记录日志

        Permissive(宽容模式):SELinux 启用但不阻止违规操作,只记录警告日志

        Disable(禁用模式):SELinux 完全关闭,不执行任何安全策略

         2.更改当前系统的selinux状态(注意这里无法调整成禁用模式):

setenforce 1    # 切换到强制模式
setenforce 0    # 切换到宽容模式

         3.设置linux系统开机时selinux的状态

vim /etc/sysconfig/selinux    #编辑selinux的系统文件
reboot    #设置完成后,必须重启系统才能生效

5.3管理SELinux Context

        1.查看当前文件的安全上下文

ls -Z 文件名 

注意:执行此命令时SElinux必须打开,如果是disabled,则会看到问号

SELinux 的访问控制规则:

        本质上是定义 “某个域(domain)” 对 “某个类型(type)” 是否拥有 “某种权限(如读、写、执行)”。

安全上下文主要分为三个字段: Identify : role : type      身份识别 : 角色 : 类型

        身份识别(Identify):主要的身份识别常见有下面几种常见的类型:

                unconfined_u: 不受限的用户,该文件来自于不受限的程序所产生的。基本是bash环境自己的文件。

                system_u: 系统用户,大部分就是系统自己产生的文件。

        角色:了解这个数据是属于程序、文件资源还是代表使用者。

                object_r:代表的是文件或目录等文件资源

                system_r:代表的是程序,不过一般使用者也会被指定成为system_r。

        类型(Type): 一个主体程序能不能读取到这个文件资源,与类型字段有关。

                主体(进程) 有一个 域(Domain)(进程的类型)。

                客体(文件、目录、端口、网络接口等) 有一个 类型(Type)。

        解释:system_u:object_r:admin_home_t:s0,其中system_u表示系统用户,object_r 表示文件客体,admin_home_t表示该文件属于管理员家目录类型,s0是默认的 MLS 安全级别。

        2.查看所有系统文件和服务的安全上下文

semanage fcontext -l

        3.永久更改

semanage fcontext -a -t selinux的安全上下文类型 "文件名(绝对路径)"    #为指定文件添加一条新的规则
restorecon -vvFR 文件名    #刷新上下文

        将/root/1.txt的SELinux类型从admin_home_t修改为http_sys_content_t :

更多推荐