По разным причинам мы стремимся перенести наши файловые серверы с OS X Server 10.9 на настоящую реализацию Samba, работающую на Ubuntu 14.04LTS. У нас есть Ubuntu и работает с установленной Samba, и даже есть настройка PAM для аутентификации пользователей на нашем сервере Apple OpenDirectory.
Однако заставить Samba аутентифицировать пользователей так, как мы хотим, оказывается довольно сложной задачей. Похоже, у нас есть два варианта. Вариант 1 - просто попросить Samba делегировать это уже работающей подсистеме PAM; Вариант 2 - использовать встроенную поддержку Samba для LDAP и Kerberos. Готовая конфигурация в Ubuntu, похоже, отдает предпочтение варианту 1, и действительно кажется, что это была бы самая простая установка для управления в долгосрочной перспективе. (Вариант 2 требует дополнительной настройки, включая модификацию схемы Apple, что, как я понимаю, на практике не является хорошей идеей.)
Итак, все, что было сказано, я намерен попытаться получить Опция 1 работать (что почти и работает). В настоящее время, аутентификация PAM против OD уже работает. Я могу использовать ssh и входить в систему в качестве пользователя OD в течение всего дня. Однако что плохо, так это то, что пользователь должен сделать это, прежде чем Samba распознает его как пользователя UNIX. Другими словами, пока пользователь не подключится по SSH хотя бы один раз, Samba не распознает его учетные данные. Более того, я не верю, что Samba видит группы OD, потому что попытка ограничить подключение к определенным общим ресурсам на основе имен групп также не работает.
После того, как пользователь вошел в систему один раз с помощью SSH (или при попытке использовать стандартную локальную учетную запись) Samba навсегда принимает его имя и пароль. Пока этого не произошло, он их просто отвергает.
Файл smb.conf содержит следующие соответствующие записи:
server role = standalone server
obey pam restrictions = yes
passdb backend = tdbsam
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
guest account = nobody
map to guest = bad user
nsswitch.conf содержит следующие соответствующие записи:
passwd: compat ldap
group: compat ldap
shadow: compat ldap
.
Похоже, что для этого поведения должно быть простое исправление или обходной путь. Использование таких команд, как «getent», «id», «groups» и «passwd», правильно возвращает ожидаемые результаты и поведение. Только Кажется, у smbd есть что-то еще, что ему нужно.
Мне не удалось найти лучший способ сделать это, и я уже потратил несколько дней на изучение документации, веб-сайтов, книг О'Рейли и экспериментов с обоими сценариями. Я также прочитал этот похожий пост здесь. Кто-нибудь был на этом пути раньше? Приветствуется любая помощь, включая мудрые анекдоты UNIX и / или моральную поддержку.
Спасибо!