我有几件事希望能够在 Fedora 上作为服务器站起来。我知道我至少可以运行其中的一些,podman
或者docker
但我已经知道如何做到这一点。我也已经知道如何将其用于现有服务,例如ssh
我只想通过以下方式使用自定义端口:
sudo semanage port -a -t ssh_port_t -p tcp 2222
但我的问题是 selinux 已经定义了ssh_port_t
类型。如果我有一些由于某种原因我不能或不想在容器中运行的自定义应用程序怎么办,我将如何允许端口用于没有预定义类型的东西semanage port --list
?
对于此示例,假设我正在尝试运行 /path/myNiftyGameServer 并希望允许它连接到 udp 端口 12345(目前在我的系统上未使用)。我怎样才能做到这一点?
背景方面,我并不声称自己是大师,但总体上我感觉对 bash 和 Linux 相对精通,但在 SELinux 方面我仍然是一个新手(我知道标签、restorecon
. 和一些基本semanage
命令,但我仍然学习)。
请假设我不愿意简单地禁用 SELinux(因为我是)。如果这个问题看起来不切实际,可以提出其他建议,但我之所以问主要是因为我很好奇这个问题在 SELinux 中将如何解决,并且除了像我的 ssh 这样的现有类型之外,我自己无法找到解决方案上面的例子。请随时为 SELinux 新手推荐其他相关的阅读主题。
编辑:根据我在 Centos 上找到的 Starbound 服务器和Soldat Dedicated server policy的额外搜索,我猜我可能需要学习如何编写 SELinux 策略?当一项服务根本没有名称但我仍然想学习如何做时,我需要这么多真是太疯狂了。
编辑 2:在花了一些时间阅读它们之后,Starbound 链接似乎不是我所追求的;唯一的 SELinux 策略编写是针对单独的 Apache 服务器(Apache 已经定义)而不是游戏服务器。Soldat 似乎与我所追求的非常接近,但我认为我需要一本关于政策写作的入门书才能到达那里。特别是,我真的只对如何为自定义服务器/Web 服务打开端口感兴趣。设置文件路径访问听起来也不错,但是我可以使用用户帐户来管理它,而即使我在 firewall-cmd(firewalld)中打开一个网络端口,如果我没记错的话,它仍然会被 SELinux 阻止(我知道我有这个过去的问题,但我想我可以重新测试以确定)。