Команда usermod в linux

Обновлено: 07.07.2024

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

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

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

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

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

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

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

Файл /etc/passwd

Локальная база данных учетных записей пользователей в Linux (и в большинстве систем Unix) расположена в файле /etc/passwd .

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

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

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

Учетная запись пользователя root , также называемого суперпользователем , является наиболее привилегированной учетной записью вашей системы Linux. Данный пользователь может делать практически все, включая создание учетных записей других пользователей. Пользователь root всегда имеет идентификатор, равный 0 (вне зависимости от имени учетной записи).

Утилита useradd

Вы можете добавлять учетные записи пользователей в базу данных с помощью утилиты useradd . В примере ниже показана методика добавления учетной записи пользователя с именем yanina (последний параметр) с одновременным созданием домашней директории пользователя (-m), установкой имени этой домашней директории (-d) и добавлением описания учетной записи (-c).

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

Файл /etc/default/useradd

Как в дистрибутиве Red Hat Enterprise Linux, так и в дистрибутивах Debian/Ubuntu имеется файл /etc/default/useradd , который содержит некоторые стандартные параметры пользовательского окружения. Помимо команды cat, вы можете использовать команду useradd -D для ознакомления с содержимым данного файла.

Утилита userdel

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

Утилита usermod

Вы можете модифицировать параметры учетной записи пользователя с помощью утилиты usermod . В данном примере утилита usermod используется для изменения описания учетной записи пользователя harry.

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

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

Менее простой способ заключается в самостоятельном создании домашней директории с помощью команды mkdir , что также подразумевает необходимость установки владельца и прав доступа к данной директории с помощью утилит chmod и chown (обе утилиты подробно обсуждаются в другой главе).

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

В случае использовании параметра -m утилиты useradd содержимое директории /etc/skel/ копируется в создаваемую домашнюю директорию пользователя. В директории /etc/skel/ находятся некоторые (обычно скрытые) файлы, которые содержат стандартные параметры профиля пользователя и значения параметров приложений. Таким образом, директория /etc/skel/ выступает в роли шаблона домашней директории и стандартного профиля пользователя.

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

В случае использования параметра -r утилиты userdel вы можете быть уверены в том, что домашняя директория пользователя будет удалена вместе с его учетной записью.

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

В файле /etc/passwd содержится информация о командной оболочке, используемой для входа пользователя в систему . Как вы можете увидеть в примере ниже, пользователь annelies будет использовать для входа в систему командную оболочку /bin/bash , а пользователь laura - командную оболочку /bin/ksh . Вы можете использовать команду usermod для изменения командной оболочки пользователя.

Утилита chsh

Пользователи могут изменять используемую для входа в систему командную оболочку с помощью утилиты chsh . В примере ниже пользователь laura в первую очередь получает список доступных командных оболочек (также данный список может быть получен с помощью команды cat /etc/shells ), после чего изменяет свою командную оболочку на Korn shell (/bin/ksh). При следующем входе в систему пользователю laura по умолчанию будет предоставлена командная оболочка Korn shell вместо bash.

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

В примере ниже показано, как пользователь 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" , а также домашнюю директорию этого пользователя. Выполните необходимые действия в рамках одной команды.

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 . Осуществите необходимые проверки перед изменением командной оболочки и после него.

Операционная система Linux изначально планировалась как многопользовательская система. Для управления правами доступа для каждого из пользователей используется три флага: чтение, запись и выполнение. Но этого было недостаточно, поэтому были придуманы группы пользователей Linux. С помощью групп можно дать нескольким пользователям доступ к одному ресурсу.

Файлу присваивается группа, для нее описываются права, затем в эту группу вступают пользователи, чтобы получить доступ к файлу. Читайте подробнее про все это в статье группы Linux. А в этой статье мы рассмотрим как добавить пользователя в группу linux.

Как добавить пользователя в группу Linux

Как я уже сказал, для каждого пользователя существует два типа групп, это первичная, основная для него группа и дополнительные.

  • Первичная группа - создается автоматически, когда пользователь регистрируется в системе, в большинстве случаев имеет такое же имя, как и имя пользователя. Пользователь может иметь только одну основную группу;
  • Вторичные группы - это дополнительные группы, к которым пользователь может быть добавлен в процессе работы, максимальное количество таких групп для пользователя - 32;

Как обычно, лучше всего будет добавлять пользователя в группу через терминал, поскольку это даст вам больше гибкости и возможностей. Для изменения параметров пользователя используется команда usermod. Рассмотрим ее опции и синтаксис:

$ usermod опции синтаксис

Здесь нас будут интересовать только несколько опций с помощью которых можно добавить пользователя в группу root linux. Вот они:

  • -G - дополнительные группы для пользователя;
  • -a - добавить пользователя в дополнительные группы из параметра -G, а не заменять им текущее значение;
  • -g - установить новую основную группу для пользователя, такая группа уже должна существовать, и все файлы в домашнем каталоге теперь будут принадлежать именно этой группе.

