Из PHP / Apache, exec () или system () программа от имени пользователя root: «sudo: невозможно открыть систему аудита: отказано в доступе» - PullRequest
3 голосов
/ 06 сентября 2011

Я потратил полдня, пытаясь выяснить это, и я провел много исследований.Я также знаком со многими существующими дискуссиями по этой теме, такими как эта: Как запустить PHP exec () от имени root?

К сожалению, ни одно из предложенных мной предложений 'мне показалось, что это работает для меня.

Прежде всего, я пишу что-то в спецификации, поэтому я не могу избежать этого.Кроме того, все машины будут находиться в частной сети, которая не подключена к Интернету.Хотя важно иметь НЕКОТОРЫЕ средства безопасности, в большинстве случаев необходимо предотвращать ошибки.Моя цель - настроить несколько «тонких серверов».С помощью сценария PHP мне нужно иметь возможность изменять конфигурацию сети (статическую или DHCP) и перезапускать сеть.

Первое, что я попробовал, было написать программу на языке Си, которая является SUID root.Он читает, изменяет и записывает файл конфигурации сети.Если я запускаю его как обычный пользователь, он работает просто отлично и может получить доступ и изменить файл, принадлежащий root.Но если я запускаю его из скрипта PHP, я получаю ошибки доступа.Похоже, что Apache каким-то образом предотвращает корень SUID.

Основываясь на предложениях других обсуждений, я попробовал метод "sudo".Временно я добавил это в / etc / sudoers: apache ALL = (ALL) NOPASSWD: ALL

Я получаю следующую ошибку: sudo: невозможно открыть систему аудита: разрешение отклонено

Согласнона этой странице на русском это происходит потому, что такие системы, как RHEL (я использую Fedora) по умолчанию требуют requiretty для sudoers.Поэтому я добавил эту строку в / etc / sudoers: по умолчанию! Requiretty

Я все еще получаю ту же ошибку.sudo: невозможно открыть систему аудита: в доступе отказано

Я полностью зашел в тупик.То есть, если я не хочу запускать сам Apache от имени root, что будет более неудобно, чем что-либо еще.

Может кто-нибудь высказать какие-либо предложения здесь?Я понимаю, что я пытаюсь сделать это странно.Бьюсь об заклад, некоторые из вас укажут мне на какую-то существующую систему для удаленной настройки компьютеров Fedora (и теперь, когда я об этом подумаю, я собираюсь разобраться с этим прямо сейчас).

Кстати, язапуск SELinux, потому что именно так настроена Fedora 15 по умолчанию.

Спасибо.

РЕДАКТИРОВАТЬ:
Я нашел этот учебник:
http://www.cyberciti.biz/faq/howto-disable-httpd-selinux-security-protection/

К сожалению, когда я запускаю "setsebool httpd_disable_trans 1", я получаю сообщение об ошибке:
Не удалось изменить активные логические значения: недопустимый логический

Я также пытался напрямую редактировать "/ etc / selinux / target / booleans",не существует и перезапускает apache, но это тоже не сработало.

1 Ответ

4 голосов
/ 30 октября 2012

Вы пробовали setenforce 0 (временно отключить SELinux), audit2allow или полностью отключить SELinux? Смотрите: Веб-страница PHP не запускает команду unix даже после обновления sudoers

...