Создание и управление пользователями в Linux
В отличие от архитектуры MS-DOS, этой предшественницы Windows, архитектура Linux изначально разрабатывалась как многопользовательская. И даже сегодня, когда Windows проделала немалый путь в своем развитии, создание пользователей и назначение им прав в Linux отличается большей логичностью и прозрачностью. В только что установленной Ubuntu или Mint имеются два пользователя — вы и root, присутствующий в системе как-бы неявно.
Но обладающий полными правами на выполнении любых операций и могущий делегировать свои права вам как администратору по первому же требованию. Есть еще системные пользователи, так называемые демоны — запускаемые системой процессы, аналогичные службам в Windows, но это отдельная тема.
Создание пользователя в графическом интерфейсе
Использование для создания пользователя Linux в графическом конфигураторе — самый простой, но и наименее гибкий способ.
Вот пример с Ubuntu .
Откройте настройки системы, перейдите в раздел «Пользователи» и нажмите «Разблокировать»,
чтобы приступить к работе с учетными записями.
Как только вы это сделаете, появится кнопка добавления нового юзера.
Возможности конфигурирования нового пользователя невелики: вы можете лишь присвоить ему имя, установить пароль и назначить администратором.
Администратор в Ubuntu может делать всё то же самое, что и root, запросив у последнего разрешение командой sudo , тогда как права обычного пользователя ограничены. Так, обычный пользователь не сможет изменять важные системные настройки и управлять другими пользователями, ему не будет доступна команда sudo . Как и в Windows, для нового юзера создается отдельный каталог с одноименным названием.
Создание пользователя в терминале
Использование терминала для создания пользователя открывает как минимум на порядок больше возможностей. Чтобы не нагружать мало знакомого с Linux читателя избыточной информацией, мы намерено решили опустить тему синтаксиса приведенных ниже команд управления учетными записями, коснувшись только некоторых ее сторон, но посчитали нужным дать определение используемым в статье терминам.
- Команда — это зарезервированное слово, «приказ» системе выполнить то или иное действие.
- Ключ — под ключом мы имеем ввиду некий переключатель, используемый в команде и расширяющий ее возможности. Ключ может принимать значение, а может и не принимать.
- Аргумент или значение ключа — это некий логический набор данных, который обрабатывается командой.
Для создания пользователя в Linux используется команда useradd , если вы откроете ее справку командой useradd —help , где —help является ключом, то в терминале будет выведен полный набор поддерживаемых данной командой ключей.
Назначение домашнего каталога по умолчанию, блокировка учетной записи по истечении указанной даты, добавление пользователя в другие группы, создание пользователя без GUI и домашней папки, смена папки с конфигурационными файлами пользователя и назначение ему уникального ID и шелла — всё это и многое другое можно сделать с помощью терминала.
Добавляется новый пользователь в Ubuntu командой useradd имя-юзера . Перед выполнением команды мы запрашиваем разрешение у root, поэтому вначале ставим sudo . Если вы хотите в рамках сессии постоянно работать с правами суперпользователя, выполните sudo su — . Если увидите на скриншотах такую конструкцию, это значит мы переключились в режим root.
При выполнении команды useradd автоматически будет создана новая группа и домашняя папка юзера. В процессе система попросит придумать и ввести для нового пользователя пароль и указать дополнительные сведения, которые, в отличие от пароля, можно проигнорировать. Это будет самый обычный пользователь с домашней папкой в каталоге /home и командной строкой bash. Получить базовые сведения о пользователе можно командой id имя-юзера . Для примера мы только что создали нового пользователя ludos и вывели командой id ludos о нём сведения. В результате получили строку из трех частей.
- uid — это идентификатор пользователя.
- gid — идентификатор его группы (по умолчанию равен ID юзера) .
- группы — перечень групп, в которые входит пользователь.
Используя ключи, можно создать нового пользователя с определённым набором прав и функций, например, очень часто приступающие к изучению Linux люди интересуются, как создать рутового пользователя.
Да очень просто: используя ключи -o, -u, -g и -s Первый ключ разрешает создание пользователя с неуникальным ID , второй назначает ему идентификатор пользователя, а третий — идентификатор группы, которые совпадают с идентификаторами рута (0) . Четвёртый ключ назначает командную оболочку. Сама же команда будет выглядеть следующим образом, где newroot — новый рутовый пользователь.
useradd -o -u 0 -g 0 -s /bin/bash newroot
Только вот делать так не рекомендуем.
Во-первых, этот дубль-root не отображается на экране входа в систему (нужно нажать «нет в списке» и ввести его имя и пароль) , не отображается он и в графической утилите управления пользователями. Во-вторых, у вас могут возникнуть проблемы с его удалением. Ubuntu советует использовать для удаления рутового пользователя ключ —force, но когда мы выполняем команду удаления deluser —force newroot , система сообщает об ошибке из-за использования newroot процесса с ID 1, принадлежащего пользователю root! То есть newroot стал как-бы зеркалом рута.
Где хранятся данные о пользователях
Сведения обо всех пользователях хранятся в нескольких файлах, с содержимым которых мы познакомимся на примерах. Для вывода содержимого этих файлов в терминал мы будем использовать команду cat, выполненную с правами суперадминистратора.
/etc/passwd — файл passwd хранит имя пользователя, метку пароля, ID пользователя, ID группы (GID) , полное имя и служебную информацию, путь к домашней папке и используемый юзером шелл (командную строку) , разделенные двоеточиями.
Чтобы просмотреть содержимое этого файла выполните команду sudo cat /etc/passwd .
Помимо пользователя root, который всегда идет в списке первым и имеет ID и GID , файл может содержать массу служебных пользователей, которые сейчас нас не интересуют. Давайте-ка лучше посмотрим на запись администратора.
Для наглядности мы использовали цветовую идентификацию.
- Желтый — имя пользователя.
- Красный — метка пароля (x), сам пароль хранится в зашифрованном виде в другом файле.
- Оранжевый — идентификатор пользователя.
- Зеленый — идентификатор группы, в которую входит пользователь, и таких групп может быть несколько.
- Серый — полное имя пользователя и служебная информация. Если данные отсутствуют, блок заполняется запятыми.
- Голубой — домашний каталог пользователя.
- Сиреневый — используемая командная оболочка.
/etc/shadow — хранит пароли пользователей в зашифрованном виде. Строка представлена именем пользователя и зашифрованным паролем, разделяемыми двоеточием.
Цвета на изображении означают:
- Желтый — имя пользователя.
- Красный — его пароль в зашифрованном виде.
/etc/group — этот файл хранит названия групп. Его содержимое представлено названием группы, меткой пароля, идентификатором группы и ее названием. Если в группу входит несколько пользователей, они перечисляются через запятую.
Цветом на изображении выделены:
- Желтым — название группы.
- Красным — метка пароля.
- Зеленым — идентификатор группы.
- Голубым — входящие в группу пользователи.
Управление пользователями
Для управления пользователями в Linux Ubuntu существует команда usermod , которая также может принимать множество ключей и параметров. Если помните, ранее мы создали пользователя ludos. Это обычный пользователь, не являющийся администратором и не имеющий прав использовать команду sudo . Предоставим ему эти привилегии, добавив его в группы adm и sudo . Здесь мы вынуждены сделать маленькое отступление, сказав пару слов о группах. Как просмотреть список групп и что в них хранится, вы уже в курсе, но не будет лишним также знать, что группы могут быть первичными и вторичными.
- Первичной называется группа, которая создается вместе с пользователем; в свою очередь, пользователь может входить только в одну первичную группу.
- Вторичными называются все остальные группы, в которые пользователь может быть добавлен в процессе работы. Один и тот же пользователь может входить в множество дополнительных групп.
На досуге вы можете изучить ключи команды usermod , выполнив ее с параметром —help, а сейчас нам достаточно знать два ключа:
- -a — ключ добавляет пользователя в указанную группу.
- -G — специальный ключ, определяющий список дополнительных групп.
Формируем такую команду, добавляя юзера в группы adm и sudo , перечисляя их через запятую:
usermod -a -G adm,sudo ludos
Получив данные о пользователе командой id ludos , мы видим, что его ID и GID остались прежними, зато он оказался членом групп adm и sudo .
Открыв графическую оболочку управления пользователями, мы обнаруживаем, что наш обычный ludos стал администратором, а так как он входит еще и в группу sudo , то может пользоваться и привилегиями root, в чём мы и убеждаемся, войдя в учетную запись ludos, открыв терминал и запросив разрешения root.
Удаление пользователей
Удалить пользователя проще всего в настройках через раздел «Пользователи». Для этого мы должны входить в группу администраторов и обладать правами root.
Тут всё очень просто: выбираем юзера, жмем разблокировать, вводим свой пароль, жмем кнопку «Удалить пользователя».
И выбираем, оставлять на диске его файлы (домашнюю папку) или нет.
Чтобы удалить пользователя из терминала, используем команду deluser имя-юзера . Выполненная без параметров, команда удаляет только запись о пользователе, но не его файлы, поэтому приходится использовать ключи, ознакомиться с которыми вы опять же можете сами, выполнив deluser —help .
Например, чтобы вместе с пользователем удалить его домашний каталог, нужно добавить ключ —remove-home, вот так:
deluser —remove-home ludos
Шаблон, в котором хранятся настройки удаления пользователя командой deluser без использования аргументов, представлен файлом /etc/deluser.conf.
Давайте его откроем в редакторе nano и кое-чего подправим, сделав так, чтобы выполненная без аргументов команда deluser удаляла юзера вместе с его домашним каталогом.
Открываем и видим, что REMOVE_HOME имеет значение 0,
что означает не удалять папку профиля. Заменяем 0 на 1, сохраняем конфиг-файл,
удаляем юзера deluser без параметров и видим, что папка тоже удалена!
Удаление рутового пользователя
Ну хорошо, но у нас есть еще пользователь с рутовым правами и именем newroot, помните, мы его создали, а потом хотели удалить, но безуспешно? Этот юзер использует корневой процесс unit с ID 1, — убьёте его командой killall — тут же уложите систему.
Не навсегда, просто она перейдет в состояние, подобное BSOD .
Как быть в этой ситуации? Вероятно, есть более элегантное решение проблемы, но мы решили пойти ва-банк и удалить запись зеркального рута прямо из конфигурационных файлов.
Сначала открываем в редакторе nano файл /etc/passwd и удаляем из него запись о юзере newroot .
Точно так же поступаем с файлом /etc/shadow.
Осталось только разобраться с домашним каталогом newroot ,
для чего в открываем терминал в папке /home и сносим его командой sudo rm -r newroot .
Создание и управление пользователями через графический интерфейс в Linux имеет много общего с аналогичной процедурой в Windows, но стоит только углубиться в тему, задействуя командную строку, как тут же становится очевидным, насколько более широкие возможности в этом плане предоставляет Linux.