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