Использование su и sudo

Иногда системному администратору необходимо совершать действия от лица суперпользователя. Заходить под учётной записью root в программе login не рекомендуется, обычно этот метод используется в крайних случаях, когда другие варианты невозможны. Предпочтительней получать привилегии суперпользователя во время сеанса работы из под учётной записи обычного пользователя. На системном уровне подобная схема реализуется с помощью механизма setuid. Команд, способных предоставить обычному пользователю права суперпользователя, две --- su и sudo.

su

Команда su (switch user) позволяет получить права любого пользователя, при условии, что вам известен пароль этого пользователя.

Существует 4 режима работы su:

  • restricted --- выполнять su имеет право только root;

  • wheel --- выполнять su имеют право только пользователи, входящие в группу wheel;

  • wheelonly --- использовать su могут все, но лишь пользователи, входящие в группу wheel, могут получать с её помощью права суперпользователя;

  • public --- ограничения отсутствуют, любой пользователь может с использованием su получить права любого другого пользователя.

В ALTLinux команда su, выполненная без параметров, дает права суперпользователя, не меняя при этом окружения. Чтобы изменить окружение, то есть запустить login shell, необходимо использовать su -.

Login shell

Когда пользователь начинает сеанс работы с системой, в первую очередь запускается командный интерпетатор, указанный в /etc/passwd. Если для входа в систему и работы используется графический интерфейс в качестве основного, то кроме запуска самого командного интерпретатора, в нем выполняются скрипты инициализации графической сессии. Процесс этого командного интерпретатора отличается от процессов других шеллов, запущенных пользователем. Этот процесс называют login shell. В списке процессов к его имени в начале приписывается -. Login shell выполняет определённые дополнительные действия, например, устанавливает переменные окружения UID и GID.

sudo

Команда sudo обладает более широкими возможностями, чем su. Она позволяет уточнять, какие категории пользователей могут пользоваться учётными записями каких пользователей, а также ограничивать список команд, которые могут исполняться таким образом. Например, можно использовать sudo для разрешения монтирования cdrom некоторому пользователю.

По умолчанию sudo сохраняет окружение пользователя, но это поведение можно изменить (таким образом можно реализовать запуск X-приложений от учётной записи root).

/etc/sudoers

/etc/sudoers --- конфигурационный файл для sudo. Редактируется этот файл командой visudo. Будучи запущенной без каких-либо предварительных действий, эта команда откроет /etc/sudoers в редакторе vi. Для изменения используемого редактора необходимо указать желаемый редактор в переменной окружения EDITOR.

В этом файле задаются пользователи, группы пользователей, команды, которые они могут выполнять, и прочие ограничения. Синтаксис /etc/sudoers подробно описан при помощи EBNF в man sudoers.

Рассмотрим простой, однако часто встречающийся на практике пример --- как дать возможность пользователям, входящим в некоторую группу (например, администраторам), выполнять произвольные команды, указывая при этом только собственный пароль:

%admin ALL=(ALL) ALL

Символ % означает, что admin --- название группы, а не имя пользователя.


Сведения о ресурсах

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

1

1

1

1


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex