Администратор в Ubuntu, или Что такое sudo Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:суперпользователь_в_ubuntu [2013/02/17 19:13]
[Администратор в Ubuntu, или что такое sudo]
wiki:суперпользователь_в_ubuntu [2017/08/18 18:45] (текущий)
[Ubuntu 11.10 и старше]
Строка 1: Строка 1:
-====== Администратор в Ubuntu, или ​что такое sudo ======+====== Администратор в Ubuntu, или ​Что такое sudo ======
  
-В любой Linux системе обязательно есть один привилегированный пользователь&​nbsp;&​mdash; ​root. Этот пользователь имеет права на выполнение любых действий,​ удаление любых файлов и изменение любых параметров. Как-то ограничить свободу действий root практически невозможно. С другой стороны,​ все остальные пользователи системы обычно не имеют большинства необходимых прав, например,​ прав на установку программ,​ поскольку это является административной операцией,​ права на которую есть только у root. Ещё одной распространённой операцией,​ доступной только суперпользователю,​ является копирование и изменение файлов в системных папках,​ куда обычный пользователь доступа не имеет.+В любой Linux-системе обязательно есть один привилегированный пользователь ​--- root. Этот пользователь имеет права на выполнение любых действий,​ удаление любых файлов и изменение любых параметров. Как-то ограничить свободу действий root практически невозможно. С другой стороны,​ все остальные пользователи системы обычно не имеют большинства необходимых прав, например,​ прав на установку программ,​ поскольку это является административной операцией,​ права на которую есть только у root. Ещё одной распространённой операцией,​ доступной только суперпользователю,​ является копирование и изменение файлов в системных папках,​ куда обычный пользователь доступа не имеет.
  
-Раньше данная проблема решалась достаточно просто:​ при обладании паролем root можно было зайти в систему под его аккаунтом либо временно получить его права, используя команду ''​su''​. Потом выполнить все необходимые операции и вернуться обратно под обычного пользователя. В принципе,​ такая схема работает неплохо,​ однако у неё есть много существенных недостатков,​ в частности,​ невозможно никак (точнее очень сложно) ограничивать административные привилегии только определённым кругом задач.+Раньше данная проблема решалась достаточно просто:​ при обладании паролем root можно было зайти в систему под его аккаунтом либо временно получить его права, используя команду ''​su''​. Потом выполнить все необходимые операции и вернуться обратно под обычного пользователя. В принципе,​ такая схема работает неплохо,​ однако у неё есть много существенных недостатков,​ в частности,​ невозможно никак (точнееочень сложно) ограничивать административные привилегии только определённым кругом задач.
  
 Поэтому в современных дистрибутивах Linux вместо root аккаунта для администрирования используется утилита ''​sudo''​. Поэтому в современных дистрибутивах Linux вместо root аккаунта для администрирования используется утилита ''​sudo''​.
Строка 11: Строка 11:
 ===== Что такое sudo ===== ===== Что такое sudo =====
  
-sudo это утилита,​ предоставляющая привилегии root для выполнения административных операций в соответствии со своими настройками. Она позволяет легко контролировать доступ к важным приложениям в системе. По умолчанию,​ при установке Ubuntu первому пользователю (тому, который создаётся во время установки) предоставляются полные права на использование sudo. Т.е. фактически первый пользователь обладает той же свободой действий,​ что и root. Однако такое поведение sudo легко изменить,​ об этом см. ниже в пункте про настройку sudo.+sudo — это утилита,​ предоставляющая привилегии root для выполнения административных операций в соответствии со своими настройками. Она позволяет легко контролировать доступ к важным приложениям в системе. По умолчанию,​ при установке Ubuntu первому пользователю (тому, который создаётся во время установки) предоставляются полные права на использование sudo. Т.е. фактически первый пользователь обладает той же свободой действий,​ что и root. Однако такое поведение sudo легко изменить,​ об этом см. ниже в пункте про настройку sudo.
  
 ===== Где используется sudo ===== ===== Где используется sudo =====
Строка 53: Строка 53:
 ===== Получение прав суперпользователя для выполнения нескольких команд ===== ===== Получение прав суперпользователя для выполнения нескольких команд =====
  
-Иногда возникает необходимость выполнить подряд несколько команд с правами администратора. В этом случае можно временно ​перейти под ​суперпользователя командой+Иногда возникает необходимость выполнить подряд несколько команд с правами администратора. В этом случае можно временно ​стать ​суперпользователем одной из следующих ​команд:
  
 <​code>​ <​code>​
 sudo -s sudo -s
 +sudo -i
 </​code>​ </​code>​
  
