Вопрос или проблема
Мы недавно мигрировали нашу систему на новую ОС, обновив ядро с версии 4.19 до 5.15. Мы используем smbclient для передачи файлов на SMB-общую папку. Эта настройка работала прекрасно с более старой ОС и версией ядра, но после обновления мы столкнулись с проблемами.
Старая настройка:
Ядро: 4.9.309-1.11.10.0.x86_64
Версия smbclient: 4.10.16
Новая настройка:
Ядро: 5.15.160-1.11.10.0.x86_64
Версия smbclient: 4.19.4
Вот команда, которую мы используем:
smbclient \\\cifsshare -U ‘домен/имя_пользователя%’ -c ‘ls’ -d10 –use-kerberos=off
cli_session_setup_spnego_send: Подключение к <IP> как имя_пользователя с использованием SPNEGO
Начало механизма GENSEC spnego
gensec_spnego_client_negTokenInit_step: Не удалось найти подходящий mechtype в NEG_TOKEN_INIT
gensec_update_done: spnego[...] NT_STATUS_INVALID_PARAMETER
SPNEGO вход не удался: Неправильный параметр был передан службе или функции.
настройка сеанса не удалась: NT_STATUS_INVALID_PARAMETER
Попытки решения:
Судя по журналам, похоже, что smbclient пытается выполнить аутентификацию NTLM по умолчанию. Чтобы исправить это, я добавил следующие строки в файл smb.conf:
ntlm auth = ntlmv2-only
ntlm auth = yes
Однако это не решило проблему.
Поведение старой версии:
С более старой настройкой процесс аутентификации с использованием той же команды работает как ожидалось:
cli_session_setup_spnego_send: Подключение к <IP> как имя_пользователя с использованием SPNEGO
Начало подсистемы GENSEC ntlmssp
проведённый диалект[SMB3_11] против сервера[IP]
запрос сеанса выполнен
Резюме:
Проблема: smbclient выдает NT_STATUS_INVALID_PARAMETER на новой настройке.
Работает на: Старой настройке с ядром 4.19 и версией smbclient 4.10.16.
Не работает на: Новой настройке с ядром 5.15 и версией smbclient 4.19.4.
Вопрос:
Что может быть причиной этой проблемы с аутентификацией после обновления как ядра, так и версии smbclient? Есть ли какие-либо конкретные изменения в smbclient с версии 4.10 до 4.19.4, которые могут привести к этой проблеме? Будем очень признательны за любые предложения по ее решению.
Ответ или решение
Проблема с smbclient после миграции ОС (киллер 4.19 на 5.15) и обновления версии (4.10 до 4.19.4)
При выполнении миграции вашей системы на новую ОС с обновлением ядра с версии 4.19 на 5.15 и версии smbclient с 4.10.16 на 4.19.4, вы столкнулись с проблемами аутентификации при использовании smbclient для отправки файлов на SMB-шар. В данной статье мы постараемся подробно проанализировать причину возникновения данной проблемы и предложить возможные пути её решения.
Описание проблемы
Старый сетап:
- Ядро: 4.9.309-1.11.10.0.x86_64
- Версия smbclient: 4.10.16
Новый сетап:
- Ядро: 5.15.160-1.11.10.0.x86_64
- Версия smbclient: 4.19.4
При выполнении команды:
smbclient \\\cifsshare -U 'domain/username%' -c 'ls' -d10 --use-kerberos=off
Вы получаете ошибку:
cli_session_setup_spnego_send: Connect to <IP> as username using SPNEGO
Starting GENSEC mechanism spnego
gensec_spnego_client_negTokenInit_step: Could not find a suitable mechtype in NEG_TOKEN_INIT
gensec_update_done: spnego[...] NT_STATUS_INVALID_PARAMETER
SPNEGO login failed: An invalid parameter was passed to a service or function.
session setup failed: NT_STATUS_INVALID_PARAMETER
Анализ проблемы
Исходя из представленных вами логов, можно заметить, что smbclient
пытается выполнить аутентификацию NTLM по умолчанию, но не может найти подходящий механизм. Ошибка NT_STATUS_INVALID_PARAMETER
указывает на то, что один из параметров, переданных в процессе настройки сеанса, недействителен.
Изменения в smbclient между версиями 4.10 и 4.19.4:
- Поддержка различных механизмов аутентификации: Более новая версия smbclient могла внести изменения в поддержку механизма SPNEGO и аутентификации NTLM.
- Параметры конфигурации: Изменения в конфигурации по умолчанию могут привести к неверной интерпретации параметров.
Предложенные решения
-
Проверьте конфигурацию smb.conf:
Убедитесь, что у вас правильная конфигурация дляsecurity
иencrypt passwords
. Попробуйте использовать следующие настройки:[global] workgroup = YOUR_WORKGROUP realm = YOUR_REALM security = user allow insecure wide links = yes ntlm auth = ntlmv2-only invalid users = guest
-
Включите параметр
client use spnego
для проверки:
В вашем smb.conf добавьте:client use spnego = no
Это позволит отключить использование SPNEGO для аутентификации и может помочь в исправлении проблемы.
-
Проверьте билеты Kerberos: Убедитесь, что у вас корректно получены билеты Kerberos (если вы используете Kerberos). Вы можете использовать команду:
klist
и убедиться, что ваш билет действителен и имеет правильные права доступа.
-
Анализируйте данные отладки: Если проблема не решится, увеличьте уровень отладки следующим образом:
smbclient \\\cifsshare -U 'domain/username%' -c 'ls' -d10 --use-kerberos=off
Это поможет собрать больше информации о том, где именно происходит сбой.
-
Обратитесь к документации: Ознакомьтесь с официальной документацией для версии 4.19.4, чтобы выяснить возможные изменения в механизмах аутентификации или конфигурации по сравнению с 4.10.16.
Заключение
Проблемы с аутентификацией после обновления smbclient и ядра могут быть достаточно комплексными и требовать тщательного анализа. Проведя предложенные шаги по исследованию и оптимизации настройки, вы значительно повысите вероятность успешной аутентификации на SMB-шаре. Не забывайте проверять каждую настройку и сохранять резервные копии конфигураций для возможности быстрого восстановления в случае необходимости.