Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Фундаментальные основы Linux. Часть VII. Управление локальными учетными записями пользователей

Оригинал: Linux Fundamentals
Автор: Paul Cobbaut
Дата публикации: 16 октября 2014 г.
Перевод: А.Панин
Дата перевода: 22 декабря 2014 г.

Глава 26. Управление учетными записями пользователей

Прочитав данную главу, вы научитесь использовать утилиты useradd, usermod и userdel для создания, модификации и удаления учетных записей пользователей.

Вам понадобятся привилегии пользователя root в системе Linux для выполнения действий, описанных в данной главе.

Управление учетными записями пользователей

Управление учетными записями пользователей в Linux может осуществляться тремя равноценными способами. Во-первых, вы можете использовать инструменты с графическим интерфейсом, предоставляемые вашим дистрибутивом. Внешний вид и принцип работы этих инструментов зависит от используемого вами дистрибутива. В том случае, если вы являетесь неопытным пользователем своей домашней системы Linux, используйте инструмент с графическим интерфейсом, предоставляемый вашим дистрибутивом. Такой подход гарантированно позволит избежать проблем.

Другим вариантом является использование таких инструментов с интерфейсом командной строки, как useradd, usermod, gpasswd, passwd и других. Администраторы серверов с большой вероятностью используют именно эти инструменты, так как они им знакомы, а также поставляются в неизменном виде в составе различных дистрибутивов. В данной главе будут рассматриваться именно эти инструменты с интерфейсом командной строки.

Третий довольно радикальный способ управления учетными записями пользователей заключается в непосредственном редактировании локальных файлов конфигурации с помощью текстового редактора vi (или vipw/vigr). Не пытайтесь делать это при работе системами, находящимися в промышленной эксплуатации, в том случае, если вы не обладаете соответствующими знаниями!

Файл /etc/passwd

Локальная база данных учетных записей пользователей в Linux (и в большинстве систем Unix) расположена в файле /etc/passwd.
[root@RHEL5 ~]# tail /etc/passwd
inge:x:518:524:art dealer:/home/inge:/bin/ksh
ann:x:519:525:flute player:/home/ann:/bin/bash
frederik:x:520:526:rubius poet:/home/frederik:/bin/bash
steven:x:521:527:roman emperor:/home/steven:/bin/bash
pascale:x:522:528:artist:/home/pascale:/bin/ksh
geert:x:524:530:kernel developer:/home/geert:/bin/bash
wim:x:525:531:master damuti:/home/wim:/bin/bash
sandra:x:526:532:radish stresser:/home/sandra:/bin/bash
annelies:x:527:533:sword fighter:/home/annelies:/bin/bash
laura:x:528:534:art dealer:/home/laura:/bin/ksh

Как вы можете заметить, данный файл содержит данные в форме таблицы с семью столбцами, разделенными символом двоеточия. В столбцах содержатся имя пользователя, символ x, идентификатор пользователя, идентификатор основной группы пользователя, описание учетной записи пользователя, путь к домашней директории пользователя, а также путь к исполняемому файлу командной оболочки, используемой для входа пользователя в систему.

Дополнительная информация о данном файле может быть найдена на странице руководства, для получения доступа к которой может использоваться команда man 5 passwd.
[root@RHEL5 ~]# man 5 passwd

Пользователь root

