Пакет SUDO.
Метки: root | SUDO
Четверг, 7 мая 2009 г.
Просмотров: 7007
Делегирование доступа root.
Пользователь root обладает неограниченными правами в Linux-системе, из-за этого он должен обезопасить систему прежде всего от самого себя. Рекомендуется входить в систему и работать в ней как обычный пользователь, а когда действительно нужны права root, с помощью команды su переходить в привилегированный режим. В некоторых дистрибутивах это единственный способ регистрации в качестве пользователя root, поскольку учетная запись root по умолчанию блокируется.
Иногда есть необходимость предоставления полномочий пользователя root другим пользователям, например хостмастеру — для управления сервером DNS. Но предоставлять пароль root'a каждом желающему не очень хорошая идея.
С помощью пакета SUDO, который обычно устанавливается при установке системы, можно передать часть полномочий пользователя root другому пользователю.
/etc/sudoers — конфигурационный файл SUDO.
Конфигурационный файл /etc/sudoers управляет каждым аспектом SUDO-операции. Этот файл нужно редактировать не вручную, а с помощью команды visudo. Программа осуществляет проверку синтаксиса, чтобы потом не возникали вопросы: «А почему не работает»?
Рассмотрим такой пример:
Первое поле — это имя пользователя, второе — это адрес компьютера, с которого разрешено выполнять операцию. Потом идет знак =, а за ним - список команд, разделенных запятыми, которые может выполнять пользователь от имени root. Обязательно нужно указывать полный путь.
root 422 0.0 0.1 3284 404 ? S Apr 29 0:00 sendmail:
accepting connections
smmsp 425 0.0 0.1 3284 352 ? S Apr 29 0:00 sendmail:
Queue runner@00:25:00
for /var/spool/clientmqueue pete 12425 0.0 0.1 1468 460 pts/10 R 11:08 0:00 grep sendmail
pete@dhsilabs:~$ sudo kill -HUP 422 Password:
pete@dhsilabs:~$ sudo /sbin/reboot
Sorry, user pete is not allowed to execute Vsbin/reboot' as root
on dhsilabs
Что же произошло. Пользователь pete регистрируется как обычно и выполняет команду sudo. Он становится пользователем root, но с правом выполнять только определенные команды — те, которые были прописаны в файле /etc/sudoers. В этом случае он ввел команду reboot, но, так как она не указана в файле /etc/sudoers, система отказалась ее выполнить.
Какой же пароль был введен пользователем pete? Свой или пользователя root? Он ввел свой пароль, а не пользователя root. Иначе что бы ему помешало зарегистрироваться непосредственно под именем root?
Директивы, используемые в файле.
User_Alias.
Позволяет создавать список псевдонимов пользователей. Предположим, что нужно разрешить пользователям (младшим администраторам) rod, jane и freddy выполнять команды reboot и shutdown. Правила в файле /etc/sudoers будут выглядеть так:
jane 192.168.0.4=/sbin/halt, /sbin/reboot, /sbin/shutdown
freddy 192.168.0.4=/sbin/halt, /sbin/reboot, /sbin/shutdown
Чтобы не писать все три строчки (в некоторых случаях может быть и больше), можно создать псевдоним JUNIORS и использовать его вместо конкретного имени пользователя:
JUNIORS 192.168.0.4=/sbin/halt, /sbin/reboot, /sbin/shutdown
Cmnd_Alias.
Позволяет сокращать список команд (создавать псевдоним для списка команд), например:
JUNIORS 192.168.0.4=STOPSTART
Host_Alias.
Используется для создания псевдонима для списка узлов:
JUNIORS LAN=STOPSTART
Runas_Alias.
Разрешить младшему администратору убить любой процесс крайне неразумно. Поэтому нужно разрешить «убивать» только свои процессы и процессы обычных пользователей. Делается это так:
Для списка пользователей также можно создать псевдоним:
Младший администратор может указать, процесс какого пользователя нужно завершить (используя опцию -n команды kill):
Defaults.
Третья секция файла /etc/sudoers позволяет определять значения по умолчанию. Мы знаем, что при выполнении команды su система попросит пользователя ввести его пароль. Но умолчанию программа sudo помнит пароль пользователя на протяжении пяти минут — чтобы пользователю было удобно работать (если он часто вводит команду sudo, то ему придется каждый раз вводить и пароль). Параметры по умолчанию можно изменить так:
Данное правило заставляет пользователя вводить пароль после одной минуты и ограничить число попыток ввода неправильного пароля числом 2 (по умолчанию — 3). Чтобы задать ограничения для конкретного пользователя, используется правило:
Также можно задать файл журнала sudo: