Sudo: различия между версиями

Материал из ALT Linux Wiki
м (исправил очепятку, см. http://t.me/alt_smokeroom/114280)
м (корректировка, правка)
Строка 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''' запрашивает пароль пользователя, а не пароль '''root''', как у команды '''su -'''.


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


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


=== Настройка contol для работы sudo ===
=== Настройка contol для работы sudo ===
В ALT Linux {{pkg|sudo}} используется фреймворк [[control]] который задаёт права на выполнения команды '''sudo'''.
В ALT Linux {{pkg|sudo}} используется фреймворк [[control]], который задаёт права на выполнение команды '''sudo'''.


С его помощью можно дать или отнять права на использование команды '''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''' , но базовst знание '''vi''' весьма полезны, для их получения установите и запустите команду '''vimtutor''' </ref> при помощи специальной команды '''visudo''' (которая не портит права на файлы)  :  
Для разрешения получения прав на выполнение конкретных команд с правами '''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), пользователям входящим в группу  
'''Раскомментировать''' (убрать '#' в начале строки) в /etc/sudoers строчку, дав права выполнять через '''sudo''' любую команду с любого компьютера (например через ssh), пользователям входящим в группу  
'''wheel''', запрашивая их пароль :
'''wheel''', запрашивая их пароль :


<pre>WHEEL_USERS ALL=(ALL) ALL</pre>  
<pre>WHEEL_USERS ALL=(ALL) ALL</pre>  


C точке зрения безопасности, '''правильнее''' давать права на выполнение '''sudo''' не всей группе '''wheel''', а ''конкретному пользователю'' например '''petya''', входящую в группу, с '''localhost''' :
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''' выполняет следующие команды, не запрашивая повторно пароль пользователя.
Это особенно важно потому, что после выполнения команды '''sudo''' с запросом пароля есть определённый временный отрезок, в течение которого '''sudo''' выполняет следующие команды, не запрашивая повторно пароль пользователя.


Также может понадобиться внесение требуемых пользователей в группу '''wheel''' (созданный при установке системы аккаунт добавляется в неё автоматически, (можно посмотреть в '''/etc/group''')
Также может понадобиться добавление требуемых пользователей в группу '''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''' (подробности смотри выше) и внести туда записи о том, каким пользователям какие команды можно выполнять.





Версия от 11: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
Примечание: Для быстрого разрешения запуска произвольной программы пользователям группы 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

Ссылки