CentOS - semanage - 添加自定义端口失败

Mik*_*ell 4 selinux centos

我最近将我的一个应用程序服务器升级到 CentOS 6(.2) 并准备在我可以解决以下问题时将其用于生产;每当我尝试通过 semanage 添加自定义 http 端口时,我不断收到以下错误消息:

libsemanage.semanage_exec_prog: Child process /sbin/setfiles did not exit cleanly.
libsemanage.semanage_install_active: setfiles returned error code -1.
libsemanage.semanage_exec_prog: Child process /sbin/setfiles did not exit cleanly.
libsemanage.semanage_install_active: setfiles returned error code -1.
/usr/sbin/semanage: Could not commit semanage transaction
Run Code Online (Sandbox Code Playgroud)

我试图运行的命令:

semanage port -a -t http_port_t -p tcp 27960
Run Code Online (Sandbox Code Playgroud)

当前内核:

 2.6.32-220.4.1.el6.x86_64 #1 SMP Tue Jan 24 02:13:44 GMT 2012 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

当前策略coreutils-python:

2.0.83-19.18.el6
Run Code Online (Sandbox Code Playgroud)

最后,当前的 selinux 设置:

SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted
Run Code Online (Sandbox Code Playgroud)

有人遇到过这个问题吗?如果是你是怎么解决的?

提前致谢

- 编辑 -

我检查了 /var/log/messages ,看起来 semanage 由于“内核:内存不足:杀死进程 1648(semanage)得分 769 或牺牲孩子”而失败。这很奇怪,因为我有一个几乎精确的克隆(在 linode.com 上),具有相同的 cpu/mem 规格并且命令运行良好。

free -t -m 在 semanage 不断失败的服务器上:

             total       used       free     shared    buffers     cached
Mem:           489         79        410          0          0         11
-/+ buffers/cache:         67        422
Swap:            0          0          0
Total:         489         79        410
Run Code Online (Sandbox Code Playgroud)

小智 7

在 Digital Ocean 上有一个非常相似的问题。某些 VM 主机(Digital Ocean、AWS、Rackspace)可能默认没有启用交换空间,这显然会导致semanage被杀死。

在我玩过的 CentOS 7 虚拟机上,semanage在执行命令之前需要 300 到 400 MB 的可用 RAM,才能成功运行而不会被杀死。