Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Последняя версия Следующая версия справа и слева | ||
wiki:суперпользователь_в_ubuntu [2010/12/21 14:20] [Настройка sudo и прав доступа на выполнение различных команд] |
wiki:суперпользователь_в_ubuntu [2017/08/18 18:44] [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 ===== | ||
Строка 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 и прав доступа на выполнение различных команд ===== | ||
Строка 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 Терминал Консоль}} |