Запуск сценариев оболочки с помощью sudo через мое веб-приложение - PullRequest
1 голос
/ 08 июня 2010

У меня есть некоторые функции, которые взаимодействуют с ОС сервера в моем веб-приложении. Я написал скрипт bash и могу запустить его из своего приложения.

Однако некоторые функции скрипта требуют привилегий суперпользователя.

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

Ответы [ 2 ]

4 голосов
/ 08 июня 2010

Какой бы способ вы ни делали, это может быть очень опасно. Можете ли вы написать локального демона с необходимыми привилегиями и использовать некоторые из шин сообщений, которые генерируют / потребляют события, которые будут обрабатываться этим требующим супер-пользователя компонентом?

Таким образом, вы можете тщательно проверить содержимое сообщения и уменьшить вероятность его использования.

2 голосов
/ 08 июня 2010

Какой самый разумный способ безопасно запустить этот скрипт?

Если вы действительно заботитесь о безопасности, потребуйте, чтобы веб-клиент предоставил ключевую фразу, и используйте ключ ssh. Затем запустите сценарий под ssh-agent, а для чувствительных частей выполните ssh root@localhost command.... Вы, вероятно, захотите создать пары ключей ssh ​​как раз для этой цели, поскольку ввод обычной парольной фразы SSH в веб-форму - это не то, чем я бы занимался (в любом случае, кто доверяет вашей веб-форме?).

Если вам не нужна такая большая безопасность, и если вы действительно, действительно считаете, что ваша веб-форма может правильно аутентифицировать своих пользователей, без каких-либо ошибок , вы можете вместо этого решить довериться веб-серверу запускать нужные вам команды. (Я бы не стал.) В этом случае я бы использовал файл /etc/sudoers, чтобы позволить веб-серверу запускать интересующие команды без предоставления пароля. Тогда ваш скрипт должен использовать sudo для запуска этих команд.

...