Запуск команд от пользователя apache с root-привилегиями.

Добрый вечер. Пишу WEB-интерфейс на php, которому время от времени нужно выполнять небольшой ряд команд от суперпользователя.

В убунте, это делалось так:

  1. Открывался файл /etc/sudoers
  2. Писалось туда что-то типа www-data ALL = NOPASSWD: /usr/sbin/iptables
  3. Потом внутри php-скрипта писалось @ exec(“sudo /usr/sbin/iptables -A POSTROUTIND e.t.c…”)@

Поскольку юзеру www-data было разрешено запускать эту команду в режиме суперюзера, то все работало.

Как сделать аналогичное решение в CDS? Уже выяснил, что апач работает из под одноименного пользователя apache. Но ведь в генте sudo нет? Как это решается здесь? Вводить apache в группу рута совсем не хочется. Хочется разрешить только определенный диапазон команд: ни больше ни меньше.

Спасибо!

Но ведь в генте sudo нет?

есть
eix app-admin/sudo

Открывался файл /etc/sudoers

В gentoo принято вместо изменения конфига устанавливаемого из пакета, прописывать в другой, если это предусмотрено пакетом (при обновлении пакета не придется заморачиваться с измененными файлами).
Что касается sudo - есть директория /etc/sudoers.d/ в которой вы можете создать свой конфиг, и прописать в него нужные права и команды.

PS
Я не знаток sudo, но насколько я знаю в нем нельзя контролировать параметры передаваемые исполняемой команде.
Если это так, то наверно стоит создать свои скрипты уточняющие “область действия” исполняемых команд, вроде как:
# cat /usr/local/bin/cl-usermod-samba

#!/bin/sh
 # .... проверка передаваемых параметров на валидность
cl-usermod "@$" samba

А без eix app-admin/sudo как-то штатными средствами можно такое реализовать?

А без eix app-admin/sudo как-то штатными средствами можно такое реализовать?

eix - утилита для поиска по пакетам
Извините, предположил что вы знакомы с командами поиска/установки/удаления программ.
Предлагаю вам почитать документацию о:

  • том что такое portage в общем
  • и о утилите установки/удаления пакетов emerge в частности
  • а также об eix - утилите облегчающей поиск по пакетам

После этого вам будет довольно просто установить штатными средствами пакет app-admin/sudo
PS
сделать это можно командой
emerge -avt app-admin/sudo
но я бы вам очень порекомендовал почитать приведенные выше ссылки на документацию.

Немного знаком, Apache+PHP удалось установить, как минимум.

Этот вопрос связан с установкой программы, которую я пишу на cds. Чтобы меньше сторонних программ использовать. Если нет вариантов со штатными средствами, то просто включу этот пакет в документацию по установке.

В любом случае спасибо!

Подскажите что у меня творится с машиной?

Раз:
@calculate ~ # emerge --sync

Starting git pull in /usr/portage…
fatal: unable to connect to git.calculate.ru:
git.calculate.ru[0: 85.235.195.146]: errno=Connection timed out

!!! git pull error in /usr/portage.@

Интернет есть. После того как устанавливал apache, php, quota ничего не менял…

Видать сбой какой был, попробуйте снова
Если снова не будет работать, воспользуйтесь информацией отсюда
ищите Для миграции портежей на Git

Пардоньте, ступил на ваерволе. Проблемы нет.