Настройка sudo, примеры использования

Итак, предлагаю вашему внимаю очень полезную программу для любой Unix подобной системы – sudo. В чем ее полезность ? Ее полезность раскрывается исходя из самой идеологии систем типа FreeBSD или Linux, а точнее в иерархии пользователей этих систем. Иерархия в принципе проста – есть пользователи и есть суперпользователь root.

Администрирование и серьезные изменения системы доступны только суперпользователю root, но все это осложняется тем что чтобы повысить свои привилегии до супер пользователя необходимо не только быть в группе wheel ( в FreeBSD в Linux дистрибутивах это не требуется ) но и знать этот самый пароль. Нет никаких проблем если вы единственный администратор системы вводите команду -

ifreebsd:~>su
Password:

Вводите пароль для суперпользователя root и все … теперь вы root а не тот пользователь под которым вы сейчас залогинились.
Но проблемы начинаются тогда когда не системе появляются несколько пользователей и когда некоторым из них необходимы некоторые полномочия которыми наделен только root. Подвергнуть систему опасности и сделать пароль root публичным ? ( кроме всего не забывайте что логирование действий суперпользователя может стать проблемой) Ведь когда способность нарушить работу ОС есть как минимум у нескольких человек и нет возможности вести логи по действиям root то ответственность за работу системы просто не на кого положить.

Вот тогда на помощь проходит программа sudo.
SUDO – способна исполнять операции из под root пользователя, можно прописать конкретно программы которые пользователь способен выполнять от имени суперпользователя системы. И ПАРОЛЬ root НЕ НУЖЕН.! Полномочия дается проверяя только действующий пароль пользователя, и все. И при этом – что очень важно ведется лог действий этого пользователя – и всегда можно установить виновника проблемы и четко определить проблему. Установка программы sudo на разных платформах -

FreeBSD 8.1

ifreebsd#/>cd /usr/ports/security/sudo

ifreebsd#…ports/security/sudo>make install clean

Linux Debian

ifreebsd#/>apt-get install sudo

Linux Fedora

ifreebsd#/>yum install sudo

После установки перейдем к конфигурации SUDO. Конфигурационный файл этой программы sudoers находиться в папку /etc/sudoers - если это Linux и в папке /usr/local/etc/sudoers – если вы настраиваете эту программу под FreeBSD.

Файл выглядит примерно следующим образом
# sudoers file.
#
# This file MUST be edited with the ‘visudo’ command as root.
# Failure to use ‘visudo’ may result in syntax or file permission errors
# that prevent sudo from running.
#
# See the sudoers man page for the details on how to write a sudoers file.
#
# Host alias specification
# User alias specification
# Cmnd alias specification
# Defaults specification
# Uncomment if needed to preserve environmental variables related to the
# FreeBSD pkg_* utilities and fetch.
#Defaults env_keep += “PKG_PATH PKG_DBDIR PKG_TMPDIR TMPDIR PACKAGEROOT PACKAGESITE PKGDIR FTP_PASSIVE_MODE”
# Additionally uncomment if needed to preserve environmental variables
# related to portupgrade.
#Defaults env_keep += “PORTSDIR PORTS_INDEX PORTS_DBDIR PACKAGES PKGTOOLS_CONF”
# Runas alias specification
# User privilege specification
root ALL=(ALL) ALL
# Uncomment to allow people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
# Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
# Samples
# %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users localhost=/sbin/shutdown -h now
Обратите внимание на единственную незакоментированную строку:
root ALL=(ALL) ALL
Эта строка разрешает исполнять все команды пользователю root из sudo – что собственно выглядит как тавтология, но это отличный пример для нас. Для начала разрешим своему пользователю исполнять все команды через sudo, прописываем под приведенной выше строкой
ifreebsd ALL=(ALL)ALL
Теперь пользователь ifreebsd сможет исполнять команды root двумя способами или так
ifreebsd#…ports/editors/vim>sudo make install clean
Или возможна следующая команда которая в чем-то идентична su
ifreebsd#…ports/editors/vim>sudo -s
Вводите пароль своего пользователя (НЕ root пароль, он не нужен) и все – вы root.
Усложним задачу предположим что у нас на системе есть пользователь которому необходимо иногда снимать данные с цепочек правил ipfw (firewall). Стандартный способ, из под рядового пользователя приводит к следующему сообщению :
ifreebsd:/>ipfw show
ipfw: socket: Operation not permitted
И это конечно не удивительно ведь это потенциально важная информация и в целях безопасности ее разрешено просматривать только root. Воспользуемся SUDO.
Прописываем в файл sudoers (имя пользователя к примеру test )
test ALL=/sbin/ipfw show
Все :) Теперь пользователю test доступна команда ipfw show и только после ввода собственно пароля.
test:/>sudo ipfw show
Password:
Все остальные настройки SUDO делаются по аналогии как видите все очень просто. Если остались вопросы пишите, буду рад.
В догонку еще один живой пример использования.
Необходимо было настроить использования arping утилиты ( только под root ) под простым пользователем. Также сделать это максимально просто для пользователя.
Итак прописываем в sudoers
user1 ALL=NOPASSWD:/usr/sbin/arping
Где user1 имя пользователя. NOPASSWD – возможность использовать его без пароля.
Т.е sudo arping – выполниться без пароля.
Последний штрих – ( в случае bash )
В файл -
.profile
Добавляем alias arping=’sudo arping’
Все, теперь пользователь запустив команду arping 10.1.1.1 просто получит результат без лишних телодвижений и букв :)


Удачи.

http://ifreebsd.org/linux/настройка-sudo-примеры-использования/

Обновлено: 12.03.2015