Безопасно ли позволять www-данным выполнять команды без пароля?

Мне нужно знать, безопасно ли разрешать www-данным выполнять команды sudo без пароля?

Я использую его для выполнения команд терминала из сценария php, но это не подходит для наших рабочих серверов?

вот файл sudoers.

www-data ALL=(ALL) NOPASSWD:ALL

Вот пример команды, которую я пытаюсь запустить на внешний удаленный сервер.
Я использую ssh2_exec для запуска этого.

sudo service apache2 status;sudo service mysql status;sudo service mongod status

Если нет, то есть ли лучший способ сделать это?

0

Решение

По сути, это делает ваш веб-сервер основным вектором для атак на сайт. Если кто-то может найти способ загрузить какой-либо код, или когда-нибудь наступит момент, когда вы shell_exec с помощью строки пользовательской переменной люди могут выполнять привилегированный произвольный код на вашем сайте.

Это не подходит для публично доступных серверов.

Лучший способ сделать это — написать на вашей системе программу, которая работает в crontab и распечатывает эти значения в плоский файл, затем открывает этот файл в PHP.

например

#!/bin/bash

service apache2 status
service mysql status
service mongod status

Добавьте это к пользователю root с помощью sudo crontab -e

* * * * * /path/to/script > /home/my-user/file

Возможно, вам также понадобится сделать файл глобально читаемым (после его создания); это просто статус, так что, вероятно, безопасно:

sudo chmod 777 /home/my-user/file

Тогда в PHP

<?php

$status = file_get_contents('/home/my-user/file');
echo $status;
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]