Веб-страница PHP не запускает команду unix даже после обновления sudoers

StackOverflow https://stackoverflow.com/questions/113728

  •  02-07-2019
  •  | 
  •  

Вопрос

По сути, я пытаюсь перезапустить службу с веб-страницы PHP.

Вот код:

<?php
exec ('/usr/bin/sudo /etc/init.d/portmap restart');
?>

Но в /var/log/httpd/error_log, Я получил

невозможно перейти на sudoers gid:операция не разрешена

и в /var/log/messages я получаю

22 сентября 15:01:56 ядро ​​ри:аудит(1222063316.536:777):АВК:отказано { getattr } для pid=4851 comm="sh" name="var" dev=dm-0 ino=114241 scontext=root:system_r:httpd_sys_script_t tcontext=system_u:object_r:var_t tclass=dir
22 сентября 15:01:56 ядро ​​ри:аудит(1222063316.549:778):АВК:отклонено { setrlimit } для pid=4851 comm="sudo" scontext=root:system_r:httpd_sys_script_t tcontext=root:system_r:httpd_sys_script_t tclass=process
22 сентября 15:01:56 ядро ​​ри:аудит(1222063316.565:779):АВК:запрещено {прочитать} для pid=4851 comm="sudo" name="shadow" dev=dm-0 ino=379669 scontext=root:system_r:httpd_sys_script_t tcontext=system_u:object_r:shadow_t tclass=file
22 сентября 15:01:56 ядро ​​ри:аудит(1222063316.568:780):АВК:запрещено {прочитать} для pid=4851 comm="sudo" name="shadow" dev=dm-0 ino=379669 scontext=root:system_r:httpd_sys_script_t tcontext=system_u:object_r:shadow_t tclass=file
22 сентября 15:01:56 ядро ​​ри:аудит(1222063316.571:781):АВК:отклонено { setgid } для pid=4851 comm="sudo" option=6 scontext=root:system_r:httpd_sys_script_t tcontext=root:system_r:httpd_sys_script_t tclass=capability
22 сентября 15:01:56 ядро ​​ри:аудит(1222063316.574:782):АВК:отклонено { setuid } для pid=4851 comm="sudo" option=7 scontext=root:system_r:httpd_sys_script_t tcontext=root:system_r:httpd_sys_script_t tclass=capability
22 сентября 15:01:56 ядро ​​ри:аудит(1222063316.577:783):АВК:отклонено { setgid } для pid=4851 comm="sudo" option=6 scontext=root:system_r:httpd_sys_script_t tcontext=root:system_r:httpd_sys_script_t tclass=capability

В своем визуальном изображении я добавил эти строки

User_Alias ​​WWW=apache

WWW ALL=(ВСЕ) NOPASSWD:ВСЕ

Не могли бы вы мне помочь ?Я делаю что-то неправильно ?

Спасибо за вашу помощь,

тиБоун

Это было полезно?

Решение

На данный момент проблема не в sudo, а в SELinux, который (разумно) настроен таким образом, чтобы запретить HTTPD получать root-права.
Вам нужно будет либо явно разрешить это (вы можете использовать аудит2разрешить для этого) или вместо этого установите разрешительный режим SELinux.Я бы предложил первое.

Другие советы

Ошибка, которую вы получаете, похоже, связана с вашей конфигурацией SELinux.Вы можете попробовать временно отключить это.

Кроме того, я настоятельно рекомендую вам изменить конфигурацию sudo, сделав ее более строгой.

User_Alias WWW=apache
Cmnd_Alias WEBCMDS=/etc/init.d/portmap
WWW ALL=NOPASSWD: WEBCMDS

Недавно я столкнулся с проблемой, и принятый выше ответ помог.Однако я хотел бы опубликовать этот ответ, чтобы уточнить то же самое, чтобы следующему человеку не нужно было тратить много времени, как мне!

Следуйте разделу 7 по следующей ссылке: https://wiki.centos.org/HowTos/SELinux.

Сделайте grep с httpd_sys_script_t.

В основном шаги следующие:

# grep httpd_sys_script_t /var/log/audit/audit.log | audit2allow -M httpdallowsudo
# semodule -i httpdallowsudo.pp

Вероятно, это связано с чем-то вроде попытки выполнить sudo в неинтерактивной оболочке.

Если вы выполните grep для «sudo» в журнале почты пользователей Apache, вы можете найти такие вещи

судо:извините, для запуска sudo у вас должен быть tty

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top