Библиотека сайта 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. Пароли пользователей |
