FreeBSD: установка и быстрая настройка SUDO

Автор: | 09/17/2012
 

Утилита sudo используется для замены стандартному su, и позволяет получить права пользователя root без указания его пароля.

Вообщем, возможности этой утилиты намного шире, но тут мы расммотрим её именно в такой конфигурации.

Настройки аналогичны как во FreeBSD, так и Linux-системах.

Переходим в каталог с портом sudo:

# cd /usr/ports/security/sudo

Выполняем конфигурирование:

# make config

И устанавливаем:

# make install clean

Настройки храянтся в файле /usr/local/etc/sudoers, но для редактирования можно использовать команду visudo. Файл будет открыт для редактирования текстовым редактором по-умолчанию, заданным в конфигурации консоли, напрмиер:

export EDITOR=vim

Основным примером в файле послужит строка:

## User privilege specification
##
root ALL=(ALL) ALL

Тут:

root — пользователь, для которого задаются права;
ALL= — имена хостов, с которых разрешено выполнение команд;
(ALL) — пользователи, от имени которых пользователю можно выполнять команды. Можно расширить до (ALL:ALL) — тогда правило будет включать в себя ПОЛЬЗОВАТЕЛЬ:ГРУППА;
последняя ALL — команды, которые можно выполнять.

Добавим аналогичную запись для пользователя setevoy:

setevoy ALL=(ALL) ALL

Или изменим её, разрешив пользователю setevoy запуск только с хоста akira, только от своего имени, и только выполнение скрипта /root/my.sh, и без запроса пароля:

setevoy   akira=NOPASSWD:/root/my.sh

На этом, в принципе, самая прсотая настройка может быть завершена — основное сделано. Теперь, что бы получить права пользователя root можно не вводить su и пароль root, а просто выполнить:

setevoy $ sudo make install

и ввести свой пароль.

Что бы постоянно не вводить sudo перед каждой командой — можно выполнить:

$ sudo -s

В таком случае — пользователь получит права root до тех пор, пока не выйдет сам, например комбинацей Ctrl+D.

Другие примеры настройки.

Разрешить пользователю testuser выполнять команду apachectl restart. Для этого — добавляем строку:

testuser ALL=/usr/local/sbin/apachectl

Или то же самое, но без запроса пароля:

testuser ALL=NOPASSWD:/usr/local/sbin/apachectl

Другие примеры можно посмотреть в самом файле /usr/local/etc/sudoers.

Один из них — разрешить использование sudo и всех команд, требующих привилегий root для группы sudo:

%sudo  ALL=(ALL) ALL

Утилита PW в системе FreeBSD.

Кратко — об утилите pw в контексте самой статьи про sudo.

Добавляем группу sudo в систему:

# pw groupadd sudo

Проверяем:

# cat /etc/group | grep sudo
sudo:*:1008:

И добавляем в группу пользователя:

# pw groupmod sudo -M setevoy

Что бы добавить других пользователей — используем ключ -m вместо -M:

# pw groupmod sudo -m testuser

И проверяем список группы:

# pw groupshow sudo
sudo:*:1008:setevoy,testuser