Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
wiki:суперпользователь_в_ubuntu [2012/09/30 20:06] |
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 ===== | ||
Строка 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 и младше ==== | ||
Строка 81: | Строка 81: | ||
<code>sudo passwd root</code> | <code>sudo passwd root</code> | ||
- | 2. Включаем пункт "Ввести логин". | + | 2. Включаем пункт "Введите логин". |
Введите в терминал: | Введите в терминал: | ||
- | <code> | + | <code>gksu gedit /etc/lightdm/lightdm.conf</code> |
+ | |||
+ | В конце файла допишите: | ||
+ | <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> | ||
===== Настройка sudo и прав доступа на выполнение различных команд ===== | ===== Настройка sudo и прав доступа на выполнение различных команд ===== | ||
Строка 108: | Строка 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> | ||
+ | |||
+ | |||
Строка 120: | Строка 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|здесь]]. | ||
===== Ссылки ===== | ===== Ссылки ===== | ||