Утилита 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