我有一个 Go 应用程序,它具有与用户一起运行的基本 systemd 服务web
。NGiNX 通过反向代理与它对话,它与同一台服务器上的 MySQL 数据库对话。使用 SELinux 设置 NGiNX 和 MySQL 策略很容易,但是,我终生无法让 SELinux 与我的自定义 Go 应用程序一起工作。
我收到一个权限被拒绝的错误,但是当我禁用 SELinux 时,一切都运行得很好,所以我确定它是 SELinux。
关于申请
- 打开端口 8080
- 通过端口 3306 与 MySQL 对话
我已经尝试按照RedHat 提供的关于如何配置自定义应用程序的指南进行操作,但由于某种原因,我的应用程序在使用脚本后始终保持unconfined_t
不变sepolicy
。
注意:这是在 Fedora 36 服务器上。
我终于解决了。只需将我的自定义二进制文件添加到
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。