У команды намного больше опций, но нам понадобятся только эти для решения нашей задачи. Теперь рассмотрим несколько примеров. Например, чтобы добавить пользователя в группу sudo linux используйте такую комбинацию:

sudo usermod -a -G wheel user

Если вы не будете использовать опцию -a, и укажите только -G, то утилита затрет все группы, которые были заданы ранее, что может вызвать серьезные проблемы. Например, вы хотите добавить пользователя в группу disk и стираете wheel, тогда вы больше не сможете пользоваться правами суперпользователя и вам придется сбрасывать пароль. Теперь смотрим информацию о пользователе:


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

sudo usermod -a -G disks,vboxusers user

Основная группа пользователя соответствует его имени, но мы можем изменить ее на другую, например users:

sudo usermod -g users user


Теперь основная группа была изменена. Точно такие же опции вы можете использовать для добавления пользователя в группу sudo linux во время его создания с помощью команды useradd.

Добавление пользователя в группу через GUI

В графическом интерфейсе все немного сложнее. В KDE добавление пользователя в группу linux выполняется с помощью утилиты Kuser. Мы не будем ее рассматривать. В Gnome 3 возможность управления группами была удалена, но в разных системах существуют свои утилиты для решения такой задачи, например, это system-config-users в CentOS и Users & Groups в Ubuntu.

Для установки инструмента в CentOS выполните:

sudo yum install system-config-users

Дальше вы можете запустить утилиту через терминал или из главного меню системы. Главное окно утилиты выглядит вот так:


Выполните двойной клик по имени пользователя, затем перейдите на вкладку "группы". Здесь вы можете выбрать отметить галочками нужные дополнительные группы, а также изменить основную группу:


Для установки утилиты в Ubuntu запустите такую команду:

sudo apt install gnome-system-tools

Здесь интерфейс будет немного отличаться, утилита будет выглядеть так же, как и системная программа настройки пользователей только появится возможность управления группами Linux.

Выводы

В этой небольшой статье мы рассмотрели как добавить пользователя в группу linux. Это может быть очень полезно для предоставления пользователю дополнительных полномочий и разграничения привилегий между пользователями. Если у вас остались вопросы, спрашивайте в комментариях!

Favorite

Добавить в избранное

Главное меню » Linux » Изменение учетных записей пользователей с помощью команды Usermod


В ы можете создать нового пользователя с помощью команды useradd, но если вы неправильно настроили учетную запись, вам не обязательно удалять пользователя. Вы можете изменить настройки учетной записи пользователя с помощью команды usermod в Linux.

Usermod (short for user modification) позволяет вам изменять различные аспекты учетной записи пользователя. Вы можете изменить домашний каталог и оболочку пользователя. Вы можете добавить пользователя в разные группы или заблокировать аккаунт.

8 практических примеров команды usermod

Поскольку вы имеете дело с управлением учетными записями пользователей, вы должны иметь права root или sudo для запуска команды usermod.

Позвольте нам показать вам несколько примеров.

1. Измените имя пользователя

Вы можете изменить имя пользователя с помощью опции -l команды usermod:

Имейте в виду, что кроме имени пользователя, ничего не меняется само по себе. Вам придется вручную изменить домашний каталог и почтовую папку.

2. Измените домашний каталог пользователя

Вы можете изменить домашний каталог пользователя на другой каталог.

Имейте в виду, что он изменит домашний каталог, даже если каталог не существует, но он не будет создавать его самостоятельно.

Порядок m и d также важен здесь.

3. Измените логин оболочки пользователя

Вы также можете изменить оболочку пользователя по умолчанию с помощью команды usermod. Допустим, вы хотите изменить оболочку по умолчанию на zsh, вот что вы можете сделать:

4. Измените группу пользователей по умолчанию

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

5. Добавьте пользователя в другие группы

Это, пожалуй, наиболее распространенное использование команды usermod. Если вы хотите добавить пользователя в список sudoer, все, что вам нужно сделать, это добавить пользователя в группу sudo.

Вы заметили, что мы использовали здесь опцию -aG, а не только -G. Это потому, что если вы используете только опцию -G, она заменит пользовательские группы новой группой, которую вы указали.

Вот почему вы должны использовать опцию добавления -a, чтобы пользователь был добавлен в новую группу дополнительно, а не удален из ее предыдущих групп.

6. Блокировка и разблокировка учетной записи пользователя

Вы можете заблокировать учетную запись пользователя в Linux с помощью опции команды usermod -L. Заблокированный пользователь не может войти в систему.

Вы также можете разблокировать пользователя с помощью опции -U:

7. Установите срок действия учетной записи пользователя.

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

Чтобы установить срок действия для учетной записи пользователя, вы можете использовать опцию -e с датой в формате YYYY-MM-DD.

8. Измените UID пользователя

Вы можете изменить UID (идентификатор пользователя) пользователя с помощью опции -u:

Есть еще несколько вариантов, которые вы можете изучить .

На наш взгляд, то, что вы только что видели, является наиболее распространенными примерами команды usermod. Если у вас есть какие-либо вопросы или предложения, дайте мне знать.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Команда usermod изменяет системные файлы учётных записей согласно переданным в командной строке параметрам.

