Sudo раз и навсегда

Материал из Belgorod Linux User Group - Белгород

Перейти к: навигация, поиск

Утилита SUDO


Пришло время разобраться что это за утилита и зачем она нужна. Многие использующие её не знают как это работает , другие прочитав на форумах "введите sudo (команда)" и получив при этом "user is not in sudoers file" больше никогда и не пытаются , отдавая предпочтение утилите su.

Утилита sudo в качестве аргумента принимает командную строку , которая должна выполняться от имени пользователя root . Далее sudo обращается к файлу /etc/sudoers , где содержится список пользователей и команды которые им разрешено выполнять. Если запрашиваемая команда разрешена sudo просит ввести собственный пароль и выполняет от пользователя root.

(далее вводить пароль не надо , но если будет 5 минут бездействия придётся ввести заново ,параметр можно поменять)

Сделано для "забывчивых" которые оставляют терминалы без присмотра. Sudo ведёт свой журнал , может также отправлять в syslog.

Пример лога:

Dec 7 10:57:19 tigger sudo: yura:TTY=ttyp0 ; PWD=/tigger/users/yura;USER=root; COMMAND=/bin/cat /etc/sudoers

Перейдём непосредственно к файлу /etc/sudoers Для его редактирования используется утилита visudo, которая блокирует файл и осуществит проверку грамматики

Возмём пример файла:

# Псевдонимы для 2х групп

Host_Alias CS = tigger,anchor,piper,moet,sigi

Host_Alias PH = eprince,pprince,icarus

# Набор команд

Cmnd_Alias DUMP = /sbin/dump , /sbin/restore

Cmnd_Alias PRINTING = /usr/sbin/lpc,/usr/bin/lprm

Cmnd_Alias SHELLS = /bin/sh,/bin/tcsh,/bin/csh,/bin/bash,/bin/ash,/bin/bsh


# Права доступа

mark,yura PH = ALL

herb CS = /usr/local/bin/tcpdump:PH = (operator) DUMP

lynda ALL = (ALL) ALL, !SHELLS

%wheel ALL,!PH = NOPASSWD:PRINTING


Первые 5 строк определяют набор компьютеров и команд, на которые имеются ссылки в спецификациях прав доступа. В каждую спецификацию прав доступа включаетсся информация о:

1 . Пользователях,к которым относится запись
2 . Компьютерах,на которых разрешено выполнять соответствующее действие
3 . Командах,которые могут выполняться указанными пользователями
4 . Пользователи , от имени которых могут выполняться команды

Начнём смотреть что к чему.

Первая строка - mark,yura PH = ALL применяется к пользователям mark и yura , которые регистрируются на компьютерах группы PH и могут выполнять любые команды. (дополнительный список не указан - все команды будут выполняться от имени root)

Вторая строка - herb CS = /usr/local/bin/tcpdump:PH = (operator) DUMP

пользователь herb может запускать утилиту tcpdump на компьютерах группы CS а так же выполнять резервное копирование на компьютерах группы PH - вторая группа получит привилегии не пользователя root а пользователя operator.

Команда которую нужно ввести пользователю herb:

%> sudo -u operator /sbin/dump 0u /dev/hda

Третья строка - lynda ALL = (ALL) ALL, !SHELLS пользователь lynda может выполнять команды от имени любого пользователя на любом компьютере , но не может запустить большинство интерпритаторов команд.

Четвёртая строка - %wheel ALL,!PH = NOPASSWD:PRINTING пользователям группы wheel разрешается выполнять команды печати от имени root , за исключением компьютеров входящих в группу PH а так же от пользователей не требуется вводить пароль.


Обратите внимание на то , что команды в файле /etc/sudoers приводятся с указанием полного имени , чтобы пользователи не могли выполнять свои программы и сценарии от имени root.

Преимущества:

1 . Повышается степень административного контроля
2 . Операторы могут выполнять спец. задачи не имея неограниченных привилегий
3 . Пользователя можно лишить привилегий ,не меняя пароль root
4 . Управлять доступом ко всей сети моожно с помощью одного файла.

В целом возможности файла /etc/sudoers очень велики ... мы затрагиваем лишь небольшую часть.

Ссылки по теме: sudoers на opennet

Личные инструменты