CEX.io

воскресенье, 24 апреля 2011 г.

wrapper с дополнительными возможностями (chroot/jail,clearenv,unset_env,set_env,chdir etc.), на основе lighttpd wrapper

В сети я отыскал несколько настраиваемых wrapper:
такие как: exec-wrapper, execwrap
  • первый это простой генератор настраиваемой "обертки(wrapper)", а именно выполняемого файла с возможностью настройки переменных окружения и установки прав SUID, SGID на выполняемый файл. возможность chroot/jail тут отсутствует.
  • второй это "обертка(wrapper)" для lighttpd web сервера. Очень гибкая версия с дополнительными проверками прав при запуске, но к сожалению настройка переменных окружения при запуске отсутствует. Так же отсутствует chroot/jail.
Мне не подошел ни первый вариант, ни второй. Пришлось написать свою версию "обертки(wrapper)" объединив и улучшив эти два варианта, добавив возможность chroot. За основу взят второй вариант, patch для которого приведен ниже. Из первого была взята только идея, но реализацию пришлось поменять, для лучшей переносимости.

создадим папку проекта:
mkdir jail-wrap; cd jail-wrap
в папке создадим следующие файлы:

execwrap.patch:


configure.ac:


Makefile.am:


build.sh:


Выполним следующие команды:
chmod 755 build.sh
./build.sh

результатом работы будет файл конфигурации:
configure

пример использования:
./configure --prefix=/usr \
    --program-prefix=test- --program-suffix=2 \
    --enable-chroot \
    --with-parent-uid=100 \
    SET_ENV=test1=1\\ntest2=2 \
    UNSET_ENV=testn1=1\\ntestn2=2

где SET_ENV,UNSET_ENV список переменных,
которые нужно установить/очистоить для разделения
переменных используется символ "\\n"

либо пример номер 2:
./configure --prefix=/usr \
    --program-prefix=whois- --program-suffix=2 \
    --with-parent-uid=100 --enable-chroot \
    SET_ENV=test1 \
    UNSET_ENV=test1

где SET_ENV,UNSET_ENV имена файлов, из которых будут браться
списки переменных. По одной в строке name=value.

и наконец выполним:
make
make install-strip

Скачать все файлы (вариант 1)
Скачать все файлы (вариант 2)

Комментариев нет: