Управление ИД пользователей для экономии ресурсов процессора с помощью команды mkpasswd

В системе с большим числом пользователей можно ускорить вход в систему и сэкономить ресурсы процессора за счет применения индексированного файла /etc/passwd для поиска идентификаторов пользователей. В этом случае обычный файл /etc/passwd сохраняется в системе, но не применяется для обработки запросов на вход в систему.

Для создания индексированного файла применяется команда mkpasswd. Если индексированная версия файла устарела, то при входе в систему поиск идентификатора пользователя выполняется путем последовательного перебора записей обычного файла /etc/passwd. Для выполнения такого поиска требуется значительно больше ресурсов процессора.

Для создания индексированных версий файла паролей применяется команда mkpasswd -f. Эта команда создает индексные версии файлов /etc/passwd, /etc/security/passwd и /etc/security/lastlog . В результате создаются файлы /etc/passwd.nm.idx, /etc/passwd.id.idx, /etc/security/passwd.idx и /etc/security/lastlog.idx. Обратите внимание, что создание таких файлов позволяет значительно повысить производительность приложений, для запуска которых требуется ввести зашифрованный пароль (например, процедуры входа в систему и других программ, запрашивающих у пользователя пароль).

Приложение, не запрашивающее у пользователя зашифрованный пароль, будет выполняться быстрее, если для проверки имени и пароля пользователя будет применяться функция _getpwent() вместо getpwent(), _getpwnam_shadow(name,0) вместо getpwnam(name) и _getpwuid_shadow(uid,0) вместо getpwuid(uid). Это связано с тем, что указанные функции не выполняют поиск в файле /etc/security/passwd.

Не изменяйте файлы паролей вручную, так как при этом будет изменено время последнего обновления файла. Это время перестанет совпадать со временем изменения файлов базы данных (.idx), и в итоге будет применяться алгоритм поиска по умолчанию (последовательный перебор записей). При вызове команд passwd, mkuser, chuser и rmuser (или аналогичных команд SMIT) индексные файлы обновляются автоматически. Если файл /etc/passwd был изменен вручную или с помощью команды pwdadm, то необходимо обновить индекс.
Прим.: Команда mkpasswd не изменяет базы данных пользователей NIS, DCE и LDAP.