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

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:суперпользователь_в_ubuntu [2010/12/21 14:14]
[Запуск программ с правами администратора в терминале]
wiki:суперпользователь_в_ubuntu [2017/08/18 18:45] (текущий)
[Ubuntu 11.10 и старше]
Строка 1: Строка 1:
-====== Администратор в Ubuntu, или ​что такое sudo ======+====== Администратор в Ubuntu, или ​Что такое sudo ======
  
-В любой Linux системе обязательно есть один привилегированный пользователь - root. Этот пользователь имеет права на выполнение любых действий,​ удаление любых файлов и изменение любых параметров. Как-то ограничить свободу действий root практически невозможно. С другой стороны,​ все остальные пользователи системы обычно не имеют большинства необходимых прав, например,​ прав на установку программ,​ поскольку это является административной операцией,​ права на которую есть только у root. Ещё одной распространённой операцией,​ доступной только суперпользователю,​ является копирование и изменение файлов в системных папках,​ куда обычный пользователь доступа не имеет.+В любой Linux-системе обязательно есть один привилегированный пользователь ​--- root. Этот пользователь имеет права на выполнение любых действий,​ удаление любых файлов и изменение любых параметров. Как-то ограничить свободу действий root практически невозможно. С другой стороны,​ все остальные пользователи системы обычно не имеют большинства необходимых прав, например,​ прав на установку программ,​ поскольку это является административной операцией,​ права на которую есть только у root. Ещё одной распространённой операцией,​ доступной только суперпользователю,​ является копирование и изменение файлов в системных папках,​ куда обычный пользователь доступа не имеет.
  
-Раньше данная проблема решалась достаточно просто:​ при обладании паролем root можно было зайти в систему под его аккаунтом либо временно получить его права, используя команду ''​su''​. Потом выполнить все необходимые операции и вернуться обратно под обычного пользователя. В принципе,​ такая схема работает неплохо,​ однако у неё есть много существенных недостатков,​ в частности,​ невозможно никак (точнее очень сложно) ограничивать административные привилегии только определённым кругом задач.+Раньше данная проблема решалась достаточно просто:​ при обладании паролем root можно было зайти в систему под его аккаунтом либо временно получить его права, используя команду ''​su''​. Потом выполнить все необходимые операции и вернуться обратно под обычного пользователя. В принципе,​ такая схема работает неплохо,​ однако у неё есть много существенных недостатков,​ в частности,​ невозможно никак (точнееочень сложно) ограничивать административные привилегии только определённым кругом задач.
  
-Поэтому в современных дистрибутивах Linux заместо root аккаунта для администрирования используется утилита ''​sudo''​.+Поэтому в современных дистрибутивах Linux вместо root аккаунта для администрирования используется утилита ''​sudo''​.
  
 В Ubuntu по умолчанию root аккаунт вообще отключён,​ т.е. вы никаким способом не сможете попасть под root, не включив его. root именно что отключён,​ т.е. он присутствует в системе,​ под него всего лишь нельзя зайти. Если вы хотите вернуть возможность использовать root, смотрите ниже пункт о включении root аккаунта. В Ubuntu по умолчанию root аккаунт вообще отключён,​ т.е. вы никаким способом не сможете попасть под root, не включив его. root именно что отключён,​ т.е. он присутствует в системе,​ под него всего лишь нельзя зайти. Если вы хотите вернуть возможность использовать root, смотрите ниже пункт о включении root аккаунта.
Строка 11: Строка 11:
 ===== Что такое sudo ===== ===== Что такое sudo =====
  
-sudo это утилита,​ предоставляющая привилегии root для выполнения административных операций в соответствии со своими настройками. Она позволяет легко контролировать доступ к важным приложениям в системе. По умолчанию,​ при установке Ubuntu первому пользователю (тому, который создаётся во время установки) предоставляются полные права на использование sudo. Т.е. фактически первый пользователь обладает той же свободой действий,​ что и root. Однако такое поведение sudo легко изменить,​ об этом см. ниже в пункте про настройку sudo.+sudo — это утилита,​ предоставляющая привилегии root для выполнения административных операций в соответствии со своими настройками. Она позволяет легко контролировать доступ к важным приложениям в системе. По умолчанию,​ при установке Ubuntu первому пользователю (тому, который создаётся во время установки) предоставляются полные права на использование sudo. Т.е. фактически первый пользователь обладает той же свободой действий,​ что и root. Однако такое поведение sudo легко изменить,​ об этом см. ниже в пункте про настройку sudo.
  
 ===== Где используется sudo ===== ===== Где используется sudo =====
Строка 39: Строка 39:
   sudo <​команда>​   sudo <​команда>​
  
-У вас попросят ввести ваш пароль. Будьте внимательны,​ пароль при вводе //​никак//​ не отображается,​ это нормально и сделано в целях безопастности, просто вводите до конца и нажимайте <​key>​Enter</​key>​. После ввода пароля указанная команда исполнится от имени root.+У вас попросят ввести ваш пароль. Будьте внимательны,​ пароль при вводе //​никак//​ не отображается,​ это нормально и сделано в целях безопасности,​ просто вводите до конца и нажимайте <​key>​Enter</​key>​. После ввода пароля указанная команда исполнится от имени root.
  
 Система какое-то время помнит введённый пароль (сохраняет открытой sudo-сессию). Поэтому при последующих выполнениях sudo ввод пароля может не потребоваться. Для гарантированного прекращения сессии 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>​
  
