Версии Microsoft Windows 2003 Server R1/R2, Ubuntu 8.04/8.10, Gentoo 2007/2008/2009.
Релизации возможны две:
Во всех виденных мной дистрибутивах по-умолчанию этот файл идёт уже удобоваримый, остаётся только допилить следующие параметры:
nss_map_objectclass posixAccount User nss_map_objectclass shadowAccount User nss_map_attribute uid msSFU30Name nss_map_attribute uidNumber msSFU30UidNumber nss_map_attribute gidNumber msSFU30GidNumber nss_map_attribute uniqueMember msSFU30PosixMember nss_map_attribute userPassword msSFU30Password nss_map_attribute homeDirectory msSFU30HomeDirectory nss_map_attributes loginShell msSFU30LoginShell nss_map_objectclass posixGroup Group pam_login_attribute msSFU30Name pam_filter objectclass=User pam_password ad
N.B. Внимательно сверьте приведённые параметры секции Services for UNIX 3.5 mappings - некоторые параметры в файле конфигурации отсутствуют, запись с homeDirectory должна быть только одна.
В параметрах passwd, shadow и group добавляем ldap, чтобы запросы несуществующих пользователей производились в AD:
passwd: compat ldap shadow: compat ldap group: compat ldap
На данном этапе команда
$ getent passwd
должна выводить кроме пользователей Unix ещё и пользователей домена, для которых определены Unix-параметры msSFU30xxxxxxx в AD.
В простом случае с одним доменом, файл выглядит так:
[appdefaults]
pam = {
minimal_uid = 1000
forwardable = true
}
[libdefaults]
# Домен по-умолчанию
default_realm = DOMAIN.TDL
forwardable = true
proxiable = true
[realms]
DOMAIN.TDL = {
# Адрес сервера Kerberos, при правильной настройке DNS достаточно указать имя самого домена
kdc = domain.tdl
# Адрес сервера администрирования, обычно совпадает с kdc
admin_server = domain.tdl
}
[domain_realm]
.domain.tdl = DOMAIN.TDL
domain.tdl = DOMAIN.TDL
Находим в каталоге /etc/pam.d/ файлы, относящиеся ко всем программам системы. В Gentoo это один файл /etc/pam.d/system-auth; в Ubuntu это четыре файла: /etc/pam.d/common-auth, /etc/pam.d/common-account, /etc/pam.d/common-password, /etc/pam.d/common-session.
В них надо добавить вызов модуля pam_krb5.so.
Gentoo
auth required pam_krb5.so try_first_pass account required pam_krb5.so passwd required pam_krb5.so session required pam_mkhomedir.so umask=0077
Последний модуль pam_mkhomedir.so позволяет создавать каталог пользователя при его первом входе в систему, назначая права на него 0700.
В целом должно получиться примерно следующее:
auth required pam_env.so auth optional pam_group.so auth sufficient pam_unix.so try_first_pass likeauth nullok auth required pam_krb5.so try_first_pass account sufficient pam_unix.so account required pam_krb5.so password required pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 try_first_pass retry=3 password sufficient pam_unix.so try_first_pass use_authtok nullok md5 shadow password required pam_krb5.so try first_pass password required pam_deny.so session required pam_limits.so session required pam_env.so session required pam_unix.so session required pam_mkhomedir.so umask=0077
Ubuntu
В моих изысканиях файлы выглядели следующим образом (комментарии убраны):
auth [success=2 default=ignore] pam_unix.so nullok_secure auth [success=1 default=ignore] pam_krb5.so use_first_pass auth requisite pam_deny.so auth required pam_permit.so
account [success=2 new_authtok_reqd=done default=ignore] pam_unix.so account [success=1 default=ignore] pam_krb5.so account requisite pam_deny.so account required pam_permit.so
password [success=2 default=ignore] pam_unix.so obscure sha512 password [success=1 user_unknown=ignore default=die] pam_krb5.so try_first_pass password requisite pam_deny.so password required pam_permit.so
session [default=1] pam_permit.so session requisite pam_deny.so session required pam_permit.so session required pam_unix.so session optional pam_ck_connector.so nox11 session required pam_mkhomedir.so umask=0077
В процессе…
Дискуссия