Учетные записи пользователей
6.1. Учетная запись root
В Windows мы привыкли, что нам разрешено все. Конечно, не всегда, но в большинстве случаев именно так. В Linux все иначе — максимальными полномочиями обладает только пользователь root. Система полностью подвластна этому пользователю.
Всегда думайте над тем, что собираетесь сделать. Работать под именем пользователя root нужно с осторожностью — любая команда будет безоговорочно выполнена системой.
Если вы попытаетесь выполнить опасную команду, зарегистрировавшись под именем обычного пользователя, система сообщит вам, что у вас нет полномочий. Если же вы от имени пользователя 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. Поэтому намного проще нажать комбинацию клавиш
gksudo <команда>
Если вам нужно выполнить серию команд с правами root, но не хочется каждый раз вводить sudo в начале команд, тогда выполните команду:
sudo — i
Эта команда запустит оболочку root, т. е. вы сможете вводить любые команды, и они будут выполнены с правами root. Обратите внимание, что изменится приглашение командной строки (рис. 6.3).
До этого приглашение имело вид $, что означает работу от имени обычного пользователя, а после выполнения команды приглашение изменилось на # — это верный признак того, что каждая введенная команда будет выполнена с правами root.
Обратите также внимание на имя пользователя: до ввода команды sudo — i имя пользователя было denis (в записи denis@den-desktop 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.
6.4. Добавление учетных записей пользователей
Если вы — не единственный пользователь своего компьютера, вам следует создать дополнительные учетные записи для других его пользователей. Чтобы создать учетную запись пользователя, выполните команду меню Система | Администрирование | Пользователи и группы. В открывшемся окне (рис. 6.4) нажмите кнопку Добавить.
Откроется окно (рис. 6.5), в поле Пароль которого нужно ввести пароль пользователя-администратора. Если в вашей системе несколько пользователей, выберите из списка пользователя с правами администратора (обычно это тот, которого вы создали при установке системы) и введите его пароль.
В соответствующие поля открывшегося окна (рис. 6.6) введите реальное имя нового пользователя и его псевдоним. Если чувствуете необходимость, можно также установить флажок Зашифровать домашний каталог для обеспечения безопасности личных данных.
Нажав кнопку OK, вы получите окно (рис. 6.7) для ввода пароля нового пользователя. Пароль можно ввести вручную, а можно сгенерировать. Произвольно сгенерированный пароль будет труднее для подбора, но и сложнее для запоминания. Поэтому решайте сами, что для вас важнее — безопасность или комфорт.
Вот и все — пользователь создан, вы его увидите в списке пользователей (рис. 6.8).
Давайте поподробнее разберемся, что происходит при создании новой учетной записи пользователя.
Во-первых, создается запись в файле /etc/passwd. Формат записи следующий:
имя_пользователя: пароль: UID: GID: полное_имя: домашний_каталог: оболочка
Рассмотрим фрагмент этого файла:
root: x:0:0:root:/root:/bin/bash
den: x:500:500:Denis:/home/den:/bin/bash
Первое поле — это логин пользователя, который он вводит для регистрации в системе. Пароль в современных системах в этом файле не указывается, а второе поле осталось просто для совместимости со старыми системами.
В целях безопасности пароли перенесены в файл /etc/shadow, где они и хранятся в закодированном виде (используется алгоритм шифрования MD5).
□ Третье и четвертое поле — это UID (User ID) и GID (Group ID) — идентификаторы пользователя и группы соответственно. Идентификатор пользователя root всегда равен 0, как и идентификатор группы root. Список групп вы найдете в файле /etc/groups.
□ Пятое поле — это настоящее имя пользователя. Может быть не заполнено, а может содержать фамилию, имя и отчество пользователя — все зависит от педантичности администратора системы, т. е. от вас. Если вы работаете за компьютером в гордом одиночестве, то, думаю, свою фамилию вы не забудете. А вот если ваш компьютер — сервер сети, тогда просто необходимо указать фамилию, имя и отчество каждого пользователя, а то, когда придет время обратиться к пользователю по имени, вы его и не вспомните (попробуйте запомнить 500 фамилий и имен!).
□ Шестое поле содержит имя домашнего каталога. Обычно это каталог /home/<имя_пользователя>.
□ Последнее поле — имя командного интерпретатора, который будет обрабатывать введенные вами команды, когда вы зарегистрируетесь в консоли.
Во-вторых, при создании пользователя формируется каталог /home/ <имя_пользователя>, в который копируется содержимое каталога /etc/skel.
Каталог /etc/skel содержит «джентльменский набор» — файлы конфигурации по умолчанию, которые должны быть в любом пользовательском каталоге. Название каталога skel (от англ. skeleton) полностью оправдывает себя — он действительно содержит «скелет» домашнего каталога пользователя.
6.5. Привилегии (права) пользователя
Теперь попробуем изменить привилегии (права) пользователя. Нажмите кнопку Change напротив поля Тип учетной записи (см. рис. 6.8). В открывшемся окне (рис. 6.9) вы можете выбрать тип учетной записи: Administrator (администратор) или Desktop user (обычный пользователь). Администратор может делать все, включая установку и обновление программ. А обычный пользователь не может устанавливать программы и изменять параметры, затрагивающие всю систему и профили других пользователей, он может изменять только свои собственные настройки.
По сути, меню Система | Администрирование не представляет никакого интереса для обычных пользователей, потому что ничего изменить они там не смогут. Однако они могут использовать конфигураторы из меню Система | Параметры.
Нажмите в окне Настройки пользователей (см. рис. 6.8) кнопку Дополнительные настройки. В открывшемся окне на вкладке Права пользователя (рис. 6.10) вы можете задать привилегии пользователя.
Включите права Использовать аудио-устройства (иначе при работе под созданным пользователем не будет звука) и Подключаться к беспроводным и проводным сетям (иначе не сможете подключиться к сети).
На вкладке Дополнительно (рис. 6.11) вы можете задать основную группу пользователя, его командный интерпретатор, домашний каталог и ID. Однако вряд ли вы будете изменять эти параметры.
6.6. Группы
Иногда пользователей объединяют в группы. Группы позволяют более эффективно управлять правами пользователей. Например, у нас есть три пользователя: igor, pavel и alex, которые должны совместно работать над проектом. Тогда их удобно объединить в одну группу — пользователи будут иметь доступ к домашним каталогам друг друга (по умолчанию пользователь не имеет доступ к домашнему каталогу другого пользователя).
Создать группу, а также поместить пользователя в группу, позволяют графические конфигураторы. Ими, конечно, пользоваться очень удобно, но если вы хотите стать настоящим линуксоидом, то должны знать, что доступные в системе группы указываются в файле /etc/group. Добавить новую группу в систему можно с помощью команды groupadd, но, как правило, проще добавить в текстовом редакторе еще одну запись в файл /etc/group.
Если же редактировать файлы конфигурации вам не с руки, выполните команду меню Система | Администрирование | Пользователи и группы и нажмите в открывшемся окне (см. рис. 6.8) кнопку Управление группами — здесь вы сможете отредактировать существующие группы и добавить новые (рис. 6.12).