Введение
Многие системные администраторы используют 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 заслуживает того, чтобы изучить этот инструмент