Пароли в Linux & формат файла Shadow

Традиционные Unix системы хранят данные о пользователях вместе с зашифрованным паролем в текстовом файле ``/etc/passwd''. Поскольку этот файл используется многими инструментальными средствами (типа ``ls'') чтобы отобразить владельца файла и другие подобные сведения, файл должен быть открыт на чтение для всех, что, конечно, дает отличный шанс хакерам.

Другой метод хранения информации, тот, который я всегда использую, затенение паролей. Как и раньше, есть файл /etc/passwd с данными о пользователях. Однако, вместо паролей ставится символ “x”, а пароли хранятся отдельно в файле `` /etc/shadow'', в котором хранятся зашифрованные пароли и некоторая дополнительная информация о паролях. Файл /etc/shadow доступен для чтения только root, что повышает защиту.

В Red Hat Linux установка пакета Shadow Password Suite, ответственного за теневые пароли, проста. Наберите как root:

  /usr/sbin/pwconv      Для конвертации в формат shadow
  /usr/sbin/pwunconv    Для конвертации назад в нормальный формат

С теневыми (shadow) паролями файл ``/etc/passwd'' хранит сведения о пользователях в виде:

smithj:x:561:561:Joe Smith:/home/smithj:/bin/bash

Каждое поле в записи отделено символом “:”:

  • Username, до 8 символов. Регистр важен, обычно пишут в нижнем регистре.

  • Символ “x” в поле пароля. Пароли хранятся в файле ``/etc/shadow''.

  • Числовой user id. Назначается скриптом ``adduser''. Unix использует данное значение и значение группы для определения кому какие файлы принадлежат.

  • Числовой group id. Red Hat использует group id в довольно неожиданном способе усиления защиты файла. Часто group id равен user id.

  • Полное имя пользователя. Максимальная длина мне неизвестна, но лучше ограничиться разумными рамками (до 30 символов).

  • Домашний каталог пользователя. Обычно /home/username (например, /home/smithj). Там хранятся все личные файлы пользователя и его web-страницы.

  • Пользовательская оболочка. Обычно используется ``/bin/bash'' для доступа к оболочке bash.

Если нужно чтобы пользователь не имел доступа к shell, создайте скрипт ``/bin/sorrysh'', который выведет соотвтетствующее сообщение и завершит работу пользователя. Впишите скрипт сюда в качестве оболочки.

Note

Замечание: Если пользователь должен передавать файлы по “FTP” shell должна быть нормальной оболочкой, например, ``/bin/bash'', а чтобы не давать shell-доступа надо настроить доступ в домашнем каталоге пользователя. См. раздел Администрирование Web-сервера и HTTP Proxy в главе 7.

Файл ``/etc/shadow'' хранит данные о пользователе в формате:

smithj:Ep6mckrOLChF.:10063:0:99999:7:::

Как и в файле passwd, каждое поле в файле shadow отделяется двоеточием:

  • Username, до 8 символов. Совпадает с username в файле /etc/passwd.

  • Пароль, 13 символов (зашифрованный). Пустая запись (то есть, ::) показывает, что для входа пароль не нужен (обычно идея плохая), и запись ``*'' (то есть, :*:) показывает, что вход заблокирован.

  • Количество дней (с 1 января 1970), когда пароль был сменен в последний раз.

  • Число дней до смены пароля (0 показывает, что он может быть сменен всегда).

  • Число дней, после которых пароль должен быть сменен (99999 показывает, что пользователь может не менять пароль фактически никогда).

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

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

  • Число дней, начиная с 1 января 1970, после которых пароль будет заблокирован.

  • Зарезервировано для возможного будущего использования.