Любопытно, что звучит демон. Вики по адресу http://wiki.centos.org/TipsAndTricks/SelinuxBooleans говорит, что это «звучащий демон», но я не нахожу много дополнительной информации в Интернете.
Чтобы заставить nginx (настроенный для привязки к сокету unix) запускаться с systemctl, мне нужно добавить правило принуждения типа на httpd_t к soundd_port_t: tcp_socket. Более конкретно:
sudo systemctl status nginx.service
не удается с сообщением:
nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled)
Active: failed (Result: exit-code) since Mon 2015-07-13 19:53:57 EDT; 7s ago
Process: 2699 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=1/FAILURE)
Jul 13 19:53:57 localhost.localdomain nginx[2699]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Jul 13 19:53:57 localhost.localdomain nginx[2699]: nginx: [emerg] bind() to 0.0.0.0:8000 failed (13: Permissi...ied)
Jul 13 19:53:57 localhost.localdomain nginx[2699]: nginx: configuration file /etc/nginx/nginx.conf test failed
Jul 13 19:53:57 localhost.localdomain systemd[1]: nginx.service: control process exited, code=exited status=1
Jul 13 19:53:57 localhost.localdomain systemd[1]: Failed to start The nginx HTTP and reverse proxy server.
Jul 13 19:53:57 localhost.localdomain systemd[1]: Unit nginx.service entered failed state.
Далее делаю:
sudo cat /var/log/audit/audit.log | audit2allow
и увидеть:
#============= httpd_t ==============
allow httpd_t soundd_port_t:tcp_socket name_bind;
После импорта этого модуля nginx может запускаться.
Если вы выполните следующую команду, вы увидите, что порт 8000 / tcp определен в SELinux как soundd_port_t
:
# semanage port -l | grep soundd soundd_port_t tcp 8000, 9433, 16001
Это не означает, что nginx имеет какое-либо отношение к soundd, просто он пытается привязаться к tcp-порту 8000. Я предлагаю вам использовать диапазон портов, выделенный для использования nginx / прокси, http_cache_port_t
:
# semanage port -l | grep http_cache_port_t http_cache_port_t tcp 8080, 8118, 8123, 10001-10010
Если вы слушаете порт 8080 вместо 8000, вам не придется перестраивать политику SELinux.
После нескольких часов поисков в этом статья оказаться полезным для пользователей CentOS
Я следил за всей статьей, но, как мне казалось, решил проблему с помощью следующих команд:
yum install -y policycoreutils-{python,devel}
ausearch -m avc -se httpd_t | audit2allow -M nginx
semodule -i nginx.pp
usermod -a -G user nginx
chmod g+rx /home/user/
Для предоставления разрешений замените пользователя своим фактическим пользователем. То же самое относится к каталогу под командой chmod.