ПАРАМЕТРЫ

Параметры команды usermod :

-a , --append Добавить пользователя в дополнительную группу(ы). Использовать только вместе с параметром -G .

-c , --comment КОММЕНТАРИЙ Новое значение поля комментария в файле пользовательских паролей. Обычно его изменяют с помощью программы chfn (1).

-d , --home ДОМАШНИЙ_КАТАЛОГ Новый домашний каталог пользователя. Если указан параметр -m , то содержимое текущего домашнего каталога будет перемещено в новый домашний каталог, который будет создан, если он ещё не существует.

-e , --expiredate ДАТА_УСТАРЕВАНИЯ Дата, когда учётная запись пользователя будет заблокирована. Дата задаётся в формате ГГГГ-ММ-ДД .

-f , --inactive ДНЕЙ Число дней, которые должны пройти после устаревания пароля, чтобы учётная запись заблокировалась навсегда. Если указано значение 0, то учётная запись блокируется сразу после устаревания пароля, а при значении -1 данная возможность не используется. По умолчанию используется значение -1.

-g , --gid ГРУППА Имя или числовой идентификатор новой начальной группы пользователя. Группа с таким именем должна существовать. Идентификатор группы должен указывать на уже существующую группу. По умолчанию идентификатор группы установлен в 1.

-G , --groups ГРУППА1 [ ,ГРУППА2. [ ,ГРУППАN ]]] A list of supplementary groups which the user is also a member of. Each group is separated from the next by a comma, with no intervening whitespace. The groups are subject to the same restrictions as the group given with the -g option. If the user is currently a member of a group which is not listed, the user will be removed from the group. This behaviour can be changed via the -a option, which appends the user to the current supplementary group list.

-l , --login НОВОЕ_ИМЯ The name of the user will be changed from LOGIN to NEW_LOGIN . Nothing else is changed. In particular, the user's home directory name should probably be changed manually to reflect the new login name.

-L , --lock Заблокировать пароль пользователя. Это делается помещением символа '!' в начало шифрованного пароля, чтобы приводит к блокировке пароля. Не используйте этот параметр вместе с -p или -U .

Note: if you wish to lock the account (not only access with a password), you should also set the EXPIRE_DATE to 1 .

-o , --non-unique При использовании с параметром -u , этот параметр позволяет указывать не уникальный числовой идентификатор пользователя.

-p , --password ПАРОЛЬ Шифрованное значение пароля, которое возвращает функция crypt (3).

-s , --shell ОБОЛОЧКА Имя новой регистрационной оболочки пользователя. Если задать пустое значение, то будет использована регистрационная оболочка по умолчанию.

-u , --uid UID Числовое значение идентификатора пользователя (ID). Значение должно быть уникальным, если не задан параметр -o . Значение должно быть неотрицательным. Значения от 0 до 999 обычно зарезервированы для системных учётных записей. Для всех файлов, которыми владеет пользователь и которые расположены в его домашнем каталоге идентификатор владельца файла будет изменён автоматически. Для файлов, расположенных вне домашнего каталога идентификатор нужно изменять вручную.

-U , --unlock Разблокировать пароль пользователя. Это выполняется удалением символа '!' из начала шифрованного пароля. Не используйте этот параметр вместе с -p или -L .

Note: if you wish to unlock the account (not only access with a password), you should also set the EXPIRE_DATE (for example to 99999 , or to the EXPIRE value from /etc/default/useradd ).

ПРЕДОСТЕРЕЖЕНИЯ

Команда usermod не будет изменять имя пользователя, если этот пользователь в данный момент работает в системе. Если требуется изменить числовой идентификатор пользователя, нужно проверить, что от этого пользователя нет запущенных процессов. Владельца файлов crontab нужно изменять вручную. Владельца заданий at нужно изменять вручную. Также вручную нужно сделать все изменения связанные с NIS на сервере NIS.

CONFIGURATION

The following configuration variables in /etc/login.defs change the behavior of this tool:

MAIL_DIR (string) Почтовый каталог. Данный параметр нужен для управления почтовым ящиком при изменении или удалении учётной записи пользователя. Если параметр не задан, то используется значение указанное при сборке.

MAIL_FILE (string) Defines the location of the users mail spool files relatively to their home directory.

The MAIL_DIR and MAIL_FILE variables are used by useradd , usermod , and userdel to create, move, or delete the user's mail spool.

If MAIL_CHECK_ENAB is set to yes , they are also used to define the MAIL environment variable.

MAX_MEMBERS_PER_GROUP (number) Maximum members per group entry. When the maximum is reached, a new group entry (line) is started in /etc/group (with the same name, same password, and same GID).

The default value is 0, meaning that there are no limits in the number of members in a group.

This feature (split group) permits to limit the length of lines in the group file. This is useful to make sure that lines for NIS groups are not larger than 1024 characters.

If you need to enforce such limit, you can use 25.

Note: split groups may not be supported by all tools (even in the Shadow toolsuite. You should not use this variable unless you really need it.

Читайте также: