Столкнулся на днях с неожиданной ошибкой в samba, на которую потратил пару часов, пока не разобрался, в чем дело. Проблема возникла на файловом сервере linux, включенном в домен Windows. Использовал свою стандартную конфигурацию, но тут она почему-то подвела.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Нужно было добавить очередной сервер с 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. После замены бэкенда все заработало как и должно.
Почему именно здесь проявилась эта ошибка я не понял. Все конфиги специально сверил с еще одним таким же сервером, введенным в этот же домен пол года назад.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
При всем при этом надо отредактировать файл nsswitch.conf
В итоге файл должен будет содержать следующие строки:
group: files winbind
hosts: files dns nis winbind
networks: files winbind
passwd: files winbind
shadow: files winbind
shells: files winbind
И не забыть установить пакет libnss-winbind, ибо настройки в файле nsswitch.conf не будут применятся к winbind без этого пакета.
Прошу обратить внимание, если у вас появилась данная ошибка на рабочей хранилке, не спишите менять конфиг в самбе, в противном случае слетят права ACL на папках.
Долго бился с подобной проблемой. Помогло это решение: https://superuser.com/questions/1512438/winbind-id-command-doesnt-show-user-info
И какие это "дополнительные параметры"?