sudo-распределение полномочий между пользователями во FreeBSD

Как известно всегда сидеть под root’ом не хорошо, именно для распределения полномочий и создана sudo, а именно для запуска программ от имени другого пользователя. Таким образом, если сервер на FreeBSD обслуживается несколькими пользователями и у каждого своя задача, дальше которой он вникать не должен, то sudo — то что нужно.
Перейдем к установке sudo из портов FreeBSD. Выполняем:
cd /usr/ports/security/sudo
make config

Опции сборки:
Options for sudo 1.7.4.4_1
[ ] LDAP With LDAP support
[ ] INSULTS With all insults
[ ] DISABLE_ROOT_SUDO Disable root sudo
[ ] DISABLE_AUTH Disable authentication
[ ] NOARGS_SHELL Enable no arguments shell

Устанавливаем:
make BATCH=yes -C/usr/ports/security/sudo install clean
rehash

После того как встало, редактируем файлик конфигурации:
cp /usr/local/etc/sudoers /usr/local/etc/sudoers_0
ee /usr/local/etc/sudoers

В нём описаны привилегии пользователей.
По умолчанию там раскомментирована только одна строка:
root ALL=(ALL) ALL
которая позволяет пользователю root делать что угодно.
На самом деле root и так может делать что угодно, но раз написано, значит так надо.

Далее примеры строк для добавления в файл /usr/local/etc/sudoers.

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») обязательно должны быть с большой буквы, иначе работать не будет.

Вот вобщем то и весь необходимый минимум.

Добавить комментарий