Столкнулся на днях с неожиданной ошибкой в samba, на которую потратил пару часов, пока не разобрался, в чем дело. Проблема возникла на файловом сервере linux, включенном в домен Windows. Использовал свою стандартную конфигурацию, но тут она почему-то подвела.
Нужно было добавить очередной сервер с samba в домен для использования в качестве файлового хранилища. Я такие вещи часто проделываю и у меня есть стандартная конфигурация самбы для этого дела. В зависимости от типа системы, бывают незначительные отличия в разных дистрибутивах, я сначала завожу машину в домен, проверяю что все работает, затем настраиваю самбу.
В этот раз все то же самое было. У меня имелась система CentOS 6. Добавил ее в домен, как описано в статье, заменив некоторые команды, так как они отличаются в 6-й и 7-й версии. Прошел все проверки, все было на первый взгляд нормально.
Залил файлы, выставил права, стал заходить на шару и удивился, что меня не пускает на нее. Причем странно не пускает. Зайти можно только залогинившись администратором домена, которым я добавлял сервер в домен. Всех остальных пользователей самба не пускала. В логах были следующие ошибки:
receive_smb_raw_talloc failed for client 10.1.4.189 read error = NT_STATUS_CONNECTION_RESET kerberos_kinit_password SRV-FILES$@DOMAIN.LOCAL failed: Preauthentication failed
При этом все проверки wbinfo возвращают пользователей, группы, доверительные отношения и прочее. Билетик керберос нормально получается. Файл nsswitch.conf был правильно отредактирован, все как полагается. Не проходила следующая проверка:
# id domainuser id: domainuser: No such user
и getent:
# getent passwd
выводил только локальных пользователей, а должен и доменных.
При этом, если сделать тоже самое с пользователем, под которым я заводил машину в домен, то команда возвращает верные данные о пользователе. Я хорошенько проверил все конфиги, сравнил их с другими серверами. Все как везде, но почему-то не работает. Перезапуски служб и перезагрузка не помогала.
Ответ нашел в интернете, хотя и не разу. Некоторые советы по решению схожих ошибок мне не помогли. А помогло вот что. У меня в конфмге самбы есть такие строки:
idmap config * : range = 10000-20000 idmap config * : backend = tdb
После того, как я их заменил на:
idmap config * : backend = rid idmap config * : range = 5000-10000000 idmap config * : base_rid = 0
Все заработало. Простая смена backend с tdb на rid не помогала, необходимы были дополнительные параметры. Я до конца не стал вникать, что это такое и в чем принципиальная разница. Понял только, что через этот инструмент winbind взаимодействует с утилитами AD. После замены бэкенда все заработало как и должно.
Почему именно здесь проявилась эта ошибка я не понял. Все конфиги специально сверил с еще одним таким же сервером, введенным в этот же домен пол года назад.
Помогла статья? Подписывайся на telegram канал автора
Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.