Читаем без скачивания Ubuntu 10. Краткое руководство пользователя - Д. Колисниченко
Шрифт:
Интервал:
Закладка:
Если вы попытаетесь выполнить опасную команду, зарегистрировавшись под именем обычного пользователя, система сообщит вам, что у вас нет полномочий. Если же вы от имени пользователя root дадите команду даже на удаление корневой файловой системы, система ее выполнит.
Представим, что кто-то решил пошутить и выложил в Интернете (записал на диск или прислал по электронной почте — не важно) вредоносную программу. Если вы ее запустите от имени пользователя root, то уничтожите систему. Если запустить программу от имени обычного пользователя — ничего страшного не произойдет.
Впрочем, все может быть намного проще — команда, которая разрушит систему, может быть введена ошибочно. Или вы отойдете ненадолго от своего компьютера, а тут сразу же появится недоброжелатель — имея полномочия пользователя root, уничтожить систему можно одной командой.
Вот поэтому в дистрибутиве Ubuntu обычная учетная запись root отключена — вы не можете войти в систему, используя учетную запись root. Сделано это, как можно видеть, из соображений безопасности, т. е. разработчики пытаются защитить систему от вас же самих, от ваших некорректных действий.
6.2. Временное получение полномочий пользователя root
Некоторые операции, такие, например, как установка программного обеспечения или изменение конфигурационных файлов, требуют полномочий root. Чтобы их получить, нужно использовать команду sudo следующим образом:
sudo <команда,_которую_нужно_выполнить_с_правами_root>
Например, требуется изменить файл /etc/apt/sources.list — примените для этого команду:
sudo gedit /etc/apt/sources.list
Программа gedit — это текстовый редактор, мы ему передаем один параметр — имя файла, который нужно открыть. Если ввести эту же команду, но без sudo (просто так: gedit /etc/apt/sources.list), текстовый редактор все равно запустится и откроет файл, но сохранить изменения в нем вы не сможете, поскольку у вас не хватит полномочий.
Команда sudo перед выполнением запросит у вас пароль:
sudo gedit /etc/apt/sources.list
Password:
Вы должны ввести свой пользовательский пароль — тот, который используете для входа в систему, но не пароль пользователя root (кстати, мы его и не знаем).
Существует определенная разница между запуском программ, работающих в графическом режиме (типа gedit), из главного меню Ubuntu и в терминале. Так, если вы запускаете какую-нибудь программу, работающую в графическом режиме, используя главное меню Ubuntu, то увидите окно с требованием ввести свой пароль (рис. 6.1).
Помните, что введенный пароль хранится 15 минут, поэтому спустя 15 минут программа может опять запросить у вас пароль (если вы за эти 15 минут не завершите работу программы).
Если вы хотите с правами root запустить программу, работающую в графическом режиме (например, ту же gedit) в терминале, то желательно применить не команду sudo, как было только что показано, а команду gksudo (или вместо графического текстового редактора gedit использовать консольный текстовый редактор nano).
СоветЕсли вы работаете в Kubuntu, то вместо команды gksudo нужно использовать команду kdesu.
Дело в том, что команда sudo не всегда корректно работает с графическими приложениями, поэтому рано или поздно вы можете получить сообщение Unable to read ICE authority file, после чего вообще станет невозможным запуск графических программ с правами root. Чтобы поправить это, удалите файл с именем.{ICE,X}authority из вашего домашнего каталога командой: rm ~/.{iCE,x}authority — здесь тильда (~) означает «домашний каталог текущего пользователя».
Таким образом, графические приложения с правами root проще запускать, используя главное меню. Но не все приложения имеются в главном меню и не все приложения вызываются с правами root. Например, в главном меню есть команда вызова текстового редактора, но нет команды для вызова текстового редактора с правами root. Поэтому намного проще нажать комбинацию клавиш <Alt>+<F2> и ввести команду (рис. 6.2):
gksudo <команда>
Если вам нужно выполнить серию команд с правами root, но не хочется каждый раз вводить sudo в начале команд, тогда выполните команду:
sudo — i
Эта команда запустит оболочку root, т. е. вы сможете вводить любые команды, и они будут выполнены с правами root. Обратите внимание, что изменится приглашение командной строки (рис. 6.3).
До этого приглашение имело вид $, что означает работу от имени обычного пользователя, а после выполнения команды приглашение изменилось на # — это верный признак того, что каждая введенная команда будет выполнена с правами root.
Обратите также внимание на имя пользователя: до ввода команды sudo — i имя пользователя было denis (в записи [email protected] denis — имя пользователя, den-desktop — имя компьютера), а стало root.
6.3. Переход к традиционной учетной записи root
Несмотря на то, что в дистрибутиве Ubuntu традиционная учетная запись root отключена, возможность восстановить ее имеется. После чего режим ее использования будет таким же, как и в прочих дистрибутивах, — вы сможете заходить в систему под именем root. В главе 2 мы уже обращались к этому вопросу (см. разд. «Получение пароля root») и использовали для получения пароля root команду sudo.
Но прежде чем снять запрет на работу от имени учетной записи root, рассмотрим подробнее преимущества и недостатки ситуации, когда она отключена, а мы получаем права пользователя root с помощью команды sudo.
К преимуществам sudo можно отнести:
□ вам не нужно помнить несколько паролей (т. е. ваш личный пароль и пароль пользователя root) — вы помните только свой пароль и вводите его, когда нужно;
□ с помощью sudo вы можете выполнять практически те же действия, что и под именем root, но перед каждым действием у вас будет запрошен пароль, что позволит еще раз подумать о правильности своих действий;
□ каждая команда, введенная с помощью sudo, записывается в журнал /var/log/auth.log, поэтому в случае чего вы хотя бы сможете понять, что случилось, просмотрев этот журнал. Согласитесь, полезно иметь историю введенных с полномочиями root команд, ведь при работе под именем root никакой журнал не ведется;
□ предположим, что некто захотел взломать вашу систему. Этот некто не знает, какие учетные записи есть в вашем компьютере, зато учетную запись root знают все. Также все знают, что, завладев паролем к этой учетной записи, можно получить неограниченный доступ к системе. Но не к вашей системе — у вас учетная запись root отключена!
□ вы можете разрешать и запрещать другим пользователям использовать полномочия root (позже мы разберемся, как это сделать), не предоставляя собственно пароль root — при этом практически нет риска скомпрометировать учетную запись root.
ПримечаниеВпрочем, такой риск есть всегда — вспомните, как мы в главе 2, используя команду sudo, изменили пароль пользователя root.
Но у sudo есть и недостатки:
□ неудобно использовать перенаправление ввода/вывода. Так, команда:
sudo ls /etc > /root/somefile
работать не будет, вместо нее придется использовать значительно более длинную команду:
sudo bash — c "ls /etc > /root/somefile"
□ имеются также неудобства, связанные с технологией NSS (Network Security Services). К счастью, она используется не очень часто, поэтому основной недостаток sudo будет связан только с перенаправлением ввода/вывода.
Итак, если вы все-таки хотите использовать обычную учетную запись root, то для этого достаточно задать пароль для пользователя root. Делается это командой:
sudo passwd root
Сначала программа запросит ваш пользовательский пароль, затем новый пароль root и его подтверждение:
Enter your existing password
Enter password for root
Confirm password for root
После этого вы сможете войти в систему под учетной записью root.
Для отключения учетной записи root используется команда:
sudo passwd -1 root
Внимание!После закрытия учетной записи root у вас могут быть проблемы с входом в систему в режиме восстановления, поскольку пароль root уже установлен (т. е. он не пустой, как по умолчанию), но, в то же время, учетная запись закрыта. Поэтому если вы уж включили учетную запись root, то будьте с ее отключением внимательны и осторожны.
СоветЛучше вовсе не включать учетную запись root, а пользоваться командой sudo — i.