Альтернатива sudo: op

()

Введение

Многие системные администраторы используют sudo, чтобы позволять отдельным пользователям (или целым группам) выполнять определёнными команды с правами суперпользователя или другого простого пользователя.

Неудобством sudo является единый файл конфигурации для всех пользователей и команд и относительная сложность синтаксиса этого файла.

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

Пользователи Debian-based систем (в частности Ubunutu, Xandros, Mint и ряда других) могут установить op командой:

apt-get install op

Далее приступим к настройке. Хороший пример файла конфигурации сразу после установки можно найти в файле: /usr/share/doc/op/examples/op.conf.complex. Так же кое-какие знания можно почерпнуть из файла /etc/op/op.conf.

Однако самое интересное это возможность разбить конфигурацию на маленькие файлы, расположенные в директории /etc/op/op.d. Например можно разбить конфигурацию на несколько файлов, по имени каждого пользователя. Далее будем рассмотрено несколько примеров таких файлов.

Задача #1

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

Решение: Создадим файл /etc/op/op.d/wwwadmin.conf следующего содержания:

www_restart	/usr/sbin/invoke-rc.d lighttpd restart; user=wwwadmin environment

И установим на файл правильные права (600):

chmod 600 /etc/op/op.d/wwwadmin.conf

Всё! Теперь пользователь wwwadmin может перезапустить веб-сервер командой:

op www_restart

Так же в этом примере сразу проиллюстрирована возможность создания мнемонических имён (алисов) для команд, которая выгодно отличает op от sudo.

Задача #2

Постановка задачи: Пользователи, входящие в группу admins, должны иметь возможность получить доступ к оболочке с правами суперпользователя. Получение доступа должно подтверждаться вводом пользователем собственного пароля.

Решение: Создадим файл /etc/op/op.d/admins.conf следующего содержания:

shell		/bin/su -;		group=admins environment password

И установим на файл правильные права (600):

chmod 600 /etc/op/op.d/admins.conf

Теперь пользователи из группы admins могут получить полный доступ к системе запустив команду:

op shell

И введя свой пароль в ответ на запрос утилиты.

Задача #3

Постановка задачи: пользователи из группы monitoring должны иметь возможность запускать команды tcpdump с произвольным набором параметров, tail -f для любого файла и greylist с параметром stats или list.

Решение: Создадим файл /etc/op/op.d/monitoring.conf следующего содержания:

PRIVELEGED_GROUP=monitoring

tail            /usr/bin/tail -f $1;    group=PRIVELEGED_GROUP

tcpdump         /usr/sbin/tcpdump $*;   group=PRIVELEGED_GROUP environment

greylist        /usr/bin/greylist $1;
                group=PRIVELEGED_GROUP
                environment

И установим на файл правильные права (600):

chmod 600 /etc/op/op.d/monitoring.conf

В этом примере показано использование переменных внутри файла конфигурации, а так же контроль параметров, передаваемых программам.

Заключение

op является прекрасной заменой sudo, обладая с одной стороны не меньшим функционалом, а с другой - более гибкой системой конфигурации.

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

Так же не следует забывать и про то, что системный администратор может быть хорошо знаком с sudo, и совсем не знаком с op. В этом случае даже сложная конфигурация будет быстрее сделана с sudo, чем с op.

Однако в любом случае функционал op заслуживает того, чтобы изучить этот инструмент

Ключевые слова: op, sudo.

Подписаться на обновления: RSS-лента Канал в TamTam Telegram канал Канал в ICQ

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

Новый комментарий

Жирный текстКурсивный текстПодчёркнутый текстЗачёркнутый текстПрограммный кодСсылкаИзображение




© 2006-2024 Вадим Калинников aka MooSE
Политика конфиденциальности