Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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

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

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

человек setuid