JavaRush /Курсы /Docker SELF /Управление пользователями: команды adduser, usermod, pass...

Управление пользователями: команды adduser, usermod, passwd

Docker SELF
2 уровень , 1 лекция
Открыта

1. Почему важно понимать управление пользователями?

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

Зачастую в Linux на сервере работает множество пользователей. Система предоставляет каждому из них определённые права, чтобы защитить данные и избежать хаоса. Вам нужно знать, как добавлять новых пользователей (например, разработчиков в вашей команде), настраивать их окружение (например, менять shell) и при необходимости ограничивать доступ.


2. Создание пользователя с помощью adduser

Linux предоставляет команду adduser, которая является дружественным вариантом команды useradd. Она позволяет легко и быстро создавать новых пользователей:

Основной синтаксис

adduser имя_пользователя

Что происходит при создании пользователя?

  1. Создаётся новая запись в файле /etc/passwd для пользователя.
  2. Генерируется домашняя директория (например, /home/имя_пользователя).
  3. Настраиваются базовые параметры (например, shell по умолчанию).
  4. Вас попросят ввести пароль и дополнительную информацию (например, имя, номер телефона — но эти данные необязательны).

Пример

Давайте создадим нового пользователя dev_user:

sudo adduser dev_user

После ввода этой команды вам предложат:

  1. Указать пароль для пользователя.
  2. Ввести дополнительную информацию, которую можно пропустить, просто нажав Enter.

Проверка

Чтобы убедиться, что пользователь создан, можно просмотреть файл /etc/passwd:

cat /etc/passwd | grep dev_user

Вы увидите строку, содержащую информацию о пользователе dev_user.


3. Настройка пользователя с помощью usermod

Когда пользователь уже создан, может возникнуть необходимость изменить его параметры. Например, сменить имя, указать другой shell или добавить в группу.

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

Сначала убедитесь, что пользователь не вошёл в систему. Затем выполните команду:

sudo usermod -l новое_имя старое_имя

Пример:

sudo usermod -l developer dev_user

Теперь пользователь dev_user будет называться developer. Однако его домашняя директория пока останется старой.

Смена shell по умолчанию

Допустим, вам нужно изменить shell пользователя на /bin/zsh. Для этого выполните:

sudo usermod --shell /bin/zsh developer

Проверьте, что shell изменился, с помощью команды:

cat /etc/passwd | grep developer

Изменение домашней директории

Если вы хотите, чтобы новый пользователь работал в другой домашней директории, сделайте следующее:

sudo usermod -d /новый/путь developer
Важно:

если директория ещё не существует, используйте опцию -m, чтобы она была создана и содержимое старой директории было перемещено:

sudo usermod -d /home/new_developer -m developer

4. Управление паролями с помощью passwd

Установка и смена пароля

Для установки (или смены) пароля пользователя применяется команда:

sudo passwd имя_пользователя

Пример:

sudo passwd developer

Система попросит вас дважды ввести новый пароль, чтобы убедиться, что вы не ошиблись.

Принудительная смена пароля при следующем входе

Такое может пригодиться, если вы создаёте пользователей и хотите, чтобы они сами установили свой пароль при первом входе:

sudo passwd -e developer

После этого пользователь developer, войдя в систему, увидит сообщение о необходимости сменить пароль.


5. Практика

Задача 1: Создайте нового пользователя

  1. Добавим пользователя tester:

    sudo adduser tester
    
  2. Убедитесь, что пользователь создан:

    cat /etc/passwd | grep tester
    

Задача 2: Настройте параметры пользователя

  1. Поменяйте имя пользователя:

    sudo usermod -l test_user tester
    
  2. Поменяйте домашнюю директорию пользователя:

    sudo usermod -d /home/test_user -m test_user
    
  3. Убедитесь, что изменения применены:

    ls -l /home/
    
  4. Измените shell пользователя:

    sudo usermod --shell /bin/zsh test_user
    
  5. Проверьте обновлённые данные пользователя:

    cat /etc/passwd | grep test_user
    

Задача 3: Установите новый пароль пользователю

  1. Установите пароль для пользователя:

    sudo passwd test_user
    
  2. Принудьте пользователя сменить пароль при следующем входе:

    sudo passwd -e test_user
    

6. Знакомство с пайпами | в Linux

Пайпы | — это механизм в Unix/Linux, позволяющий передавать вывод одной команды (stdout) как ввод (stdin) для другой команды. Это мощный инструмент, который позволяет объединять команды, создавая "конвейеры" обработки данных.

Как это работает?

Когда вы используете пайп между командами, Linux направляет стандартный вывод первой команды в стандартный ввод следующей. Это позволяет эффективно обрабатывать большие объёмы данных без временных файлов.

Синтаксис:

команда1 | команда2 | команда3
  • команда1 генерирует данные.
  • команда2 обрабатывает полученные данные.
  • команда3 выполняет дальнейшую обработку или сохраняет результат.

Пример:

Вывести список файлов и отфильтровать по шаблону:

ls -l | grep ".txt"

Здесь ls -l выводит список файлов, а grep фильтрует только файлы с расширением .txt.

Подсчитать строки, содержащие определённое слово:

cat file.txt | grep "Linux" | wc -l

Последовательно выводится содержимое файла, ищутся строки с "Linux", а затем подсчитывается их количество.

