Как выполнить (некоторые) команды CGI от имени пользователя root
Я хочу поместить простой скрипт CGI на мой сервер APACHE. Я хотел бы написать это, возможно, в C (но также и в PERL, если я хочу).
Проблема в том, что он должен содержать несколько строк, которые могут быть выполнены только пользователем root (iptables
например), тогда как webuser - это пользователь, работающий на сервере.
Как я могу сделать эти строки исполняемыми корнем?
2 ответа
Одним из решений может быть написание сценария-обертки для соответствующих команд, надежная защита этого сценария и использование для этого sudo без пароля.
Редактировать: скрипт-обёртка - это просто какой-то короткий скрипт оболочки, в который вы загружаете критические команды. Вы можете обеспечить это (например, сделать его доступным только для пользователя Apache).
Для sudo уже есть много вопросов о Serverfault и в других местах, а также есть справочная страница для этого: man sudo
а также man sudoers
,
Если после прочтения доступных документов у вас возникнут трудности, вы все равно можете задать вопрос, относящийся к вашей проблеме.
Вы можете использовать setuid в скрипте. Исполняемый файл с setuid выполняется как владелец любого обычного пользователя. (/bin/ping
например.)
Будьте очень, очень осторожны с этим. Убедитесь, что скрипт не может быть перезаписан вредоносным кодом и т. Д.