-<note warning>​Нет ни одной причины использовать ​root вместо sudo, кроме того, ​при использовании root аккаунта у вас могут возникнуть проблемы с графическими приложениями из-за ошибок соединения с dbus.</​note>​+==== Ubuntu 11.04 и младше ==== 
 +Для входа под root достаточно задать ему пароль
 +<​code>​sudo passwd root</​code>​ 
 +Потом ​на экране входа нажмите Другой... и введите логин (root) ​и пароль, который вы задали.
  
-Отключение root аккаунта в Ubuntu заключается в том, что у root просто не задан пароль. Поэтому для получения ​возможности использовать традиционный root логин необходимо всего лишь установить для ​него ​пароль: +==== Ubuntu 11.10 и старше ==== 
-<​code>​ +Начиная с версии 11.10 был установлен менеджер входа lightdm, ​и дело со входом под root обстоит немного сложнее.
-sudo passwd root +
-</​code>​+
  
-Кроме того, по умолчанию вход root в систему через GDM заблокирован, установка пароля для root это никак не исправит, для разблокирования необходимо перейти в меню //​Система->​Администрирование->​Окно входа в систему//, потом на вкладку «//Безопасность//​» и там поставить галочку ​напротив «//​Разрешить ​локальный вход администратора системы//».+1. Устанавливаем ​root пароль. 
 +Введите ​в терминал
 +<​code>​sudo passwd root</code>
  
-<note warning>​Работа в GUI от имени администратора - это вообще прямая дорога к многочисленным проблемамПоэтому десять раз подумайте, перед тем как активировать такую возможность.</note>+2. Включаем пункт ведите ​логин". 
 +Введите в терминал: 
 +<​code>​gksu gedit /​etc/​lightdm/​lightdm.conf</code>
  
-Если вы хотите отключить учётную записть rootпросто ​удалить его пароль  ​+В конце файла допишите: 
 +<​code>​greeter-show-manual-login=true</​code>​ 
 + 
 +3. Перезагружаем lightdm. 
 +Введите в терминал:​ 
 +<​code>​sudo service lightdm restart</​code>​ 
 +Все, на экране ​входа появится пункт "​Логин"​. 
 +В поле логин вводим "​root",​ в поле пароль - пароль, ​который мы задали на первом этапе. 
 + 
 + 
 +Для обратной блокировки ​учетной записи root вам ​потребуется ​откатить изменения в настройках lightdm, а также заблокировать учетную запись root командой в терминале: 
 +<​code>​sudo passwd -l root</​code>​
  
-<​code>​ 
-sudo passwd -l root 
-</​code>​ 
  
 =====  Настройка sudo и прав доступа на выполнение различных команд ===== =====  Настройка sudo и прав доступа на выполнение различных команд =====
  
-sudo позволяет разрешать или запрещать пользователям выполнение конкретного набора программ. Все настройки,​ связанные с правами доступа,​ храняться в файле //''/​etc/​sudoers''//​. Это не совсем обычный файл. Для его редактирования //​необходимо//​ (в целях безопасности) использовать команду+sudo позволяет разрешать или запрещать пользователям выполнение конкретного набора программ. Все настройки,​ связанные с правами доступа,​ хранятся в файле //''/​etc/​sudoers''//​. Это не совсем обычный файл. Для его редактирования //​необходимо//​ (в целях безопасности) использовать команду
  
   sudo visudo   sudo visudo
Строка 101: Строка 114:
  
 <note warning>​Если вы допустите ошибку при редактировании этого файла, то вполне возможно полностью лишитесь доступа к административным функциям. Если такое случилось,​ то необходимо загрузиться в recovery mode, при этом вы автоматически получите права администратора и сможете всё исправить. Кроме того, отредактировать этот файл можно с LiveCD.</​note>​ <note warning>​Если вы допустите ошибку при редактировании этого файла, то вполне возможно полностью лишитесь доступа к административным функциям. Если такое случилось,​ то необходимо загрузиться в recovery mode, при этом вы автоматически получите права администратора и сможете всё исправить. Кроме того, отредактировать этот файл можно с LiveCD.</​note>​
 +=== Разрешение пользователю выполнять команду без ввода пароля ===
 +Для того, что бы система не запрашивала пароль при определенных командах необходимо в sudoers после строки **# Cmnd alias specification** добавить строку,​ где через запятую перечислить желаемые команды с полным путём(путь команды можно узнать,​ выполнив **which имя_команды**:​
 +<​code>#​ Cmnd alias specification
 +Cmnd_Alias SHUTDOWN_CMDS = /​sbin/​shutdown,​ /​usr/​sbin/​pm-hibernate,​ /​sbin/​reboot
 +</​code>​
 +И в конец файла дописать строку
 +<​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>​
 +
 +
 +
 +
  
 ===== Время действия введённого пароля ===== ===== Время действия введённого пароля =====
Строка 111: Строка 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|здесь]].
 ===== Ссылки ===== ===== Ссылки =====
  
Строка 116: Строка 160:
   * [[http://​forum.ubuntu.ru/​index.php?​topic=75477|Настройка sudo]] — топик на форуме о времени действия пароля   * [[http://​forum.ubuntu.ru/​index.php?​topic=75477|Настройка sudo]] — топик на форуме о времени действия пароля
  
-{{tag>​Система Администрирование sudo root Терминал Консоль}}+{{tag>​Система Администрирование sudo sudoers ​root Терминал Консоль}}