Веб-страница PHP не запускает команду Unix даже после обновления sudoers - PullRequest
2 голосов
/ 22 сентября 2008

Обычно я пытаюсь перезапустить сервис с веб-страницы 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 ri ядро: аудит (1222063316.536: 777): avc: запрещено {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 ri ядро: аудит (1222063316.549: 778): avc: отклонено {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 ri ядро: аудит (1222063316.565: 779): avc: запрещено {чтение} для 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 ri ядро: аудит (1222063316.568: 780): avc: отказано {чтение} для 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 ri ядро: аудит (1222063316.571: 781): avc: отказано {setgid} для pid = 4851 comm = возможность "sudo" = 6 scontext = root: system_r: httpd_sys_script_t tcontext = root: system_r: httpd_sys_script_t tclass = способность
22 сентября 15:01:56 ri ядро: аудит (1222063316.574: 782): avc: отказано {setuid} для pid = 4851 comm = возможность "sudo" = 7 scontext = root: system_r: httpd_sys_script_t tcontext = root: system_r: httpd_sys_script_t tclass = способность * * тысяча двадцать-одна 22 сентября 15:01:56 ri ядро: аудит (1222063316.577: 783): avc: отказано {setgid} для pid = 4851 comm = возможность "sudo" = 6 scontext = root: system_r: httpd_sys_script_t tcontext = root: system_r: httpd_sys_script_t tclass = способность

В моем visudo я добавил эти строки

User_Alias ​​WWW = apache

WWW ALL = (ALL) NOPASSWD: ALL

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

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

tiBoun

Ответы [ 4 ]

10 голосов
/ 22 сентября 2008

Проблема сейчас не в sudo, а в SELinux , который (разумно) настроен на запрет HTTPD получения корневых привилегий.
Вам необходимо либо явно разрешить это (вы можете использовать для этого audit2allow ), либо вместо этого установить SELinux в качестве разрешающего. Я бы предложил первое.

5 голосов
/ 22 сентября 2008

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

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

User_Alias WWW=apache
Cmnd_Alias WEBCMDS=/etc/init.d/portmap
WWW ALL=NOPASSWD: WEBCMDS
1 голос
/ 28 августа 2015

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

Следуйте разделу 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
0 голосов
/ 22 сентября 2008

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

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

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

...