- Содержание
- Что такое sudo
- Где используется sudo
- Запуск графических программ с правами администратора
- Запуск программ с правами администратора в терминале
- Получение прав суперпользователя для выполнения нескольких команд
- Использование традиционного root аккаунта и команды su
- Ubuntu 11.04 и младше
- Ubuntu 11.10 и старше
- Настройка sudo и прав доступа на выполнение различных команд
- Разрешение пользователю выполнять команду без ввода пароля
- Создание синонимов (alias`ов)
- Время действия введённого пароля
- Sudo не спрашивает пароль
- Ссылки
- Содержание
- Администратор и суперпользователь
- Суперпользователь
- Администратор
- Связки ключей
- Об этой статье
- Об этой статье
Содержание
В любой Linux-системе обязательно есть один привилегированный пользователь — root. Этот пользователь имеет права на выполнение любых действий, удаление любых файлов и изменение любых параметров. Как-то ограничить свободу действий root практически невозможно. С другой стороны, все остальные пользователи системы обычно не имеют большинства необходимых прав, например, прав на установку программ, поскольку это является административной операцией, права на которую есть только у root. Ещё одной распространённой операцией, доступной только суперпользователю, является копирование и изменение файлов в системных папках, куда обычный пользователь доступа не имеет.
Раньше данная проблема решалась достаточно просто: при обладании паролем root можно было зайти в систему под его аккаунтом либо временно получить его права, используя команду su
. Потом выполнить все необходимые операции и вернуться обратно под обычного пользователя. В принципе, такая схема работает неплохо, однако у неё есть много существенных недостатков, в частности, невозможно никак (точнее, очень сложно) ограничивать административные привилегии только определённым кругом задач.
Поэтому в современных дистрибутивах Linux вместо root аккаунта для администрирования используется утилита sudo
.
В Ubuntu по умолчанию root аккаунт вообще отключён, т.е. вы никаким способом не сможете попасть под root, не включив его. root именно что отключён, т.е. он присутствует в системе, под него всего лишь нельзя зайти. Если вы хотите вернуть возможность использовать root, смотрите ниже пункт о включении root аккаунта.
Что такое sudo
sudo — это утилита, предоставляющая привилегии root для выполнения административных операций в соответствии со своими настройками. Она позволяет легко контролировать доступ к важным приложениям в системе. По умолчанию, при установке Ubuntu первому пользователю (тому, который создаётся во время установки) предоставляются полные права на использование sudo. Т.е. фактически первый пользователь обладает той же свободой действий, что и root. Однако такое поведение sudo легко изменить, об этом см. ниже в пункте про настройку sudo.
Где используется sudo
sudo используется всегда, когда вы запускаете что-то из меню Администрирования системы. Например, при запуске Synaptic вас попросят ввести свой пароль. Synaptic — это программа управления установленным ПО, поэтому для её запуска нужны права администратора, которые вы и получаете через sudo вводя свой пароль.
Однако не все программы, требующие административных привилегий, автоматически запускаются через sudo. Обычно запускать программы с правами администратора приходится вручную.
Запуск графических программ с правами администратора
Для запуска графических программ с правами администратора можно воспользоваться диалогом запуска программ, вызываемым по умолчанию сочетанием клавиш Alt+F2.
Допустим, нам необходимо запустить файловый менеджер Nautilus с правами администратора, чтобы через графический интерфейс как-то изменить содержимое системных папок. Для этого необходимо ввести в диалог запуска приложений команду
gksudo nautilus
Вместо gksudo
можно подставить gksu
, кроме того, пользователи KDE должны вместо gksudo
писать kdesu
. У вас попросят ввести свой пароль, и, если вы обладаете нужными правами, Nautilus запуститься от имени администратора. Запуск любого графического ПО можно производить с правами администратора, просто написав в диалоге запуска
gksudo <имя_команды>
Будьте предельно внимательны при работе в приложениях, запущенных с правами администратора. Вы безо всяких предупреждений со стороны системы сможете выполнить любую операцию, в частности, удалить системные файлы, сделав при этом систему неработоспособной.
Запуск программ с правами администратора в терминале
Для запуска в терминале команды с правами администратора просто наберите перед ней sudo
:
sudo <команда>
У вас попросят ввести ваш пароль. Будьте внимательны, пароль при вводе никак не отображается, это нормально и сделано в целях безопасности, просто вводите до конца и нажимайте Enter. После ввода пароля указанная команда исполнится от имени root.
Система какое-то время помнит введённый пароль (сохраняет открытой sudo-сессию). Поэтому при последующих выполнениях sudo ввод пароля может не потребоваться. Для гарантированного прекращения сессии sudo наберите в терминале
sudo -K
Кроме того, часто встречаются ошибки, связанные с каналами в Linux. При исполнении команды
sudo cat test.txt | grep text > result.txt
с правами root исполнится только cat
, поэтому файл result.txt может не записаться. Нужно либо писать sudo
перед каждой командой, либо временно переходить под суперпользователя.
Получение прав суперпользователя для выполнения нескольких команд
Иногда возникает необходимость выполнить подряд несколько команд с правами администратора. В этом случае можно временно стать суперпользователем одной из следующих команд:
sudo -s sudo -i
После этого вы перейдёте в режим суперпользователя (с ограничениями, наложенными через настройки sudo), о чём говорит символ # в конце приглашения командной строки. Данные команды по действию похожа на su
, однако:
— sudo -s — не меняет домашний каталог на /root, домашним остается домашний каталог пользователя вызвавшего sudo -s, что обычно очень удобно.
— sudo -i — сменит так же и домашний каталог на /root.
Для выхода обратно в режим обычного пользователя наберите exit
или просто нажмите Ctrl+D.
Использование традиционного root аккаунта и команды su
Разблокировка учетной записи root приводит неоправданным рискам (работая постоянно под рутом вы имеете 100500 способов «отстрелить себе ногу»), а также упрощает получение доступа к вашему компьютеру злоумышленником.
Ubuntu 11.04 и младше
Для входа под root достаточно задать ему пароль:
sudo passwd root
Ubuntu 11.10 и старше
Начиная с версии 11.10 был установлен менеджер входа lightdm, и дело со входом под root обстоит немного сложнее.
1. Устанавливаем root пароль.
Введите в терминал:
sudo passwd root
gksu gedit /etc/lightdm/lightdm.conf
В конце файла допишите:
greeter-show-manual-login=true
3. Перезагружаем lightdm.
Введите в терминал:
sudo service lightdm restart
Для обратной блокировки учетной записи root вам потребуется откатить изменения в настройках lightdm, а также заблокировать учетную запись root командой в терминале:
sudo passwd -l root
Настройка sudo и прав доступа на выполнение различных команд
sudo позволяет разрешать или запрещать пользователям выполнение конкретного набора программ. Все настройки, связанные с правами доступа, хранятся в файле /etc/sudoers
. Это не совсем обычный файл. Для его редактирования необходимо (в целях безопасности) использовать команду
sudo visudo
%admin ALL=(ALL) ALL
Подробнее о синтаксисе и возможностях настройки этого файла можно почитать выполнив
man sudoers
Если вы допустите ошибку при редактировании этого файла, то вполне возможно полностью лишитесь доступа к административным функциям. Если такое случилось, то необходимо загрузиться в recovery mode, при этом вы автоматически получите права администратора и сможете всё исправить. Кроме того, отредактировать этот файл можно с LiveCD.
Разрешение пользователю выполнять команду без ввода пароля
Для того, что бы система не запрашивала пароль при определенных командах необходимо в sudoers после строки # Cmnd alias specification добавить строку, где через запятую перечислить желаемые команды с полным путём(путь команды можно узнать, выполнив which имя_команды:
# Cmnd alias specification Cmnd_Alias SHUTDOWN_CMDS = /sbin/shutdown, /usr/sbin/pm-hibernate, /sbin/reboot
И в конец файла дописать строку
имя_пользователя ALL=(ALL) NOPASSWD: SHUTDOWN_CMDS
Внимание! Вышеописанные действия не отменяют необходимости ввода команды sudo перед вашей командой
Создание синонимов (alias`ов)
Для того, чтобы не только не вводить пароль для sudo, но и вообще не вводить sudo, сделайте следующее:
откройте файл .bashrc, находящейся в вашем домашнем каталоге
~bashrc
и добавьте в конец файла строки
= = pm-hibernate= = =
Время действия введённого пароля
Возможно, вы хотите изменить промежуток времени, в течение которого sudo
действует без ввода пароля. Этого легко добиться добавив в /etc/sudoers (visudo)
примерно следующее:
Defaults:foo timestamp_timeout=20
Здесь sudo
для пользователя foo действует без необходимости ввода пароля в течение 20 минут.
Если вы хотите, чтобы sudo
всегда требовал ввода пароля, сделайте timestamp_timeout
равным 0.
Sudo не спрашивает пароль
sudo
без пароля — чудовищная дыра в безопасности, кому попало разрешено делать что угодно. Если вы разрешили это намеренно — срочно верните обратно как было.
Однако, в некоторых случаях sudo
внезапно перестаёт требовать пароль само по себе. Если сделать visudo
, то можно увидеть примерно такую строку, которую пользователь вроде бы не добавлял:
ALL ALL=(ALL) NOPASSWD:ALL
Скорее всего, эта катастрофичная строка была добавлена при установке программы типа Connect Manager от МТС или Мегафона. В таком случае, её нужно поменять на строку, разрешающую с правами root
запускать только этот Connect Manager, примерно так:
юзернейм ALL= NOPASSWD: /путь/к/программе
Есть и другие варианты решения проблемы, небольшое обсуждение здесь.
Ссылки
Настройка sudo — топик на форуме о времени действия пароля
Содержание
Администратор и суперпользователь
Итак, при установке системы вы указывали имя пользователя и пароль, и я сказал, что указанный пользователь после установки будет администратором системы. Так же я сказал, что использование учётной записи администратора не несёт практически никакой угрозы безопасности системы. Теперь постараюсь объяснить всё немного поподробней.
Суперпользователь
Во всех системах на базе Linux всегда есть один привилегированный пользователь, который зовётся root
или по-русски суперпользователь. Полномочия этого пользователя не ограничены ничем, он может делать в системе абсолютно всё, что угодно. Кроме того, большинство системных процессов работают от имени root. Понятное дело, использование такого всемогущего пользователя крайне опасно, ибо любая ошибка может привести к катастрофическим последствиям, вплоть до полного уничтожения системы. Обычный же пользователь в Linux вообще говоря никак не может повлиять на работоспособность системы, в частности, не может устанавливать и удалять программы, управлять системными настройками и изменять файлы вне своего домашнего каталога. Поскольку использование суперпользователя крайне опасно, в Ubuntu он спрятан внутри системы, а управлением занимаются обычные пользователи со специальными административными привилегиями1).
Администратор
Администратор в Ubuntu по умолчанию может по запросу делать всё то же самое, что и суперпользователь2), однако случайно что-то испортить из-под администратора нельзя, т.к. перед выполнением каждого опасного действия система спрашивает у пользователя-администратора его пароль. Вообще говоря, администратор является обычным пользователем, однако при необходимости он может вмешаться в работу системы, но для этого ему потребуется ввести свой пароль.
Главное отличие администратора от суперпользователя как раз и заключается в необходимости вводить пароль для выполнения любого потенциально опасного действия. Если система спрашивает у вас пароль, значит вы собираетесь как-то вмешаться в её работоспособность. Поэтому элементарная внимательность спасёт вас от ошибок, поскольку, я надеюсь, сложно ввести пароль и не заметить этого.
Если вы введете правильно (и если вы являетесь администратором, конечно), то откроется собственно сам Synaptic:
Как пользоваться этой программой я расскажу в статье про установку приложений, а пока закройте её.
Кстати, если вы введёте в подобное окно пароль не правильно, то система просто закроет его и ничего вам не скажет. Соответственно и операция, для которой требовались права администратора, выполнена не будет. Имейте это ввиду.
Видите, вы не можете ничего изменить, поскольку все поля заблокированы. Однако внизу находится кнопка с ключиком, рядом с которой написано «Нажмите для внесения изменений». Нажмите её, система снова спросит ваш пароль, правда несколько иным образом:
И если у вас есть полномочия на изменение даты и времени (а у администратора они естественно есть), то система откроет вам доступ к настройкам:
Связки ключей
Есть ещё один интересный механизм, связанный с обеспечением безопасности. Дело в том, что для хранения различных пользовательских паролей в Ubuntu используются так называемые связки ключей (keyrings). Весь этот механизм служит одной цели — никто, кроме конкретного пользователя, не должен иметь доступа к пользовательским паролям. Связка ключей — это собственно зашифрованный контейнер для хранения паролей, для доступа к которому строго говоря тоже нужен пароль. Кстати, связки ключей не имеют ничего общего с административными правами. Они принадлежат конкретному пользователю и вообще не зависят от прав доступа к системным параметрам.
Однако ещё раз повторюсь — в большинстве случаев вам не потребуется явно управлять паролями, за вас всё сделает система. Но иногда всё же знание механизма связок ключей оказывается полезным.
Что ж, надеюсь вы немного разобрались с тем, как управлять вашей новой системой. Если же всё вышеописанное показалось вам китайской грамотой, то запомните одну простую вещь: в Ubuntu у каждого пользователя есть только один пароль, и когда у вас система запрашивает авторизацию, всегда вводите именно его3). Если у вас будут права на доступ к запрашиваемому функционалу, то вы получите к нему доступ, если не будет — то не получите, всё просто. Никаких дополнительных паролей для доступа к каким-либо функциям системы в Ubuntu нет. Если вы так и не поняли смысла вводить один и тот же пароль несколько раз, то перечитайте эту статью с начала. А теперь пора отдать должное истории развития Linux и рассказать про основы использования терминала:
Учетная запись суперпользователя в Linux предоставляет полный доступ к системе. Права суперпользователя (администратора) необходимы для выполнения команд в Linux, особенно тех команд, которые затрагивают системные файлы. Так как аккаунт суперпользователя имеет неограниченный доступ к системным файлам, рекомендуется получать права суперпользователя только при необходимости, а не входить в систему в качестве администратора. Это поможет предотвратить случайное повреждение важных системных файлов.
-
Откройте терминал. Для этого во многих дистрибутивах нужно нажать .
-
-
Введите пароль суперпользователя (при появлении соответствующего запроса). После ввода команды su - и нажатия система попросит ввести пароль администратора.
- Если появилось сообщение об ошибке аутентификации (authentication error), скорее всего, учетная запись суперпользователя заблокирована. Чтобы узнать, как разблокировать аккаунт, прочитайте следующий раздел.
-
-
Введите команды, на исполнение которых нужны права суперпользователя. После входа в систему с помощью команды su - и получения прав суперпользователя можно запускать любые команды, которые требуют административного доступа. Активность команды su - сохраняется до конца сессии, поэтому пароль суперпользователя не нужно вводить каждый раз, когда необходимо выполнить очередную команду.
-
- Введите sudo команда и нажмите (например, sudo ifconfig). Введите свой пароль пользователя, а не пароль суперпользователя.
- Команду sudo рекомендуется использовать в некоторых дистрибутивах Linux, например, в Ubuntu, потому что она работает даже тогда, когда учетная запись суперпользователя заблокирована.
- Эта команда доступна пользователям с правами администратора. Добавить или удалить пользователя можно в /etc/sudoers.
-
-
Откройте терминал. Если вы работаете с дистрибутивом с графическим интерфейсом пользователя, нажмите , чтобы открыть терминал.
-
Введите sudo passwd root и нажмите . Введите свой пароль пользователя.
-
-
Еще раз заблокируйте аккаунт суперпользователя. Если нужно заблокировать учетную запись суперпользователя, введите следующую команду, чтобы удалить пароль и заблокировать аккаунт:
- sudo passwd -dl root
-
Воспользуйтесь другими методами, чтобы получить временный административный доступ. Не рекомендуется регулярно входить в систему в качестве суперпользователя, потому что можно случайно выполнить команды, которые приведут к краху системы. Входите в систему как администратор только для устранения неполадок, например, для исправления сбойных дисков или для восстановления заблокированных учетных записей.
- Вместо входа в систему в качестве администратора используйте команды sudo или su, чтобы предотвратить случайное повреждение важных системных файлов. Эти команды позволяют подумать о последствиях, прежде чем системе будет нанесен непоправимый ущерб.
- В некоторых дистрибутивах, например, в Ubuntu, административный аккаунт заблокирован по умолчанию (разблокировать его нужно вручную). Такой подход защищает систему не только от случайных или необдуманных действий пользователя, но и от потенциальных атак взломщиков, которые в первую очередь направлены на учетную запись суперпользователя. Если административный аккаунт заблокирован, взломщик не сможет получить к ней доступ. Читайте предыдущий раздел, чтобы выяснить, как разблокировать учетную запись суперпользователя в Ubuntu.
-
- Если права суперпользователя необходимы для выполнения команды, используйте метод, описанный в предыдущем разделе.
-
Введите пароль суперпользователя. После ввода root (в качестве имени пользователя), введите пароль администратора.
- В некоторых случаях паролем служит слово password.
- Если вы не знаете или забыли пароль суперпользователя, прочитайте следующий раздел, чтобы узнать, как сбросить пароль.
- В Ubuntu учетная запись суперпользователя заблокирована по умолчанию и не может быть использована, пока не будет разблокирована.
-
Войдя в аккаунт суперпользователя, не запускайте сложные программы. Существует вероятность, что такая программа, запущенная с правами суперпользователя, окажет негативное влияние на систему. Поэтому для запуска программ рекомендуется пользоваться командами sudo или su, а не входить в систему в качестве суперпользователя.
-
Если вы забыли пароль суперпользователя и свой пользовательский пароль, сбросьте их. Для этого загрузите систему в режиме восстановления. Если вы знаете свой пароль пользователя, но необходимо изменить пароль суперпользователя, введите sudo passwd root, затем введите пользовательский пароль, а потом создайте новый административный пароль.
-
Перезагрузите компьютер и после появления экрана BIOS зажмите левую клавишу . Откроется меню GRUB.
- Успеть вовремя зажать клавишу довольно сложно, поэтому вам, возможно, придется совершить несколько попыток.
-
В списке выберите первую опцию (recovery mode) (Режим восстановления). Установленный дистрибутив будет загружен в режиме восстановления.
-
В открывшемся меню выберите опцию root. Откроется терминал с правами суперпользователя.
-
Смонтируйте диск, чтобы активировать разрешение на запись. В режиме восстановления диск, как правило, имеет только разрешение на чтение. Введите следующую команду, чтобы разрешить запись:
- mount -rw -o remount /
-
Создайте новый пароль к любой учетной записи, доступа к которой у вас нет. После входа в систему в качестве администратора и изменения прав доступа можно создать новый пароль к любой учетной записи.
- Введите passwd учетная запись и нажмите . Чтобы изменить пароль суперпользователя, введите passwd root.
- При появлении соответствующего запроса дважды введите новый пароль.
-
- Входите в учетную запись суперпользователя только в случае необходимости и не забывайте выходить из этого аккаунта.
- Сообщите пароль суперпользователя только тем людям, которым вы доверяете и которые должны знать пароль.
Об этой статье
Чтобы запускать административные задачи на Linux, у вас должны быть права суперпользователя (права root). В большинстве дистрибутивов Linux присутствует отдельная учетная запись суперпользователя, но в Ubuntu она по умолчанию отключена. Это позволяет предотвратить случайные ошибки и защитить систему от проникновения. Чтобы запустить команды, которые требуют административный доступ, используйте команду sudo.
-
-
Введите sudo, прежде чем ввести остаток команды. Добавление sudo в начало команды запустит ее с правами администратора.
- Пример: команда sudo /etc/init.d/networking stop прекращает работу сети, а sudo adduser добавляет в систему нового пользователя. Обе эти команды требуют прав суперпользователя.
- Перед тем, как sudo выполнит команду, вы должны будете ввести пароль. Linux хранит пароль в течение 15 минут, так что вам не придется вводить их постоянно.
-
- Пример: введите gksudo gedit /etc/fstab, чтобы открыть файл «fstab» в текстовом редакторе GEdit с графическим интерфейсом.
- Если вы используете KDE Window Manager, вместо gksudo вводите команду kdesudo.
-
- Введите команду sudo passwd root. Этим вы создадите пароль для root, тем самым «включите» административный доступ. Смотрите, не забудьте этот пароль.
- Введите sudo -i. Введите пароль от root, когда это будет необходимо.
- Значок в терминале изменится с $ на #, указывая на то, что теперь вы обладаете правами суперпользователя.
-
-
Нажмите комбинацию клавиш , чтобы открыть окно терминала. В целях безопасности (и чтобы избежать поломок), учетная запись суперпользователя по умолчанию отключена. Чтобы безопасно запустить команду с правами администратора, используйте команды
sudo
илиgksudo
. Если вы просто обязаны иметь отдельную учетную запись с правами суперпользователя (если этого требует программа, используемая в вашей компании или за этим компьютером будет находиться один человек), включите права суперпользователя, введя несколько простых команд. -
-
Введите пароль, после чего нажмите .
-
Повторно введите пароль, после чего нажмите . Теперь учетная запись суперпользователя будет иметь пароль.
-
Введите команду su - и нажмите . Введите пароль суперпользователя, чтобы открыть консоль.
- Чтобы отключить учетную запись суперпользователя, введите команду sudo passwd -dl root.[7]
- Чтобы отключить учетную запись суперпользователя, введите команду sudo passwd -dl root.[7]
- Старайтесь как можно реже входить в систему с правами суперпользователя. Практически все команды, которые требуют прав суперпользователя, могут быть запущены командами sudo или gksudo.
- С помощью команды sudo –i можно получить доступ к консоли другого пользователя в системе. Чтобы стать пользователем «Max», введите sudo –i Max, а затем введите свой пароль (а не пароль Максима).