Преимущества пайпов:

  • Упрощение сложных операций.
  • Минимизация использования временных файлов.
  • Возможность объединения мощных утилит Linux для автоматизации задач.

7. Знакомство с grep в Linux

grep (Global Regular Expression Print) — это утилита командной строки в Unix/Linux для поиска строк в файлах, соответствующих заданному шаблону. Она широко используется для фильтрации и поиска данных, благодаря поддержке регулярных выражений и гибким настройкам.

Как работает grep?

  • grep принимает на вход текстовый файл (или стандартный ввод), ищет строки, которые соответствуют указанному шаблону, и выводит их.
  • Если шаблон не найден, команда ничего не выводит.

Примеры

Вывести список файлов и отфильтровать по шаблону:

ls -l | grep ".txt"
  1. Сначала отрабатывает команда ls -l, которая выводит список файлов в текущей директории
  2. Вывод первой команды ls с помощью пайпа | перенаправляется как вход для второй команды grep
  3. Вторая команда фильтрует строки присланные ей и выдает только строки содержащие ".txt"

Подсчитать строки, содержащие определённое слово:

cat file.txt | grep "Linux" | wc -l
  1. Сначала отрабатывает команда cat file.txt, которая выводит на экран содержимое файла file.txt
  2. Вывод первой команды cat с помощью пайпа | перенаправляется как вход для второй команды grep
  3. Вторая команда фильтрует строки присланные ей и выдает только строки содержащие Linux
  4. Затем вывод второй команды grep с помощью пайпа | перенаправляется как вход для третей команды wc
  5. Третья команда считает количество присланных ей строк и отображает его

8. Типичные ошибки и нюансы

  1. Ошибка "user is currently logged in" при смене имени пользователя. Если пользователь вошёл в систему, вы не сможете изменить его имя. Убедитесь, что пользователь вышел.

  2. Ошибки при смене домашней директории. Если забыть указать -m, содержимое старой директории не перенесётся в новую. Пользователь может потерять свои данные.

  3. Забыли установить пароль пользователю. После создания пользователя через adduser обязательно проверьте, установлен ли у него пароль. Без пароля он не сможет войти.

  4. Значение UID и GID. Иногда администраторы хотят указать значения UID (идентификатор пользователя) и GID (идентификатор группы) при создании пользователя. Для этого используется команда useradd, но это тема для углубленного изучения Linux.


9. Практическое применение

Представьте: вы администратор серверов компании. К вам приходят разработчики, и каждый из них требует доступ к системе с индивидуальными настройками. Вы сможете:

  • Создавать пользователей и распределять им необходимый доступ.
  • Настраивать окружение (например, shell) в зависимости от их предпочтений.
  • Управлять паролями и следить за безопасностью.

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


Шпаргалка: основные команды

Команда Описание
sudo adduser имя_пользователя Создаёт нового пользователя.
sudo usermod -l новое старое Меняет имя пользователя.
sudo usermod --shell путь имя Указывает shell по умолчанию.
sudo usermod -d путь имя Меняет домашнюю директорию.
sudo passwd имя Устанавливает новый пароль.
sudo passwd -e имя Принуждает изменить пароль при следующем входе.
chage имя_пользователя Изменяет информацию о сроке действия пароля пользователя. В команде chage -l developer опция -l используется для отображения (листинга) информации о сроке действия пароля для указанного пользователя (developer).

Попрактикуйтесь! Linux — это всегда работа руками. Чем больше вы будете экспериментировать с командами, тем легче вам станет работать с реальными системами.

1
Задача
Docker SELF, 2 уровень, 1 лекция
Недоступна
Создание нового пользователя
Создание нового пользователя
1
Задача
Docker SELF, 2 уровень, 1 лекция
Недоступна
Изменение параметров пользователя
Изменение параметров пользователя
1
Задача
Docker SELF, 2 уровень, 1 лекция
Недоступна
Смена shell пользователя
Смена shell пользователя
1
Задача
Docker SELF, 2 уровень, 1 лекция
Недоступна
Настройка паролей пользователей
Настройка паролей пользователей
Комментарии (5)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Denis Prokopov Уровень 2
3 октября 2025
# Проверка, изменен ли shell пользователя путем поиска строки в файле /etc/passwd grep -q "^tester_user:.*:/bin/zsh$" /etc/passwd Как это решить . не понимаю. Даже правильное решение не помогает.
Алексей Уровень 2
29 июля 2025
у меня manjaro и adduser не работает, а работает useradd и никаких паролей и ничего такого вводить дальше не предлагается
PaulGazol Уровень 1
5 мая 2025
Я конечно все понимаю, но вставлять в валидацию того, что нет в изначальном задании - это ГЕНИАЛЬНО. Так еще то, что не освещалась в текущих главах
Danil Zhukov Уровень 24
22 марта 2025
Что такое shell? Это разве где-то объяснялось?
milyasow Уровень 3
7 мая 2025
https://javarush.com/quests/lectures/ru.javarush.system.linux.lecture.level01.lecture05 2. Оболочка (Shell) Оболочка — это программное обеспечение, которое интерпретирует команды и передаёт их операционной системе. В Linux самой популярной оболочкой является Bash (Bourne Again Shell). Альтернативы: Zsh: расширенная командная оболочка для энтузиастов кастомизации. Sh: классическая Unix-оболочка (минимализм).