есть ли возможность использовать базу данных (mysql) для управления учетными данными SSH вместо / etc / passwd?
Я знаю, что могу использовать ldap, но мне нужно только простое управление пользователями, а ldap кажется немного мощным для этой работы.
Да. Аутентификация Linux основана на подключаемых модулях аутентификации (PAM), которые позволяют легко переключаться с одного сервера аутентификации на другой. Просто установите и настройте модуль PAM MySQL с соответствующей базой данных пользователей в MySQL.
Предварительно скомпилированные пакеты доступны в EPEL архив для RHEL / CentOS as pam_mysql
и pam-mysql
пакет должен быть доступен в Debian / Ubuntu.
Хотя PAM-MySQL может управлять учетными данными для входа, это неполное решение, поскольку он обрабатывает только часть аутентификации. Он не создает учетную запись пользователя в системе. Например:
ls -l
не будет использовать PAM-MySQL для преобразования UID в имена пользователей.Другими словами, PAM-MySQL заменяет /etc/shadow
, не для /etc/passwd
. Вам нужно будет либо создать /etc/passwd
вход и запись MySQL для каждого пользователя или дополнить PAM-MySQL NSS MySQL.
LDAP действительно является лучшим инструментом для этой работы, так как вы сможете централизовать информацию об учетной записи пользователя в одном месте. Я не верю, что он слишком силен. Скорее, это своего рода база данных, специально разработанная для управления учетными записями пользователей, поэтому лучше всего будет просто использовать LDAP как стандартное решение, а не взламывать нестандартную систему с MySQL. Либо OpenLDAP, либо 389 Directory Server были бы более подходящей пользовательской базой данных, чем MySQL. (Оба они могут быть настроены для использования серверной части SQL, если вы настаиваете.)