-После этого вы перейдёте в режим суперпользователя (с ограничениями,​ наложенными через настройки sudo), о чём говорит символ # в конце приглашения командной строки. Данная команда по действию похожа на ''​su'',​ однако ​она ​не меняет домашний каталог на /​root, ​что ​обычно очень удобно. Для того, чтобы ​при переходе под суперпользователя ​сменился ​так же и домашний каталог необходимо выполнить +После этого вы перейдёте в режим суперпользователя (с ограничениями,​ наложенными через настройки sudo), о чём говорит символ # в конце приглашения командной строки. Данные команды по действию похожа на ''​su'',​ однако
- +- **sudo -s** - не меняет домашний каталог на /​root, ​домашним остается ​домашний каталог пользователя вызвавшего **sudo -s**, что обычно очень удобно.  
-<​code>​ +- **sudo -i** - сменит так же и домашний каталог на /root.
-sudo -s -H +
-</code>+
  
 Для выхода обратно в режим обычного пользователя наберите ''​exit''​ или просто нажмите <​key>​C-D</​key>​. Для выхода обратно в режим обычного пользователя наберите ''​exit''​ или просто нажмите <​key>​C-D</​key>​.
  
 ===== Использование традиционного root аккаунта и команды su ===== ===== Использование традиционного root аккаунта и команды su =====
 +<note warning>​Разблокировка учетной записи root приводит неоправданным рискам (работая постоянно под рутом вы имеете 100500 способов "​отстрелить себе ногу"​),​ а также упрощает получение доступа к вашему компьютеру злоумышленником.</​note>​
  
 ==== Ubuntu 11.04 и младше ==== ==== Ubuntu 11.04 и младше ====
Строка 93: Строка 93:
 Все, на экране входа появится пункт "​Логин"​. Все, на экране входа появится пункт "​Логин"​.
 В поле логин вводим "​root",​ в поле пароль - пароль,​ который мы задали на первом этапе. В поле логин вводим "​root",​ в поле пароль - пароль,​ который мы задали на первом этапе.
 +
 +
 +Для обратной блокировки учетной записи root вам потребуется откатить изменения в настройках lightdm, а также заблокировать учетную запись root командой в терминале:​
 +<​code>​sudo passwd -l root</​code>​
 +
  
 =====  Настройка sudo и прав доступа на выполнение различных команд ===== =====  Настройка sudo и прав доступа на выполнение различных команд =====
Строка 117: Строка 122:
 <​code>​ <​code>​
 имя_пользователя ALL=(ALL) NOPASSWD: SHUTDOWN_CMDS</​code>​ имя_пользователя ALL=(ALL) NOPASSWD: SHUTDOWN_CMDS</​code>​
 +<note important>​ Внимание! Вышеописанные действия не отменяют необходимости ввода команды sudo перед вашей командой</​note>​
 +=== Создание синонимов (alias`ов) ===
 +Для того, чтобы не только не вводить пароль для sudo, но и вообще не вводить sudo, сделайте следующее:​
 +откройте файл .bashrc, находящейся в вашем домашнем каталоге
 +<code bash> nano ~/bashrc </​code>​
 +и добавьте в конец файла строки
 +<code bash>​alias reboot='​sudo reboot'​
 +alias poweroff='​sudo poweroff'​
 +alias pm-hibernate='​sudo pm-hibernate'​
 +alias hibernate='​sudo pm-hibernate'​
 +alias shutdown='​sudo shutdown'​ </​code>​
 +
 +
  
  
Строка 129: Строка 147:
 Если вы хотите,​ чтобы ''​sudo''​ всегда требовал ввода пароля,​ сделайте ''​timestamp_timeout''​ равным 0. Если вы хотите,​ чтобы ''​sudo''​ всегда требовал ввода пароля,​ сделайте ''​timestamp_timeout''​ равным 0.
  
 +===== sudo не спрашивает пароль =====
 +''​sudo''​ без пароля — чудовищная дыра в безопасности,​ кому попало разрешено делать что угодно. Если вы разрешили это намеренно — срочно верните обратно как было.
 +
 +Однако,​ в некоторых случаях ''​sudo''​ внезапно перестаёт требовать пароль само по себе. Если сделать ''​visudo'',​ то можно увидеть примерно такую строку,​ которую пользователь вроде бы не добавлял:​
 +  ALL ALL=(ALL) NOPASSWD:​ALL
 +Скорее всего, эта катастрофичная строка была добавлена при установке программы типа Connect Manager от МТС или Мегафона. В таком случае,​ её нужно поменять на строку,​ разрешающую с правами ''​root''​ запускать только этот Connect Manager, примерно так:
 +  юзернейм ALL= NOPASSWD: /​путь/​к/​программе
 +Есть и другие варианты решения проблемы,​ небольшое обсуждение [[http://​forum.ubuntu.ru/​index.php?​topic=238799.0|здесь]].
 ===== Ссылки ===== ===== Ссылки =====