<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Linux系统管理 on Two Tigers Engineering</title>
    <link>https://blog.twotigers.xyz/series/linux%E7%B3%BB%E7%BB%9F%E7%AE%A1%E7%90%86/</link>
    <description>Recent content in Linux系统管理 on Two Tigers Engineering</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 10 Jun 2024 12:00:00 +0000</lastBuildDate><atom:link href="https://blog.twotigers.xyz/series/linux%E7%B3%BB%E7%BB%9F%E7%AE%A1%E7%90%86/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>解决 SELinux 拦截导致 systemctl 启动服务失败的问题</title>
      <link>https://blog.twotigers.xyz/posts/linux/selinux/</link>
      <pubDate>Mon, 10 Jun 2024 12:00:00 +0000</pubDate>
      
      <guid>https://blog.twotigers.xyz/posts/linux/selinux/</guid>
      <description>SELinux 与 systemctl 执行问题的解决方案 在系统管理中，SELinux（Security-Enhanced Linux）是一种强制访问控制（MAC）安全机制。尽管它提供了更高的安全性，但有时也会引发一些问题。本文将介绍一个常见的问题，并详细说明如何通过日志确认问题并修正它。
问题描述 我们遇到了一个问题，即可以直接使用命令执行某个服务，但当尝试使用 systemctl start caddy 命令启动时，却会出现以下错误：
(code=exited, status=203/EXEC) 日志确认问题 要确认是否是SELinux导致的问题，可以通过查看系统的审计日志。在终端中使用以下命令：
grep &amp;#39;avc: &amp;#39; /var/log/audit/audit.log 你会看到类似下面的日志条目：
type=AVC msg=******: avc: denied { execute } for pid=**** comm=&amp;#34;(caddy)&amp;#34; name=&amp;#34;caddy&amp;#34; dev=&amp;#34;dm-0&amp;#34; ino=**** scontext=********* tclass=file permissive=0 这条日志中的信息显示，SELinux 拒绝了 caddy 服务执行的请求。
解决方案 为了解决这个问题，我们可以采取临时方案，即将需要执行的文件放置在 /usr/bin 目录下。以下是具体步骤：
将 caddy 文件移动到 /usr/bin 目录下：
sudo mv /path/to/caddy /usr/bin/ 执行 restorecon 命令，恢复文件的SELinux安全上下文：
sudo restorecon -Rv /usr/bin restorecon 命令会根据SELinux策略恢复指定目录下文件的默认安全上下文。在执行完这个命令之后，你放在 /usr/bin 下的 caddy 文件就可以正常使用了。
为什么放在 /usr/bin 下才能用？ SELinux 对系统中的每个文件和进程都施加了安全上下文。当你将文件放置在 /usr/bin 目录下时，系统会自动为这些文件分配合适的安全上下文，使得它们可以被系统服务执行。而自定义目录中的文件可能没有正确的安全上下文，因此被SELinux拒绝执行。</description>
    </item>
    
  </channel>
</rss>
