У меня есть конфигурация, в которой у меня есть корпоративный активный каталог, содержащий имена пользователей и пароли, которые используются для аутентификации. Я поддерживаю собственные облачные ресурсы, в моем случае хосты Linux RHEL 7; Мне предоставляется готовая конфигурация, в которой я создаю локальные (/ etc / passwd) учетные записи для всех пользователей на каждом хосте Linux, и эта учетная запись аутентифицируется с помощью krb5 в корпоративной AD. Это все хорошо и работает.
Однако я хочу поместить информацию о моем пользователе в LDAP вместо того, чтобы хранить информацию о пользователе на каждом хосте. Итак, я настроил серверы и клиенты nslcd и openldap. Я определяю информацию о пользователе (эквивалент / etc / passwd) в OpenLDAP, но оставляю информацию о пароле (которая все еще находится в AD). Эта конфигурация работает, когда я вхожу на хост через ssh (putty).
Я также хочу войти на хосты Linux через XRDP, а не напрямую VNC (поскольку я прихожу из Windows). Если я использую конфигурацию локального файла, например, пользователи находятся в / etc / passwd, krb5 в корпоративной AD для аутентификации пароля, XRDP работает. Однако, когда я беру пользователя из / etc / passwd и shadow, помещаю его в LDAP, даже если вход по ssh работает, вход в XRDP - нет.
/etc/pam.d/sshd и /etc/pam.d/xrdp-sesman идентичны; оба сначала содержат корпоративные записи AD через pam_krb5, а затем обычные конфигурации входа в систему unix / LDAP.
Проблема заключается в том, что pam_krb5 не получает информацию об UID / GID при входе в систему через XRDP.
Когда пользователь находится в LDAP, / var / log / secure для ssh выглядит так:
Oct 3 13:20:56 host sshd[2407]: pam_krb5[2407]: TGT verified
Oct 3 13:20:56 host sshd[2407]: pam_krb5[2407]: authentication succeeds for 'USER' (USER@DOMAIN)
Oct 3 13:20:56 host sshd[2407]: Accepted password for USER from IP_ADDR port 63785 ssh2
Oct 3 13:20:56 host sshd[2407]: pam_unix(sshd:session): session opened for user USER by (uid=0)
С пользователем в / etc / passwd XRDP (рабочий) / var / log / secure выглядит примерно так:
Oct 3 13:17:55 host xrdp-sesman[799]: pam_krb5[799]: TGT verified
Oct 3 13:17:55 host xrdp-sesman[799]: pam_krb5[799]: authentication succeeds for 'USER' (USER@DOMAIN)
Oct 3 13:17:55 host xrdp-sesman[2143]: pam_unix(xrdp-sesman:session): session opened for user USER by (uid=0)
Oct 3 13:17:56 host polkitd[495]: Registered Authentication Agent for unix-session:9 (system bus name :1.54 [/usr/libexec/xfce-polkit], object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8)
Но затем, в конфигурации, которая не работает, пользователь только в LDAP, XRDP, я получаю это в / var / log / secure:
Oct 3 13:21:40 host xrdp-sesman[799]: pam_krb5[799]: error resolving user name 'USER' to uid/gid pair
Oct 3 13:21:40 host xrdp-sesman[799]: pam_krb5[799]: error getting information about 'USER'
Oct 3 13:21:40 host xrdp-sesman[799]: pam_unix(xrdp-sesman:auth): check pass; user unknown
Oct 3 13:21:40 host xrdp-sesman[799]: pam_unix(xrdp-sesman:auth): authentication failure; logname= uid=0 euid=0 tty=xrdp-sesman ruser= rhost=
Я безуспешно пробовал изменять различные файлы pam. И я искал любой вариант, который мог придумать, но не нашел аналогичной проблемы / решения. Любые рекомендации будут оценены. Спасибо!
В итоге я понял, чего мне не хватало. Оказывается, у меня не было записей конфигурации LDAP в /etc/libuser.conf. Я правильно добавил информацию о LDAP-соединении в libuser.conf, перезагрузился (не уверен, было ли это необходимо), а затем я получил ожидаемый правильный результат входа во всех случаях использования.
Я не встречал упоминаний о необходимости обновления этого файла в каких-либо руководствах по настройке LDAP, которые я мог найти (и я никогда не вспоминал, чтобы делал это в прошлом при настройке системы, хотя, возможно, какая-то команда сделала это за меня). Я впервые попробовал конфигурацию OpenLDAP с XRDP. Так что, по-видимому, есть какое-то другое взаимодействие (очевидно, исходя из того, что я видел).