Product SiteDocumentation Site

8.4. Базы данных пользователей и групп

Список пользователей обычно хранится в файле /etc/passwd, а в файле /etc/shadow хранятся хешированные пароли. Это простые текстовые файлы, которые можно читать и изменять с помощью текстового редактора. Каждый пользователь указан в строке с несколькими полями, разделёнными двоеточием (“:”).

8.4.1. Список пользователей: /etc/passwd

Это список полей, используемых в файле /etc/passwd:
  • login - имя для входа, например rhertzog;
  • password: пароль, зашифрованный односторонней функцией (crypt), основанной на DES, MD5, SHA-256 или SHA-512. Специальное обозначение “x” показывает, что зашифрованный пароль сохранён в файле /etc/shadow;
  • uid: уникальный номер, идентифицирующий каждого пользователя;
  • gid: уникальный номер главной группы данного пользователя (Debian создает определённую группу для каждого пользователя по умолчанию);
  • GECOS: данные этого поля обычно содержат полное имя пользователя (в данном примере фамилия-имя-отчество, через запятую);
  • login directory - каталог пользователя (совпадает с именем для входа), предназначенный для хранения персональных файлов пользователя (переменная окружения $HOME обычно указывает сюда);
  • program to execute upon login - первая программа, выполняемая сразу после входа пользователя в систему. Обычно это командный интерпретатор (shell), например "/bin/bash", дающий пользователю возможность управления (в объёме его прав). Если указать специальное значение /bin/false (которое немедленно возвращает контроль системе ), то пользователь не сможет войти в систему.
Как упоминалось ранее, этот файл можно редактировать напрямую. Но есть более элегантные способы применения изменений, которые описаны в Раздел 8.4.3, «Изменение существующей учётной записи или пароля».

8.4.2. Скрытый и Зашифрованный Файл Паролей: /etc/shadow

Файл /etc/shadow содержит следующие поля:
  • login - имя входа пользователя в систему;
  • зашифрованный пароль;
  • несколько полей относятся к окончанию срока действия пароля.
С помощью этого файла можно установить срок действия паролей или установить время до отключения учётной записи после истечения срока действия пароля.

8.4.3. Изменение существующей учётной записи или пароля

Следующие команды позволяют изменять информацию, размещенную в конкретных полях базы данных пользователей. Команда passwd позволяет обычному пользователю изменять свой пароль, в этом случае сразу происходит изменение и обновление файла /etc/shadow, команда (chpasswdпозволяет администраторам обновлять пароли для списка пользователей в пакетном режиме); команда chfn (CHange Full Name - Изменить Полное Имя), зарезервированная для администратора (root), изменяет поле GECOS. Команда chsh (CHange SHell - Изменить командный интерпретатор) позволяет пользователю изменить свой первоначальный командный интерпретатор во время входа в систему, однако доступный выбор будет ограничен только теми, что расположены в файле /etc/shells. На администратора это ограничение не распространяется и он может установить себе любую программу по своему выбору.
И наконец, команда chage (CHange AGE - Изменить возраст) позволит администратору изменить пароль с истекающим сроком действия (Параметр -l user покажет настоящие значения). Вы можете также принудительно завершить срок действия пароля для пользователя командой passwd -e user. В этом случае при следующем входе пользователя в систему ему будет принудительно предложено заменить существующий пароль.
Помимо этих инструментов, команда usermod позволяет изменять все детали, упомянутые выше.

8.4.4. Отключение учётной записи

Вам может понадобиться “отключить учётную запись” (заблокировать пользователя), в качестве дисциплинарной меры при расследовании происшествия, или просто в случае длительного или окончательного отсутствия пользователя. Отключённая учётная запись означает, что пользователь не может войти или получить доступ к машине. Учётная запись остается недоступной и неизменной на машине и никакие файлы или данные не удаляются. Для этого надо применить команду passwd -l user (lock - блокировать). Снять блокировку учетной записи можно похожим способом, с параметром -u (unlock - разблокировать). Однако это предотвращает только вход пользователя в систему с использованием пароля. Пользователь по-прежнему может иметь доступ к системе с помощью ключа SSH (если он настроен). Чтобы предотвратить даже эту возможность, вам также необходимо аннулировать срок действия учётной записи, используя команду chage -E 1user или usermod -e 1 user (дав значение -1, любая из этих команд сбросит дату истечения срока действия на never). Чтобы (временно) отключить все учётные записи пользователей, просто создайте файл /etc/nologin.
Вы можете отключить учётную запись пользователя, не только заблокировав её, как описано выше, но и изменив её оболочку входа по умолчанию (chsh -s shell user). Если последняя изменена на команду /usr/sbin/nologin/, пользователь получает вежливое сообщение, информирующее о том, что вход в систему невозможен, в то время как команда /bin/false/ просто завершает работу, возвращая false. Переключателя для восстановления предыдущей оболочки нет. Вам необходимо получить и сохранить эту информацию, прежде чем изменять настройку. Эти оболочки часто используются для пользователей системы, которым не требуется вход в систему.

8.4.5. Список групп: /etc/group

Группы, существующие в системе, перечислены в файле /etc/group, простая текстовая база данных в формате, похожем на тот, что используется в файле /etc/passwd, со следующими полями:
  • имя группы;
  • пароль (необязательно): это поле используется в случаях, если необходимо присоединить кого-то к группе, при этом, не давать ему те же права, как у других членов этой группы (команды newgrp или sg, см. врезку К ОСНОВАМ Работа с несколькими группами);
  • gid: уникальный идентификационный номер группы;
  • список участников (данной группы): список имён пользователей, которые являются членами указанной группы, разделённых запятыми.
Команды addgroup и delgroup соответственно добавляют или удаляют группы. Команда groupmod изменит информацию о группе (её gid или идентификатор). Команда passwd -g group изменит пароль для группы, а команда passwd -r -g group удалит его.