Назад | Перейти на главную страницу

У сценария инициализации есть проблемы с разрешениями, но запуск с / bin / sh решает их?

Может кто-нибудь сказать мне, что здесь происходит? Насколько мне известно, эти способы выполнения сценария инициализации идентичны.

box:~# whoami
root

box:~# /etc/init.d/nginx restart
nginx: [emerg] open() "/var/run/nginx.pid" failed (13: Permission denied)
nginx: configuration file /etc/nginx/nginx.conf test failed

box:~# service nginx restart
nginx: [emerg] open() "/var/run/nginx.pid" failed (13: Permission denied)
nginx: configuration file /etc/nginx/nginx.conf test failed

box:~# head -1 /etc/init.d/nginx
#!/bin/sh

box:~# /bin/sh /etc/init.d/nginx restart
Stopping nginx:                                            [  OK  ]
Starting nginx:                                            [  OK  ]

Я не понимаю, почему это сработало и почему вообще существует проблема с разрешением. Сценарий инициализации работает от имени пользователя root и должен иметь доступ к файлу pid.

Обновление 1: немного предыстории

Я пробовал ваш стандартный способ устранения неполадок "проблемы с разрешениями", дошел до того, что сделал файл pid доступным для чтения / записи. Раньше я получал ту же ошибку разрешений в журнале ошибок, который находился в произвольном месте: на монтировании. Я безуспешно пытался размонтировать / перемонтировать. После этого я применил метод «sh», который сработал. После этого, похоже, ошибка разрешений журнала исчезла, хотя теперь я вижу ту же ошибку в файле pid (как вы можете видеть).

Обновление 2: в ответ на комментарии

box3:~# ls -alZ /var/run/nginx.pid
-rw-rw-rw-. root root unconfined_u:object_r:var_run_t:s0 /var/run/nginx.pid
box3:~# ls -alZ /etc/init.d/nginx
-rwxr-xr-x. root root system_u:object_r:httpd_initrc_exec_t:s0 /etc/init.d/nginx

Обновление 3: это определенно проблема SELinux

Отключение SELinux решает проблему. Мне нужно прочитать о контекстах безопасности SELinux.

box:~# setenforce 0
box:~# getenforce
Permissive
box:~# /etc/init.d/nginx restart
Stopping nginx:                                            [  OK  ]
Starting nginx:                                            [  OK  ]
box:~# setenforce 1
box:~# /etc/init.d/nginx restart
nginx: [emerg] open() "/mnt1/logs/nginx-error.log" failed (13: Permission denied)
nginx: configuration file /etc/nginx/nginx.conf test failed