Samba: аутентификация AD для локальных пользователей
У нас есть много серверов разработки Linux, к которым обычно обращаются через SSH. У каждого разработчика есть локальная учетная запись на каждой коробке, управляемая Puppet. Вход в систему только через закрытые ключи; нет локальных паролей.
Я хотел бы запустить Samba на этих компьютерах и пройти аутентификацию на нашем домене AD. Я не хочу аутентификацию AD для чего-либо, кроме Samba - ко всему остальному обращаются через SSH и закрытые ключи.
Вот мой smb.conf
:
[global]
workgroup = DOMAIN
server string = Samba Server Version %v
security = ADS
realm = DOMAIN.FQDN
encrypt passwords = yes
log level = 3
log file = /var/log/samba/%U.log
[homes]
comment = Home Directories
browseable = no
writable = yes
Я почти уверен, что конфигурация Kerberos в порядке, так как я присоединился к домену.
Соответствующий (то есть, нестандартный) nsswitch.conf
линии:
passwd: files winbind
group: files winbind
Похоже, проблема в том, что AD UID сопоставляется с UIX UID. Бэкэнд TDB по умолчанию будет создавать "виртуальные" учетные записи UNIX по требованию, когда пользователи AD подключаются, но я не хочу этого - я хочу пользователя foo
сопоставить с локальным пользователем foo
, Если я добавлю idmap uid
а также idmap gid
Линии пользователя аутентифицируются, но их учетные записи не сопоставляются с учетными записями UNIX.
Есть идеи? Сомоен, должно быть, сделал это раньше! Я не хочу переходить на использование winbind и AD для предоставления всей информации об учетной записи из-за проблем с поддержанием согласованных UID/GID на всех машинах. Мы также внесли большой вклад в существующую пользовательскую конфигурацию, управляемую Puppet, которую мы не хотим изобретать заново.
2 ответа
Убедитесь, что служба winbind работает.
Настройте в своем /etc/pam.d/samba:
account [default=bad success=ok user_unknown=ignore] pam_winbind.so
account required pam_permit.so
password sufficient pam_winbind.so use_authtok
password required pam_deny.so
session required pam_limits.so
auth required pam_nologin.so
auth sufficient pam_winbind.so use_first_pass
auth required pam_deny.so
Изменения Pam иногда требуют перезапуска winbind. Не должно, но практический опыт говорит, что делай это в любом случае.
В smb.conf вам также необходимо:
realm = YOURKERBEROSREALMNAME
password server = the host or IP of your ADC
idmap backend = rid:DOMAIN=5000-100000000
idmap uid = 10000-10000000
idmap gid = 10000-10000000
winbind use default domain = Yes
winbind enum users = Yes
winbind enum groups = Yes
Где DOMAIN - это имя вашей рабочей группы или домена, а область соответствует тому, что находится в вашем krb5.conf
Перезапустите сервисы samba после изменений в smb.conf
От http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/idmapper.html
Член Samba сетевого домена Windows (в стиле NT4 или ADS) может быть настроен для обработки сопоставления идентификаторов различными способами. Механизм, который он использует, зависит от того, используется ли демон winbindd и как настроена функциональность winbind. Параметры конфигурации кратко описаны здесь:
Winbind не используется; пользователи и группы являются локальными:
Там, где winbindd не используется, Samba (smbd) использует базовые механизмы UNIX/Linux для определения идентичности входящего сетевого трафика. Это делается с использованием LoginID (имени учетной записи) в запросе на настройку сеанса и передачей его вызову системной функции getpwnam(). Этот вызов реализован с использованием механизма переключения службы имен (NSS) в современных системах UNIX/Linux. Говоря "пользователи и группы являются локальными", мы подразумеваем, что они хранятся только в локальной системе, в / etc / passwd и / etc / group соответственно.
Например, когда пользователь BERYLIUM\WambatW пытается открыть соединение с сервером Samba, входящий запрос SessionSetupAndX сделает системный вызов для поиска пользователя WambatW в файле / etc / passwd.
Эта конфигурация может использоваться с автономными серверами Samba, серверами-членами домена (NT4 или ADS) и для PDC, который использует серверную часть Samba passdb на основе smbpasswd или tdbsam.
Похоже, что если вы просто уберете winbind из уравнения, все будет хонкидореем, если предположить, что ваши пользователи AD такие же, как локальные пользователи / etc / passwd.