Введение

Инструмент для смены паролей в Unix-подобных ОС

`passwd` – это команда в Unix, Plan 9, Inferno и большинстве Unix-подобных операционных систем, используемая для смены пароля пользователя. Введенный пользователем пароль проходит через функцию выработки ключа для создания хешированной версии нового пароля, которая и сохраняется. Сохраняется только хешированная версия; введенный пароль не сохраняется из соображений безопасности. При входе пользователя в систему, введенный им пароль также проходит через ту же функцию выработки ключа, и полученная хешированная версия сравнивается с сохраненной. Если хеши совпадают, введенный пароль считается верным, и пользователь аутентифицируется. Теоретически, два разных пароля могут давать один и тот же хеш. Однако криптографические хеш-функции разработаны таким образом, что найти любой пароль, дающий тот же хеш, крайне сложно и практически невозможно, поэтому, если полученный хеш совпадает с сохраненным, пользователь может быть аутентифицирован. Команда `passwd` может использоваться для смены паролей локальных учетных записей, а также, в большинстве систем, для смены паролей, управляемых в распределенных механизмах аутентификации, таких как NIS, Kerberos или LDAP.

История

До появления механизма затенения паролей, хешированный пароль пользователя Unix хранился во втором поле записи в файле /etc/passwd (в формате, состоящем из семи полей, как описано выше). Механизм затенения паролей впервые появился в системах Unix с разработкой SunOS в середине 1980-х годов, System V Release 3.2 в 1988 году и BSD4.3 Reno в 1990 году. Однако, поставщики, выполнявшие портирование из более ранних версий UNIX, не всегда включали новые функции затенения паролей в свои сборки, оставляя пользователей этих систем уязвимыми для атак на файлы паролей. Системные администраторы также могут настроить хранение паролей в распределенных базах данных, таких как NIS и LDAP, вместо файлов на каждой подключенной системе. В случае с NIS, механизм теневого пароля часто по-прежнему используется на серверах NIS; в других распределенных механизмах проблема доступа к различным компонентам аутентификации пользователя решается механизмами безопасности базового хранилища данных. В 1987 году автор оригинального пакета Shadow Password Suite, Джули Хоу, подверглась взлому компьютера и написала первую версию Shadow Suite, включающую команды login, passwd и su. Первая версия, разработанная для операционной системы SCO Xenix, быстро была портирована на другие платформы. Shadow Suite был портирован на Linux в 1992 году, через год после первоначального объявления о проекте Linux, и был включен во многие ранние дистрибутивы, и продолжает включаться во многие современные дистрибутивы Linux. Ранее для изменения паролей в различных схемах аутентификации требовались разные команды. Например, команда для изменения пароля NIS была yppasswd. Это требовало от пользователей знания различных методов изменения паролей для разных систем, а также приводило к неэффективному дублированию кода в различных программах, выполняющих одни и те же функции с разными бэк-эндами. В большинстве реализаций теперь используется единая команда passwd, а управление тем, где фактически изменяется пароль, осуществляется прозрачно для пользователя посредством подключаемых модулей аутентификации (PAM). Например, тип используемого хеша определяется конфигурацией модуля pam_unix.so. По умолчанию использовался хеш MD5, в то время как современные модули также поддерживают более надежные хеши, такие как blowfish, SHA256 и SHA512.