Установка и настройка sudo на Freebsd

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

Перейдем к установке sudo из портов FreeBSD. Выполняем:
cd /usr/ports/security/sudo

Устанавливаем.

После того как встало, редактируем файлик конфигурации:
ee /usr/local/etc/sudoers
В нём описаны привилегии пользователей.

По умолчанию там раскомментирована только одна строка:
root ALL=(ALL) ALL
которая позволяет пользователю root делать что угодно.
1) Если надо разрешить выполнять все программы пользователям, входящим в группу wheel используя свой пароль, то надо вписать строку:
%wheel ALL=(ALL) ALL
2) тоже самое, что и пункт 1, только без запроса пароля, то добавляем строку:
%wheel ALL=(ALL) NOPASSWD: ALL
3) Соответсвенно если надо дать права выполнять любые команды одному пользователю, то дописываем:
user ALL=(ALL) ALL
где
user – имя пользователя в системе.

4) Если надо разрешить членам группы users(должна быть в системе) перезагружать freebsd, то вписываем:
%users localhost=/sbin/shutdown -r now
5) В случае если надо дать права пользователям, находящимся в разных группах, то этих пользователей можно объединить в одну группу, опять же используя файлик sudoers. Например, у нас 2-а пользователя с именами user1 и user2. В ОС FreeBSD они находятся в разных группах, но этим пользователям надо разрешить выполнять reboot. В таком случае сначала объединяем их в одну группу(назовём её REBUSER) строчкой:
User_Alias REBUSER = user1, user2

А теперь разрешаем группе REBUSER перезагружать ОС:
REBUSER ALL=/sbin/reboot
Примечание: символ % перед REBUSER в этом случае не нужен.
Пользователи user1, user2 конечно же должны присутствовать в системе.
/sbin/reboot – команда для перезагрузки
Если надо создать несколько групп, то действие повторяем:
User_Alias название_группы = пользователь_1, пользователь_2
так можно создать множество групп, каждой из которых дать только определённые права.
6) Теперь представим ситуацию, что этой же группе REBUSER надо выполнять не одну команду, а список определённый.

В таком случае надо добавить строки:
User_Alias REBUSER = user1, user2
Cmnd_Alias COMND = /usr/bin/kill, /sbin/reboot, /sbin/shutdown -r now
REBUSER ALL=COMND

здесь как раз в строке Cmnd_Alias перечислен список разрешённых комманд, объединённых произвольным названием «COMND».
Псевдонимов для комманд можно создать несколько, например:
Cmnd_Alias COMND1 = …
Cmnd_Alias COMND2 = …
Cmnd_Alias COMND3 = …
И разрешить группе, только те, которые нужны, например:
REBUSER ALL=COMND1, COMND3
Примечание:
Названия псевдонимов (в примерах выше «REBUSER», «COMND») обязательно должны быть с большой буквы, иначе работать не будет.