sudo

Материал из ALT Linux Wiki

Введение

Команда sudo может использоваться [1] для выполнения пользователем какой-либо команды, требующей права суперпользователя (root), то есть получение прав root для выполнения какой-либо команды на время её выполнения.

Перед выполнением команды sudo запрашивает пароль пользователя, а не пароль root, как у команды su -.

После выполнения sudo существует временной отрезок, в течение которого повторное выполнение команды sudo не требует пароль (что удобно для взлома вашего компьютера со стороны rootkits и хакерских атак).

С другой стороны, команда sudo удобна для распределения прав между несколькими администраторами компьютера (например, кому можно обновлять и устанавливать программы, а кому настраивать работу аппаратуры компьютера), не предоставляя прав root на все другие действия и не выдавая пользователю пароля root.

Особенности sudo в дистрибутивах ALT Linux

Штатным способом временного получения прав root в большинстве дистрибутивах ALT Linux, является команда su -. Команда sudo в большинстве дистрибутивов ALT Linux требует предварительной настройки, так как в /etc/sudoers не описан ни один пользователь, включая root. Исключением является дистрибутив Simply, где sudo уже настроена для первого пользователя. В дополнение к /etc/sudoers могут использоваться отдельные файлы из каталога /etc/sudoers.d/.

Для ограничения прав на выполнение самой команды sudo используется особый механизм control.

Настройка control для работы sudo

В ALT Linux sudo используется фреймворк control, который задаёт права на выполнение команды sudo.

С его помощью можно дать или отнять права на использование команды sudo.

Возможные значения control sudo можно посмотреть командой control sudo help:

$ su -
# control sudo help

На текущий момент существуют следующие политики у команды sudo:

public — любой пользователь может получить доступ к команде /usr/bin/sudo
wheelonly — только пользователи из группы wheel имеют право получить доступ к команде /usr/bin/sudo
restricted — только root имеет право выполнять команду /usr/bin/sudo

Штатное состояние политики:

# control sudo
wheelonly

Означает что пользователь из группы wheel имеет право запускать саму команду sudo, но не означает, что он через sudo может выполнить какую-то команду с правами root.

Для разрешения получения прав на выполнение конкретных команд с правами root надо отредактировать настройки правил /etc/sudoers [2] при помощи специальной команды visudo (которая не портит права на файлы):

$ su -
# EDITOR=mcedit visudo

Грубая настройка sudo

Раскомментировать (убрать '#' в начале строки) в /etc/sudoers строчку, дав права выполнять через sudo любую команду с любого компьютера (например через ssh), пользователям входящим в группу wheel, запрашивая их пароль:

WHEEL_USERS ALL=(ALL) ALL

С точки зрения безопасности правильнее давать права на выполнение sudo не всей группе wheel, а конкретному пользователю, например petya, входящего в группу localhost:

petya localhost=(ALL) ALL

и не на все команды , а на те, которые ему необходимы для быстрого получения прав root:

petya localhost=(ALL) /usr/bin/apt-get,/usr/bin/rpm,/sbin/fdisk

Это особенно важно потому, что после выполнения команды sudo с запросом пароля есть определённый временный отрезок, в течение которого sudo выполняет следующие команды, не запрашивая повторно пароль пользователя.

Также может понадобиться добавление требуемых пользователей в группу wheel (созданный при установке системы аккаунт добавляется в неё автоматически, можно посмотреть в /etc/group):

# gpasswd -a имя_пользователя wheel
Примечание: Для быстрого разрешения запуска произвольной программы пользователям группы wheel можно выполнить под правами суперпользователя:
# control sudowheel enabled
Что является безрассудством с точки зрения безопасности ;-)


Тонкая настройка sudo

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

Пример:

user1 ALL = (ALL) ALL
user1 ALL = NOPASSWD: /usr/bin/apt-get  update

Позволяет пользователю user1 запускать все приложения через sudo с правами суперпользователя (root) с запросом пароля, а при выполнении команды sudo apt-get update пароль не будет спрашиваться.

Полная документация по формату конфигурационного файла находится в man-странице sudoers, начинать читать может быть проще с секции EXAMPLES.

Примечания

  1. Существует рекомендация известного эксперта в области ИТ-безопасности Александра Песляка (Solar Designer) не использовать sudo
  2. Здесь используется редактор mcedit, по умолчанию используется vi , но базовый навык работы с vi весьма полезен, для его получения установите и запустите команду vimtutor

Ссылки