Sudo: различия между версиями
м (исправил очепятку, см. http://t.me/alt_smokeroom/114280) |
Sb (обсуждение | вклад) м (корректировка, правка) |
||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE:sudo}} | {{DISPLAYTITLE:sudo}} | ||
== Введение == | == Введение == | ||
Команда '''sudo''' может использоваться <ref> Существует рекомендация известного эксперта в области ИТ-безопасности Александра Песляка (Solar Designer) [http://www.opennet.ru/openforum/vsluhforumID3/73378.html#18 ''не'' использовать sudo]</ref> для выполнения пользователем какой-либо команды требующей права суперпользователя ('''root'''), то есть получение прав '''root''' для выполнения какой-либо команды | Команда '''sudo''' может использоваться <ref> Существует рекомендация известного эксперта в области ИТ-безопасности Александра Песляка (Solar Designer) [http://www.opennet.ru/openforum/vsluhforumID3/73378.html#18 ''не'' использовать sudo]</ref> для выполнения пользователем какой-либо команды, требующей права суперпользователя ('''root'''), то есть получение прав '''root''' для выполнения какой-либо команды | ||
на время | на время её выполнения. | ||
Перед выполнением команды | Перед выполнением команды '''sudo''' запрашивает пароль пользователя, а не пароль '''root''', как у команды '''su -'''. | ||
После | После выполнения '''sudo''' существует временной отрезок, в течение которого повторное выполнение команды '''sudo''' не требует пароль (что удобно для взлома вашего компьютера со стороны '''rootkits''' и хакерских атак). | ||
С другой стороны, команда '''sudo''' удобна для распределения прав между несколькими администраторами компьютера (например, кому можно обновлять и устанавливать программы, а кому настраивать работу аппаратуры компьютера), не предоставляя прав '''root''' на все другие действия и не выдавая пользователю пароля '''root''' | С другой стороны, команда '''sudo''' удобна для распределения прав между несколькими администраторами компьютера (например, кому можно обновлять и устанавливать программы, а кому настраивать работу аппаратуры компьютера), не предоставляя прав '''root''' на все другие действия и не выдавая пользователю пароля '''root''' | ||
Строка 20: | Строка 20: | ||
=== Настройка contol для работы sudo === | === Настройка contol для работы sudo === | ||
В ALT Linux {{pkg|sudo}} используется фреймворк [[control]] | В ALT Linux {{pkg|sudo}} используется фреймворк [[control]], который задаёт права на выполнение команды '''sudo'''. | ||
С его помощью | С его помощью можно дать или отнять права на использование команды '''sudo'''. | ||
Возможные значения '''control sudo''' можно посмотреть командой '''control sudo help''' | Возможные значения '''control sudo''' можно посмотреть командой '''control sudo help''' | ||
Строка 44: | Строка 44: | ||
Означает что пользователь из группы '''wheel''' имеет право запускать саму команду '''sudo''', но не означает, что он через '''sudo''' может выполнить какую-то команду с правами '''root''' | Означает что пользователь из группы '''wheel''' имеет право запускать саму команду '''sudo''', но не означает, что он через '''sudo''' может выполнить какую-то команду с правами '''root''' | ||
Для разрешения | Для разрешения получения прав на выполнение конкретных команд с правами '''root''' надо отредактировать настройки правил '''/etc/sudoerc''' <ref>Здесь используется редактор '''mcedit''', по умолчанию используется '''vi''' , но базовое знание '''vi''' весьма полезно, для их получения установите и запустите команду '''vimtutor''' </ref> при помощи специальной команды '''visudo''' (которая не портит права на файлы) : | ||
<source lang=bash> | <source lang=bash> | ||
su - | su - | ||
Строка 51: | Строка 51: | ||
=== Грубая настройка sudo === | === Грубая настройка sudo === | ||
''' | '''Раскомментировать''' (убрать '#' в начале строки) в /etc/sudoers строчку, дав права выполнять через '''sudo''' любую команду с любого компьютера (например через ssh), пользователям входящим в группу | ||
'''wheel''', запрашивая их пароль : | '''wheel''', запрашивая их пароль : | ||
<pre>WHEEL_USERS ALL=(ALL) ALL</pre> | <pre>WHEEL_USERS ALL=(ALL) ALL</pre> | ||
C | C точки зрения безопасности '''правильнее''' давать права на выполнение '''sudo''' не всей группе '''wheel''', а ''конкретному пользователю'', например '''petya''', входящего в группу с '''localhost''' : | ||
<pre>petya localhost=(ALL) ALL</pre> | <pre>petya localhost=(ALL) ALL</pre> | ||
Строка 64: | Строка 64: | ||
<pre>petya localhost=(ALL) /usr/bin/apt-get,/usr/bin/rpm,/sbin/fdisk</pre> | <pre>petya localhost=(ALL) /usr/bin/apt-get,/usr/bin/rpm,/sbin/fdisk</pre> | ||
Это особенно важно | Это особенно важно потому, что после выполнения команды '''sudo''' с запросом пароля есть определённый временный отрезок, в течение которого '''sudo''' выполняет следующие команды, не запрашивая повторно пароль пользователя. | ||
Также может понадобиться | Также может понадобиться добавление требуемых пользователей в группу '''wheel''' (созданный при установке системы аккаунт добавляется в неё автоматически, (можно посмотреть в '''/etc/group''') | ||
<source lang=bash> | <source lang=bash> | ||
Строка 72: | Строка 72: | ||
</source> | </source> | ||
{{Note|Для быстрого разрешения запуска произвольной программы пользователям группы {{term|wheel}} можно выполнить под правами суперпользователя: <source lang="text">control sudowheel enabled</source> Что является | {{Note|Для быстрого разрешения запуска произвольной программы пользователям группы {{term|wheel}} можно выполнить под правами суперпользователя: <source lang="text">control sudowheel enabled</source> Что является '''безрассудством''' с точки зрения безопасности ;-)}} | ||
=== Тонкая настройка sudo === | === Тонкая настройка sudo === | ||
Для того, чтобы настроить работу '''sudo''', необходимо с применением административных привилегий отредактировать файл '''/etc/sudoers''' при помощи специальной команды '''visudo''' (подробности смотри выше) | Для того, чтобы настроить работу '''sudo''', необходимо с применением административных привилегий отредактировать файл '''/etc/sudoers''' при помощи специальной команды '''visudo''' (подробности смотри выше) и внести туда записи о том, каким пользователям какие команды можно выполнять. | ||
Версия от 14:26, 6 мая 2022
Введение
Команда sudo может использоваться [1] для выполнения пользователем какой-либо команды, требующей права суперпользователя (root), то есть получение прав root для выполнения какой-либо команды на время её выполнения.
Перед выполнением команды sudo запрашивает пароль пользователя, а не пароль root, как у команды su -.
После выполнения sudo существует временной отрезок, в течение которого повторное выполнение команды sudo не требует пароль (что удобно для взлома вашего компьютера со стороны rootkits и хакерских атак).
С другой стороны, команда sudo удобна для распределения прав между несколькими администраторами компьютера (например, кому можно обновлять и устанавливать программы, а кому настраивать работу аппаратуры компьютера), не предоставляя прав root на все другие действия и не выдавая пользователю пароля root
Особенности sudo в дистрибутивах ALT Linux
Штатным способом временного получения прав root в большинстве дистрибутивах ALT Linux, является команда su -. Команда sudo в большинстве дистрибутивах ALT Linux требует предварительной настройки. Исключением является дистрибутив Simply, где sudo уже настроена для первого пользователя.
В большинстве дистрибутивах ALT Linux запрещено (через /etc/sudoers) выполнять команду sudo пользователю root.
Для ограничения прав на выполнение sudo используется особый механизм control
Настройка contol для работы 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/sudoerc [2] при помощи специальной команды visudo (которая не портит права на файлы) :
su -
EDITOR=mcedit visudo
Грубая настройка sudo
Раскомментировать (убрать '#' в начале строки) в /etc/sudoers строчку, дав права выполнять через sudo любую команду с любого компьютера (например через ssh), пользователям входящим в группу wheel, запрашивая их пароль :
WHEEL_USERS ALL=(ALL) ALL
C точки зрения безопасности правильнее давать права на выполнение 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
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.
Примечания
- ↑ Существует рекомендация известного эксперта в области ИТ-безопасности Александра Песляка (Solar Designer) не использовать sudo
- ↑ Здесь используется редактор mcedit, по умолчанию используется vi , но базовое знание vi весьма полезно, для их получения установите и запустите команду vimtutor