Безопасно выполнить сценарий оболочки с помощью sudo через веб-интерфейс

Я ищу способ безопасного выполнения сценария оболочки с помощью sudo через веб-интерфейс. Безопасность здесь является главной заботой. Я не хочу предоставлять свой файл PHP для полного доступа к sudo. Каким будет лучший способ добиться этого?


person Vipin    schedule 23.07.2020    source источник
comment
Пожалуйста, добавьте больше деталей, ваш вопрос не ясен.   -  person Kaushal    schedule 23.07.2020
comment
Предоставьте вашему пользователю веб-сервера доступ sudo для запуска только одной команды и только от имени конкретного пользователя.   -  person that other guy    schedule 24.07.2020
comment
@thatotherguy, не могли бы вы подробнее рассказать, как я могу предоставить доступ для одной команды   -  person Vipin    schedule 24.07.2020


Ответы (1)


Лучшим решением было бы, чтобы ваш php-файл выполнял скрипт bash, который выполняет команды sudo, поскольку не рекомендуется предоставлять пользователю веб-сервера root/admin доступ.

С файлом bash вы можете контролировать то, что выполняется, будучи уверенным, что его нельзя легко изменить, и даже передавать переменные, если это необходимо. IE выполняет разные команды sudo в зависимости от переданной переменной.

person LUX    schedule 23.07.2020
comment
Спасибо за ответ, я пытаюсь это сделать только с помощью сценария bash, но мой сценарий bash требует некоторого разрешения sudo для правильного выполнения. Я могу легко запустить его с разрешением sudo, но меня больше всего беспокоит безопасность. Не могли бы вы рассказать подробнее, как запустить этот скрипт bash с разрешением sudo через веб-интерфейс без ущерба для кода, и это также необходимо защитить. - person Vipin; 24.07.2020
comment
@Vipin, выполняющий команду оболочки через Интернет, не содержит кода. вы бы отправили буквальную команду оболочки для выполнения файла, как если бы вы были на консоли. Поскольку это делается в фоновом режиме, где исходный код будет виден только на стороне сервера, конечный пользователь не может изменить эту команду, если только вы не сделаете ее динамической переменной, что я бы вообще не рекомендовал! моим лучшим решением было бы создать 2 файла, если вам действительно нужно разрешение sudo для выполнения. 1, который выполняет сервер, который содержит инструкции для выполнения другого файла с правами администратора. - person LUX; 26.09.2020