SELINUX=enforcing时无法启动httpd服务的解决方案(semanage命令以及setroubleshoot-server插件的妙用)

embedded/2024/10/21 19:54:22/

一、问题描述:

当/etc/selinux/conf被要求必须是SELINUX=enforcing,不被允许使用setenforce 0宽松模式

我们启动httpd就会报错:

Job for httpd.service failed because the control process exited with error code.
See "systemctl status httpd.service" and "journalctl -xeu httpd.service" for details.

vim /etc/httpd/conf/httpd.conf文件,发现端口是82

二、强制执行(Enforcing)机制

由图可知,SELinux的工作模式有三种,enforcing是最严格的,不匹配就推出。

Linux强制执行(Enforcing)机制是一个非常重要的安全特性,它可以帮助系统管理员强制执行访问控制规则,从而保护系统资源的安全性。

1、什么是Linux强制执行机制

(1)Linux的强制执行机制是安全增强型Linux的一个组成部分,它可以强制执行SELinux策略中定义的访问控制规则,从而保护系统资源的安全性。

(2)如果一个进程想要访问某个资源,例如文件、目录或者端口,这个请求就需要通过SELinux的访问控制规则来验证(只有满足规则的请求才被允许,否则将被拒绝)。

(3)Linux的强制执行机制可以在系统层面强制执行SELinux的访问控制规则,确保系统资源的安全性。

2、Linux强执行机制的应用场景

(1)Linux的强制执行机制通常用于高安全性的系统(例如金融、等敏感领域):

通过使用强制执行机制,系统管理员可以强制执行特定的访问控制规则,从而限制对系统资源的访问。

(2)强制执行机制还可用于强制执行特定的安全策略(例如权限管理、文件保护和日志位置等方面):

这意味着管理员可以通过强制执行机制来保护系统资源中的重要数据和文件,确保他们不被未经授权的人员访问和修改。强制执行机制还可以帮助管理员监视系统活动,例如登录、文件读取和修改等情况。

浏览器访问的网址无非就是看协议、ip/域名、端口,协议是http,ip也设置了,那就从最简单的端口入手,先查 SELinux 允许的端口:

使用semanage port  -l  |  grep http #查 SELinux 允许的端口

3、修改SELinux策略

为了解决这个问题,需要用到semanage命令:

semanage是用于配置SELinux策略某些元素而无需修改或重新编译策略源的工具

3.1 安装semanage命令需要的软件包

1) yum  provides  semanage   #查询仓库中那个软件产生semanage   
2) yum  -y  install   policycoreutils-python-utils #由上一个命令可知有semanage命令的软件是policycoreutils-python-utils

3.2 安装setroubleshoot-server软件包

这样才能把SELinux消息发送至/var/log/messages文件中,甚至贴心地推荐适合的semanage语法来解决问题。

注:如果熟练掌握semanage命令的语法,就忽略这一步

1) yum -y install setroubleshoot-server
2) systemctl restart httpd
继续报错就可在/var/log/messages文件查看错误日志了
3)cat /var/log/messages | grep -i setrouble
从日志信息中推断,解决方法是在命令行输入“semanage port -a -t http_port_t -p tcp 82”这个命令
4)semanage port -a -t http_port_t -p tcp 82
5)systemctl restart httpd
systemctl enable httpd
此时应该是成功了注意:这些方案是在防火墙firewalld被stop服务或者卸载的前提下,不想卸载就设置为可信任:firewall-cmd --set-default-zone=trusted

然后在浏览器输入http://172.25.0.25:82验证效果

没有浏览器就在linux命令行使用curl http://172.25.0.25:82验证效果


http://www.ppmy.cn/embedded/44213.html

相关文章

sdbusplus:通过文件描述符传递数据

有的时候需要传递大量的数据,如果将数据通过dbus传递,会消耗大量的带宽。可以通过传递一个文件描述符替代传递数据: 以下的service通过文件描述符接收数据: //fd_service.cpp #include <sdbusplus/asio/connection.hpp> #include <sdbusplus/asio/object_server…

查看环境中python3安装在哪指令

1. 查看安装在哪&#xff1a; pip install where where python3 2. 查看是否安装&#xff1a; pip freeze | grep transformers

文心智能体平台丨创建你的四六级学习小助手

引言 在人工智能飞速发展的今天&#xff0c;我们迎来了文心智能体平台。该平台集成了最先进的人工智能技术&#xff0c;旨在为用户提供个性化、高效的学习辅助服务。今天&#xff0c;我们将向大家介绍如何利用文心智能体平台&#xff0c;创建一个专属于你的四六级学习小助手。…

k8s部署calico遇到的问题

kubernetes安装calico calico官网 环境&#xff1a;centos7.9&#xff0c;calico 3.23&#xff0c;kuberadm 1.26 问题1&#xff1a;执行kubectl create -f calico.yml后报错如下 error: resource mapping not found for name: “tigera-operator” namespace: “” from “…

深入分析 Android Activity (一)

文章目录 深入分析 Android Activity (一)1. Activity 的窗口管理2. Activity 的生命周期管理onCreateonStartonResumeonPauseonStoponDestroyonRestart 3. Activity 与 Fragment 的交互添加 FragmentFragment 的生命周期 4. Activity 的任务和返回栈5. 配置变化处理 总结 深入…

python -【五】数据容器

数据容器 一、列表 列表的循环 name_list [张三, 李四, 王五] print(f类型是&#xff1a;{type(name_list)})# while 遍历列表 count 0 while count < len(name_list):print(fwhile 下标为[{count}] 的内容是[{name_list[count]}])count 1# for 循环 for name in name…

python打造自定义汽车模块:从设计到组装的全过程

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言 二、定义汽车模块与核心类 三、模拟汽车组装过程 四、抽象与封装 五、完整汽车…

算法的时间复杂度(详解)

前言&#xff1a; 算法(Algorithm):就是定义良好的计算过程&#xff0c;他取一个或一组的值为输入&#xff0c;并产生出一个或一组值作为 输出。简单来说算法就是一系列的计算步骤&#xff0c;用来将输入数据转化成输出结果 一、算法效率 1.1 如何衡量一个算法的好坏 如何衡…