Недавно я обновил один из своих серверов приложений до CentOS 6 (.2) и готовил его к производственному использованию, когда смогу решить следующую проблему; Всякий раз, когда я пытаюсь добавить собственный http-порт с помощью semanage, я получаю следующие сообщения об ошибках:
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) с такими же характеристиками процессора / памяти, и команда работает нормально.
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
Была очень похожая проблема на Digital Ocean. На некоторых хостах виртуальных машин (Digital Ocean, AWS, Rackspace) может НЕ быть включено пространство подкачки по умолчанию, что, по-видимому, вызывает semanage
быть убитым.
На виртуальных машинах CentOS 7, с которыми я играл, semanage
требовалось от 300 до 400 МБ свободной оперативной памяти перед выполнением команды, чтобы успешно работать и не быть убитым.
Обнаружил проблему, я забыл добавить диск подкачки, когда реализовал свое собственное ядро по сравнению с предварительно подготовленными ядрами. Когда я снова добавил диск подкачки, команда выполнилась нормально.