Библиотека сайта 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
/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
/etc/default/useradd
, который содержит некоторые стандартные параметры пользовательского окружения. Помимо команды cat, вы можете использовать команду useradd -D
для ознакомления с содержимым данного файла.
[root@RHEL4 ~]# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel
Утилита userdel
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. Пароли пользователей |