LDAP Linux Auth SSS
SSSD
Изначально задача стояла - сделать авторизацию (shell) в LDAP причем
* Огромный корпоративный LDAP где куча всяких данных и в целом мне не доступно управление * Доступ должен определяться членством в группах (обратить внимание - есть более чем 1 группа, memberOf ко торой должны иметь возможность логиниться на сервер что исключает pam_ldap) * sudo для этой группы * sudosh2 для записи сессии
Пару слов про sssd:
SSSD (System Security Services Daemon) позволяет обращаться к удаленным механизмам аутентификации. Таким образом стирается граница между локальной и сетевой аутентификацией и допускается использование разных механизмов. Информацию о пользователях предоставляет база данных, называемая доменом, которая может служить источником данных для удаленной аутентификации. Допускается использование нескольких механизмов, что разрешает нескольким серверам реализовать различные пространства имен. Полученная информация будет предоставлена внешним приложениям с помощью стандартных интерфейсов PAM и NSS.
SSSD выполняется как комплект служб, независимых от вызывающих их приложений. Поэтому приложениям необязательно создавать собственные подключения к удаленным доменам и даже не требуется знать о том, какая именно служба используется в данный момент. Локальное кэширование данных идентификации и информации о группах позволяет продолжать работу в автономном режиме независимо от источника данных (LDAP, NIS, IPA, DB, Samba и т.п.) и в целом повышает производительность. SSSD допускает использование нескольких поставщиков одного типа (например, LDAP). За подробной информацией обратитесь к руководству по развертыванию Red Hat Enterprise Linux 6.
sudosh2
spec есть в комплекте, сборка особого труда не представляет.
https://github.com/squash/sudosh2
rpm -ivh sudosh2-1.0.6-1.el5.x86_64.rpm
/etc/shells
/bin/sh /bin/bash /sbin/nologin /bin/dash /usr/bin/sudosh
head -1 /etc/passwd root:x:0:0:root:/root:/usr/bin/sudosh
ldap auth via pam_sss
yum install sssd-ldap yum -y install openldap-clients
/etc/sssd/sssd.conf
[sssd] config_file_version = 2 services = nss, pam, sudo, ssh domains = default reconnection_retries = 100 [nss] default_shell = /bin/sh [pam] [domain/default] ldap_tls_reqcert = never id_provider = ldap auth_provider = ldap access_provider = ldap ldap_uri = ldap://ldap/ dns_resolver_timeout = 15 ldap_search_base = dc=mirantis,dc=net ldap_access_filter = |(|(&(accessTo=itlab)(trustModel=byhost)(trustModel=fullaccess))(&(objectClass=posixAccount)(uid=mmaxur)))(memberOf=cn=it-cloud-ops,ou=groups,o=mirantis,dc=mirantis,dc=net) cache_credentials = False #enumerate = false enumerate = True sudo_provider = ldap ldap_sudo_search_base = ou=sudoers,dc=mirantis,dc=net cache_credentials = True ldap_tls_reqcert = never min_id = 1000 use_fully_qualified_names = False override_shell = /usr/bin/sudosh [autofs] [sudo] sudo_provider = ldap ldap_sudo_search_base = ou=sudoers,dc=mirantis,dc=net
/etc/init.d/sssd start chkconfig sssd on
/etc/openldap/ldap.conf
URI ldap://ldap/ BASE dc=mirantis,dc=net
cp -r /etc/pam.d /root authconfig --enablesssdauth --enablesssd --update
Проверить: (/root/pam.d - бекап)
[root@ic3-fuel-scc ~]# diff /etc/pam.d/ /root/pam.d/ diff /etc/pam.d/fingerprint-auth /root/pam.d/fingerprint-auth 11d10 < account [default=bad success=ok user_unknown=ignore] pam_sss.so 20d18 < session optional pam_sss.so diff /etc/pam.d/fingerprint-auth-ac /root/pam.d/fingerprint-auth-ac 11d10 < account [default=bad success=ok user_unknown=ignore] pam_sss.so 20d18 < session optional pam_sss.so diff /etc/pam.d/password-auth /root/pam.d/password-auth 7d6 < auth sufficient pam_sss.so use_first_pass 13d11 < account [default=bad success=ok user_unknown=ignore] pam_sss.so 18d15 < password sufficient pam_sss.so use_authtok 25d21 < session optional pam_sss.so diff /etc/pam.d/password-auth-ac /root/pam.d/password-auth-ac 7d6 < auth sufficient pam_sss.so use_first_pass 13d11 < account [default=bad success=ok user_unknown=ignore] pam_sss.so 18d15 < password sufficient pam_sss.so use_authtok 25d21 < session optional pam_sss.so diff /etc/pam.d/smartcard-auth /root/pam.d/smartcard-auth 11d10 < account [default=bad success=ok user_unknown=ignore] pam_sss.so 20d18 < session optional pam_sss.so diff /etc/pam.d/smartcard-auth-ac /root/pam.d/smartcard-auth-ac 11d10 < account [default=bad success=ok user_unknown=ignore] pam_sss.so 20d18 < session optional pam_sss.so diff /etc/pam.d/system-auth /root/pam.d/system-auth 7d6 < auth sufficient pam_sss.so use_first_pass 13d11 < account [default=bad success=ok user_unknown=ignore] pam_sss.so 18d15 < password sufficient pam_sss.so use_authtok 25d21 < session optional pam_sss.so diff /etc/pam.d/system-auth-ac /root/pam.d/system-auth-ac 7d6 < auth sufficient pam_sss.so use_first_pass 13d11 < account [default=bad success=ok user_unknown=ignore] pam_sss.so 18d15 < password sufficient pam_sss.so use_authtok 25d21 < session optional pam_sss.so