Вход пользователя в любую систему состоит из нескольких этапов:
Эти операции выполняются для большого количества разных приложений в современных UNIX-like ОС. Вот пример таких утилит с моей рабочей станции:
Дублировать один и тот же код сразу в группе утилит (например в su, login, sshd авторизация/аутентификация производится идентичным образом) это во-первых хороший способ сделать море ошибок, а во-вторых просто море удовольствия при попытке сменить систему авторизации (например при желании использовать LDAP).
Для того, чтобы решить эту проблему раз и навсегда была создана технология и сопутствующая инфраструктура PAM.