В любой системе Linux понимание управления пользователями и группами является основополагающим. Это важнейшая часть системного администрирования, позволяющая организовать и защитить ресурсы системы. Основу этого управления составляет работа с пользователями и группами, позволяющая определить, кто и когда имеет доступ к тем или иным ресурсам.
Что такое пользователи и группы Linux?
Linux - это многопользовательская система, то есть она предназначена для одновременного использования многими людьми. Это может быть как отдельный человек на своей собственной системе, так и несколько человек, использующих центральный сервер. Каждый человек, использующий систему, называется "пользователем". Каждый пользователь имеет уникальные учетные данные для входа в систему и определенный набор разрешений, которые определяют, что он может или не может делать.
В отличие от этого, "группы" представляют собой просто набор пользователей. С их помощью легче управлять пользователями с одинаковыми наборами разрешений, поскольку можно управлять разрешениями группы пользователей одновременно, а не по отдельности. Например, группа под названием "разработчики" может содержать всех пользователей, которым разрешен доступ к определенному каталогу разработки.
Управление пользователями в Linux
При управлении пользователями в Linux необходимо хорошо знать некоторые файлы и концепции. К ним относятся:
Понимание файла /etc/passwd
Файл /etc/passwd является одним из важнейших файлов в Linux, поскольку он содержит информацию об учетных записях пользователей. Каждая строка в файле представляет собой учетную запись и состоит из семи полей, разделенных двоеточиями. Эти поля содержат такую информацию, как имя пользователя, идентификатор пользователя, идентификатор группы, домашний каталог, оболочка и т.д.
Пример файла /etc/passwd
Давайте посмотрим на строку из файла /etc/passwd:
1 | user:x:1001:1001:User Name,,,:/home/user:/bin/bash |
Эта строка содержит информацию о пользователе 'user'. Она показывает, что пользователь 'user' имеет идентификатор пользователя (UID) и идентификатор группы (GID) 1001, его домашний каталог - '/home/user', а его оболочка по умолчанию - '/bin/bash'.
Понимание файла /etc/shadow
В файле /etc/shadow, напротив, хранится информация о паролях пользователей в зашифрованном виде, а также информация о сроках действия паролей. В целях безопасности он доступен для чтения только пользователю root.
Пример файла /etc/shadow
Строка из файла /etc/shadow может выглядеть следующим образом:
1 | user:$6$KBvrdDvF$P1DhTPXbqyLKLuPx5GzaTOi6oJYG6A/r70n3F2CZePYVFXkdE0V/:17680:0:99999:7::: |
Здесь хранится пароль 'user' (в зашифрованном виде), а также сведения о старении пароля.
Создание, изменение и удаление учетных записей пользователей
Управление учетными записями пользователей осуществляется с помощью команд useradd, usermod и userdel.
Пример создания пользователя
Чтобы создать пользователя:
1 | sudo useradd -m -s /bin/bash user2 |
Эта команда создает нового пользователя 'user2' с домашним каталогом (-m) и установленной по умолчанию оболочкой '/bin/bash' (-s).
Пример изменения пользователя
Чтобы изменить существующего пользователя:
sudo usermod -s /bin/zsh user3
Эта команда изменяет стандартную оболочку 'user3' на '/bin/zsh'.
Пример удаления пользователя
Чтобы удалить пользователя:
1 | sudo userdel -r user |
Эта команда удаляет пользователя 'user' и его домашний каталог (-r).
Управление требованиями к паролям
Безопасность паролей очень важна. Команда passwd позволяет обновить пароль пользователя. Файл /etc/login.defs может быть модифицирован для установки парольных политик.
Пример изменения пароля пользователя
Чтобы изменить пароль пользователя 'user2':
1 | sudo passwd user2 |
Эта команда предложит вам ввести новый пароль для 'user2'.
Пример установки политик паролей
Чтобы задать политики паролей, можно отредактировать файл /etc/login.defs:
1 | sudo nano /etc/login.defs |
В этом файле можно задать такие политики, как PASS_MAX_DAYS (максимальное количество дней, в течение которых пароль остается действительным).
Управление группами в Linux
Как и пользователи, группы в Linux также имеют соответствующие задачи управления.
Понимание файла /etc/group
Файл /etc/group содержит информацию о группах. Каждая строка файла представляет собой группу и состоит из четырех полей, разделенных двоеточиями. Эти поля включают в себя имя группы, пароль, идентификатор группы и список членов группы.
Пример файла /etc/group
Строка из файла /etc/group может выглядеть следующим образом:
1 | developers:x:1002:user,user2 |
Эта строка сообщает нам, что существует группа с именем 'developers' и идентификатором группы (GID) 1002. Пользователи 'user' и 'user2' являются членами этой группы.
Создание, изменение и удаление групп
Управление группами осуществляется с помощью команд groupadd, groupmod и groupdel.
Пример создания группы
Чтобы создать группу:
1 | sudo groupadd developers |
Эта команда создает новую группу с именем 'developers'.
Пример изменения группы
Чтобы изменить группу:
1 | sudo groupmod -n dev developers |
Эта команда переименовывает группу 'developers' в 'dev'.
Пример удаления группы
Чтобы удалить группу:
1 | sudo groupdel developers |
Эта команда удаляет группу 'developers'.
Управление членством в группах
Добавить или удалить пользователей из группы можно с помощью команды usermod.
Пример добавления пользователя в группу
Чтобы добавить пользователя 'user' в группу 'developers':
1 | sudo usermod -a -G developers user |
Эта команда добавляет пользователя 'user' в группу 'developers'.
Пример удаления пользователя из группы
Чтобы удалить пользователя 'user3' из группы 'developers':
1 | sudo gpasswd -d user3 developers |
Эта команда удаляет пользователя 'user3' из группы 'developers'.
Расширенные сценарии и примеры управления пользователями и группами в Linux
Помимо базовых функций создания, изменения и удаления пользователей и групп, Linux позволяет реализовать более сложные и гибкие сценарии управления пользователями и группами. Здесь мы рассмотрим пять таких сценариев, иллюстрирующих мощь и универсальность инструментов командной строки Linux в управлении доступом и безопасностью системы.
Пример 1: Изменение домашней директории по умолчанию для новых пользователей
Когда Вы создаете нового пользователя, Linux обычно устанавливает его домашний каталог как /home/username. Однако Вы можете захотеть изменить местоположение по умолчанию для новых пользователей.
1 | sudo useradd -m -d /var/employees/user -s /bin/bash user |
Эта команда создает нового пользователя с именем 'user', но вместо того, чтобы поместить его домашний каталог в каталог '/home', она помещает его в каталог '/var/employees'. Для установки домашнего каталога используется опция -d, за которой следует желаемый путь.
Пример 2: Создание пользователя с определенным идентификатором пользователя и группы
Иногда для совместимости с существующей системой или в целях обеспечения безопасности требуется создать пользователя с определенным идентификатором пользователя (UID) и идентификатором группы (GID).
1 | sudo useradd -u 2001 -g 3001 user |
Эта команда создает пользователя 'user' с UID, равным 2001, и GID, равным 3001.
Пример 3: Создание общей группы для проекта
Представьте, что вы управляете Linux-сервером для команды, работающей над проектом. Всем нужен доступ к одному и тому же набору файлов, поэтому вы решили создать общую группу.
1 2 3 4 | sudo groupadd projectA sudo mkdir /opt/projectA sudo chgrp projectA /opt/projectA sudo chmod 2775 /opt/projectA |
Сначала мы создадим группу под названием 'projectA'. Затем создадим каталог для файлов группы projectA в '/opt/projectA'. Затем с помощью chgrp меняем группу '/opt/projectA' на 'projectA'. Наконец, мы устанавливаем права доступа для '/opt/projectA' на 2775. Это гарантирует, что все новые файлы, созданные в каталоге, будут принадлежать группе 'projectA' (именно это и делает '2' в начале разрешения - устанавливает бит setgid).
Пример 4: Добавление существующего пользователя в несколько групп
В Linux пользователь может состоять в нескольких группах. Это может быть полезно, если пользователю необходим доступ к ресурсам, принадлежащим разным группам.
1 | sudo usermod -a -G projectA,projectB user |
Эта команда добавляет пользователя 'user' в группы 'projectA' и 'projectB'.
Пример 5: Блокировка и разблокировка учетных записей пользователей
В некоторых случаях может потребоваться временная блокировка учетной записи пользователя. Например, пользователь может находиться в отпуске, и необходимо обеспечить, чтобы его учетная запись не использовалась в его отсутствие.
1 | sudo passwd -l user |
Эта команда блокирует учетную запись пользователя 'user', не позволяя ему войти в систему. Вы можете разблокировать ее снова с помощью команды:
1 | sudo passwd -u user |
Лучшие практики управления пользователями и группами
Вот несколько лучших практик управления пользователями и группами в Linux:
- Принцип наименьших привилегий: Всегда назначайте минимальные права, необходимые пользователю для выполнения своих обязанностей.
- Регулярный аудит: Регулярно проверяйте и очищайте неактивных пользователей и группы. Это позволит поддерживать безопасность системы и эффективность использования ресурсов.
- Строгие политики паролей: Внедряйте и применяйте надежные политики паролей. Сюда входят правила сложности паролей, сроки их действия, а также политики, запрещающие повторное использование паролей.
- Использование Sudo: Вместо того чтобы делиться паролем root, используйте команду sudo для предоставления пользователям временных повышенных привилегий. Это гарантирует, что все действия с привилегиями будут регистрироваться и проверяться.
- Разделяйте системных и обычных пользователей: Разделяйте системных и обычных пользователей. Системные учетные записи (UID которых по умолчанию не превышает 1000) не предназначены для регулярного использования.
- Осторожно управлять членством в группах: Тщательно управляйте членством в группах. Ненужный доступ может привести к неоправданному риску. Например, не все пользователи должны входить в группы sudo или admin.
Заключение
Понимание того, как управлять пользователями и группами в Linux, является основополагающим для эффективного системного администрирования. Оно позволяет контролировать, кто имеет доступ к каким ресурсам, обеспечивая безопасность и эффективность системы. В данном руководстве дается исчерпывающий обзор управления пользователями и группами в Linux: от понимания ключевых файлов /etc/passwd и /etc/group до создания, изменения и удаления пользователей и групп, управления политикой паролей и членством в группах. Всегда помните о необходимости следовать лучшим практикам для поддержания безопасной и хорошо организованной системы.