Учетная запись пользователя root, также называемого суперпользователем, является наиболее привилегированной учетной записью вашей системы Linux. Данный пользователь может делать практически все, включая создание учетных записей других пользователей. Пользователь root всегда имеет идентификатор, равный 0 (вне зависимости от имени учетной записи).
[root@RHEL5 ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash

Утилита useradd

Вы можете добавлять учетные записи пользователей в базу данных с помощью утилиты useradd. В примере ниже показана методика добавления учетной записи пользователя с именем yanina (последний параметр) с одновременным созданием домашней директории пользователя (-m), установкой имени этой домашней директории (-d) и добавлением описания учетной записи (-c).
[root@RHEL5 ~]# useradd -m -d /home/yanina -c "yanina wickmayer" yanina
[root@RHEL5 ~]# tail -1 /etc/passwd
yanina:x:529:529:yanina wickmayer:/home/yanina:/bin/bash

Как видно из примера, пользователь с именем yanina получил идентификатор 529, а также идентификатор основной группы 529.

Файл /etc/default/useradd

Как в дистрибутиве Red Hat Enterprise Linux, так и в дистрибутивах Debian/Ubuntu имеется файл /etc/default/useradd, который содержит некоторые стандартные параметры пользовательского окружения. Помимо команды cat, вы можете использовать команду useradd -D для ознакомления с содержимым данного файла.
[root@RHEL4 ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel

Утилита userdel

Вы можете удалить учетную запись пользователя yanina с помощью утилиты userdel. Параметр -r утилиты userdel позволяет также удалить домашнюю директорию пользователя.
[root@RHEL5 ~]# userdel -r yanina

Утилита usermod

Вы можете модифицировать параметры учетной записи пользователя с помощью утилиты usermod. В данном примере утилита usermod используется для изменения описания учетной записи пользователя harry.
[root@RHEL4 ~]# tail -1 /etc/passwd
harry:x:516:520:harry potter:/home/harry:/bin/bash
[root@RHEL4 ~]# usermod -c 'wizard' harry
[root@RHEL4 ~]# tail -1 /etc/passwd
harry:x:516:520:wizard:/home/harry:/bin/bash

Создание домашних директорий пользователей

Простейший способ создания домашней директории пользователя заключается в передаче параметра -m утилите useradd (вполне вероятно, что данный параметр передается по умолчанию в вашем дистрибутиве Linux).

Менее простой способ заключается в самостоятельном создании домашней директории с помощью команды mkdir, что также подразумевает необходимость установки владельца и прав доступа к данной директории с помощью утилит chmod и chown (обе утилиты подробно обсуждаются в другой главе).
[root@RHEL5 ~]# mkdir /home/laura
[root@RHEL5 ~]# chown laura:laura /home/laura
[root@RHEL5 ~]# chmod 700 /home/laura
[root@RHEL5 ~]# ls -ld /home/laura/
drwx------ 2 laura laura 4096 июн 24 15:17 /home/laura/

Директория /etc/skel/

В случае использовании параметра -m утилиты useradd содержимое директории /etc/skel/ копируется в создаваемую домашнюю директорию пользователя. В директории /etc/skel/ находятся некоторые (обычно скрытые) файлы, которые содержат стандартные параметры профиля пользователя и значения параметров приложений. Таким образом, директория /etc/skel/ выступает в роли шаблона домашней директории и стандартного профиля пользователя.
[root@RHEL5 ~]# ls -la /etc/skel/
итого 48
drwxr-xr-x  2 root root  4096 апр  1 00:11 .
drwxr-xr-x 97 root root 12288 июн 24 15:36 ..
-rw-r--r--  1 root root    24 июл 12  2006 .bash_logout
-rw-r--r--  1 root root   176 июл 12  2006 .bash_profile
-rw-r--r--  1 root root   124 июл 12  2006 .bashrc

Удаление домашних директорий пользователей

В случае использования параметра -r утилиты userdel вы можете быть уверены в том, что домашняя директория пользователя будет удалена вместе с его учетной записью.
[root@RHEL5 ~]# ls -ld /home/wim/
drwx------ 2 wim wim 4096 июн 24 15:19 /home/wim/
[root@RHEL5 ~]# userdel -r wim
[root@RHEL5 ~]# ls -ld /home/wim/
ls: невозможно получить доступ к /home/wim/: Нет такого файла или каталога

Командная оболочка, используемая для входа в систему

В файле /etc/passwd содержится информация о командной оболочке, используемой для входа пользователя в систему. Как вы можете увидеть в примере ниже, пользователь annelies будет использовать для входа в систему командную оболочку /bin/bash, а пользователь laura - командную оболочку /bin/ksh.
[root@RHEL5 ~]# tail -2 /etc/passwd
annelies:x:527:533:sword fighter:/home/annelies:/bin/bash
laura:x:528:534:art dealer:/home/laura:/bin/ksh
Вы можете использовать команду usermod для изменения командной оболочки пользователя.
[root@RHEL5 ~]# usermod -s /bin/bash laura
[root@RHEL5 ~]# tail -1 /etc/passwd
laura:x:528:534:art dealer:/home/laura:/bin/bash

Утилита chsh

Пользователи могут изменять используемую для входа в систему командную оболочку с помощью утилиты chsh. В примере ниже пользователь laura в первую очередь получает список доступных командных оболочек (также данный список может быть получен с помощью команды cat /etc/shells), после чего изменяет свою командную оболочку на Korn shell (/bin/ksh). При следующем входе в систему пользователю laura по умолчанию будет предоставлена командная оболочка Korn shell вместо bash.
[laura@centos7 ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/ksh
/bin/tcsh
/bin/csh
[laura@centos7 ~]$

Учтите, что в дистрибутиве Debian не существует параметра -l упомянутой утилиты, а также в данном примере предполагается, что командные оболочки ksh и csh установлены в системе.

В примере ниже показано, как пользователь laura может изменить свою стандартную командную оболочку (которая будет активирована при следующем входе в систему).
[laura@centos7 ~]$ chsh -s /bin/ksh
Изменение шелла для laura.
Пароль:
Шелл изменён.

Практическое задание: управление учетными записями пользователей

1. Создайте учетную запись пользователя с именем serena и описанием (или комментарием) "Serena Williams", а также домашнюю директорию этого пользователя. Выполните необходимые действия в рамках одной команды.

2. Создайте учетную запись пользователя с именем venus, указанием на необходимость использования командной оболочки bash и описанием "Venus Williams", а также домашнюю директорию этого пользователя с помощью одной команды.

3. Убедитесь в том, что обоим пользователям соответствуют корректные записи в файлах /etc/passwd, /etc/shadow и /etc/group.

4. Проверьте корректность создания домашних директорий пользователей.

5. Создайте учетную запись пользователя с именем einstime и утилитой /bin/time в качестве стандартной командной оболочки.

6. Что случится, если вы войдете в систему под именем пользователя einstime? Можете ли вы сделать предположение о реальной ситуации, в которой было бы полезно заменить стандартную командную оболочку пользователя на приложение?

7. Создайте файл с именем welcome.txt и убедитесь в том, что каждый новый пользователь будет обнаруживать данный файл в своей домашней директории.

8. Проверьте корректность размещения созданного файла в файловой системе, создав (и удалив) тестовую учетную запись пользователя.

9. Измените стандартную командую оболочку для входа в систему пользователя serena на командную оболочку /bin/bash. Осуществите необходимые проверки перед изменением командной оболочки и после него.

Корректная процедура выполнения практического задания: управление учетными записями пользователей

1. Создайте учетную запись пользователя с именем serena и описанием (или комментарием) "Serena Williams", а также домашнюю директорию этого пользователя. Выполните необходимые действия в рамках одной команды.

root@debian7:~# useradd -m -c 'Serena Williams' serena

2. Создайте учетную запись пользователя с именем venus, указанием на необходимость использования командной оболочки bash и описанием "Venus Williams", а также домашнюю директорию этого пользователя с помощью одной команды.

root@debian7:~# useradd -m -c "Venus Williams" -s /bin/bash venus

3. Убедитесь в том, что обоим пользователям соответствуют корректные записи в файлах /etc/passwd, /etc/shadow и /etc/group.

root@debian7:~# tail -2 /etc/passwd
serena:x:1008:1010:Serena Williams:/home/serena:/bin/sh
venus:x:1009:1011:Venus Williams:/home/venus:/bin/bash
root@debian7:~# tail -2 /etc/shadow
serena:!:16358:0:99999:7:::
venus:!:16358:0:99999:7:::
root@debian7:~# tail -2 /etc/group
serena:x:1010:
venus:x:1011:

4. Проверьте корректность создания домашних директорий пользователей.

root@debian7:~# ls -lrt /home | tail -2
drwxr-xr-x 2 serena    serena    4096 окт 15 10:50 serena
drwxr-xr-x 2 venus     venus     4096 окт 15 10:59 venus
root@debian7:~#

5. Создайте учетную запись пользователя с именем einstime и утилитой /bin/time в качестве стандартной командной оболочки.

root@debian7:~# useradd -s /bin/date einstime
Или даже лучший вариант:
root@debian7:~# useradd -s $(which date) einstime

6. Что случится, если вы войдете в систему под именем пользователя einstime? Можете ли вы сделать предположение о реальной ситуации, в которой было бы полезно заменить стандартную командную оболочку пользователя на приложение?

root@debian7:~# su - einstime
Ср окт 15 11:05:56 UTC 2014    # Вы получите вывод команды date
root@debian7:~#

Такая замена стандартной командной оболочки может оказаться полезной в том случае, если пользователю необходимо получить доступ только к одному приложению на сервере. Сразу же после входа в систему пользователь получает возможность работы с приложением, а после завершения работы этого приложения автоматически осуществляется выход из системы.

7. Создайте файл с именем welcome.txt и убедитесь в том, что каждый новый пользователь будет обнаруживать данный файл в своей домашней директории.

root@debian7:~# echo Hello > /etc/skel/welcome.txt

8. Проверьте корректность размещения созданного файла в файловой системе, создав (и удалив) тестовую учетную запись пользователя.

root@debian7:~# useradd -m test
root@debian7:~# ls -l /home/test
итого 4
-rw-r--r-- 1 test test 6 окт 15 11:16 welcome.txt
root@debian7:~# userdel -r test
root@debian7:~#

9. Измените стандартную командую оболочку для входа в систему пользователя serena на командную оболочку /bin/bash. Осуществите необходимые проверки перед изменением командной оболочки и после него.

root@debian7:~# grep serena /etc/passwd
serena:x:1008:1010:Serena Williams:/home/serena:/bin/sh
root@debian7:~# usermod -s /bin/bash serena
root@debian7:~# grep serena /etc/passwd
serena:x:1008:1010:Serena Williams:/home/serena:/bin/bash
root@debian7:~#


Предыдущий раздел: Оглавление Следующий раздел:
Глава 25. Вводная информация об учетных записях пользователей   Глава 27. Пароли пользователей