Intereting Posts
php – найти, если массив содержит элемент Использование php, как вставить текст без перезаписи в начало текстового файла Аудиофайл для формирования волны с использованием PHP file_get_contents (): поток не поддерживает поиск / Когда поведение PHP об этом изменилось? JSON – косые черты не ускользают Где хранятся глобальные переменные, такие как $ _GLOBAL, $ _POST и т. Д.? Как выводить результаты запроса MySQL, в котором используются псевдонимы? Свойство объекта массива php Не может включать пакет груши, который определенно существует (и установлен) как использовать dom php parser Отображение данных из базы данных SQL в выпадающем меню необходимо обновить содержимое страницы Маршрут Laravel 4 с неограниченным количеством параметров Как удалить любой специальный символ из массива php? WooCommerce: получить данные Json в многомерном массиве, соответствующие произвольному полю ACF

От PHP / Apache, exec () или system () от root: "sudo: не удалось открыть систему аудита: Permission denied"

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

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

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

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

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

Ошибка, которую я получаю, это: sudo: не удалось открыть систему аудита: разрешение отклонено

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

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

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

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

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

Благодарю.

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

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

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