我有一个 Go 应用程序,它有一个与用户一起运行的基本 systemd 服务web
。 NGiNX 通过反向代理与其通信,并与同一服务器上的 MySQL 数据库通信。 NGiNX 和 MySQL 策略很容易使用 SELinux 设置,但是,我一生都无法让 SELinux 与我的自定义 Go 应用程序一起工作。
我遇到了权限被拒绝的错误,但是当我禁用 SELinux 时,一切都运行得很好,所以我确定它是 SELinux。
关于申请
- 打开8080端口
- 通过端口 3306 与 MySQL 对话
我尝试过以下这RedHat 指导如何配置自定义应用程序,但由于某种原因,我的应用程序始终保持unconfined_t
使用sepolicy
脚本后的状态。
笔记:这是在 Fedora 36 服务器上。
答案1
我终于解决了。只需将我的自定义二进制文件添加到标签即可bin_t
。我使用了这个命令,semanage fcontext -a -t bin_t "/path/to/binary"
然后使用了restorecon -v /path/to/binary
.然后很快systemctl restart mybinary.service
,它似乎就完美地工作了。
httpd_sys_content_t
我还使用相同的命令为我的网站添加了静态内容,然后重新加载 NGiNX。