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

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

我最近将我的一个应用程序服务器升级到 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

我尝试运行的命令:

semanage port -a -t http_port_t -p tcp 27960

当前内核:

 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

当前策略coreutils-python:

2.0.83-19.18.el6

最后,当前的 selinux 设置:

SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted

有人遇到过这个问题吗?如果遇到过,您是如何解决的?

提前致谢

- 编辑 -

我检查了 /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

答案1

在 Digital Ocean 上也遇到了类似的问题。某些 VM 主机(Digital Ocean、AWS、Rackspace)可能默认未启用交换空间,这显然会导致semanage被杀死。

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

答案2

发现问题了,当我实现自己的自定义内核而不是预装内核时,我忘记添加交换驱动器。当我重新添加交换驱动器时,命令运行正常。

相关内容