Запускать команду sudo из сценария PHP - PullRequest
0 голосов
/ 13 сентября 2011

Я хочу запустить команду "sudo" из PHP, и я прочитал все учебные материалы в Интернете, но ни одно решение не работает.По крайней мере, я добавил пользователя LAMP по умолчанию "nobody" в корневую группу - но безрезультатно.

echo exec("sudo echo hi");

Примечание по безопасности:

Хотянекоторые люди здесь опровергают это из-за их твердой уверенности в том, что это создаст большую дыру в безопасности, которая разрушит весь Интернет, для этого есть несколько веских случаев, например, при тестировании.Для запуска сценариев установки из пакетов PHPUnit / Behat для настройки среды может потребоваться разрешение sudo.Эти сценарии недоступны из приложения и не создают дыр в безопасности, поскольку фактически они помогают обеспечить отсутствие таких дыр.

Ответы [ 5 ]

9 голосов
/ 13 сентября 2011

Добавление пользователей в корневую группу не дает им права sudo, для этого предназначен / etc / sudoers.

Если честно, то, что вы пытаетесь сделать, звучит как гигантская дыра в безопасности

РЕДАКТИРОВАТЬ: скопировано из комментариев ...

Мое предложение будет примерно таким,установка cron под пользователем root, который проверяет файл или базу данных, в которую может писать ваш PHP, анализирует и удаляет указанных вами пользователей.

1 голос
/ 13 сентября 2011

Я думаю, что вы должны запустить chmod u + s в вашем скрипте. Или может быть ug + s (в зависимости от ваших потребностей). Таким образом, у вас будет доступ su.

0 голосов
/ 02 сентября 2015

Все средства безопасности в стороне, это возможно. Действительно, как заявил Джон Стерлинг, добавление пользователей в определенную группу вам не поможет. Вам нужно указать правильные строки sudo с "visudo" в качестве пользователя root, например:

nobody ALL=(root) NOPASSWD:/usr/bin/echo hi

Это позволит пользователю root выполнить команду "/ usr / bin / echo hi" в качестве пользователя root.

Теперь для выполнения через PHP:

echo exec("/usr/bin/sudo -u root /usr/bin/echo hi");
0 голосов
/ 16 октября 2014
<?php

phpinfo();

?>

Сначала вам нужно найти пользователя вашего веб-сервера и предоставить ему привилегии root, приведенный выше код скажет вам об этом, но, как другие говорят, ЭТО МАССОВАЯ ОТДЕЛКА БЕЗОПАСНОСТИ, и я настоятельно не рекомендую это.

0 голосов
/ 13 сентября 2011

Вы должны добавить пользователя своего веб-сервера в /etc/sudoers файл

...