Как выполнить (некоторые) команды CGI от имени пользователя root

Я хочу поместить простой скрипт CGI на мой сервер APACHE. Я хотел бы написать это, возможно, в C (но также и в PERL, если я хочу).

Проблема в том, что он должен содержать несколько строк, которые могут быть выполнены только пользователем root (iptables например), тогда как webuser - это пользователь, работающий на сервере.

Как я могу сделать эти строки исполняемыми корнем?

2 ответа

Решение

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

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

Для sudo уже есть много вопросов о Serverfault и в других местах, а также есть справочная страница для этого: man sudo а также man sudoers,

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

Вы можете использовать setuid в скрипте. Исполняемый файл с setuid выполняется как владелец любого обычного пользователя. (/bin/ping например.)

Будьте очень, очень осторожны с этим. Убедитесь, что скрипт не может быть перезаписан вредоносным кодом и т. Д.

человек сет

Другие вопросы по тегам