Вопрос или проблема
У меня была машина с Ubuntu 16.04 LTS, использующая Samba “из коробки”, с чем-то подобным, определенным в конфигурации (и несколькими другими общими папками, но это не важно здесь):
[audio-anon]
comment = FLAC (анонимный)
path = /nas/nas/audio/flac
browseable = no
valid users = ftp
И никаких других изменений в smb.conf
. Все работало отлично в течение нескольких лет.
Недавно я переустановил другую машину с Ubuntu 24.04 LTS и внес точно такое же изменение в smb.conf
. Все работает отлично при подключении через какую-то машину с Windows или smbclient
на другой машине с Ubuntu 16.04 LTS.
К сожалению, устаревшее устройство, над которым у меня нет контроля и о котором у меня минимальная информация, больше не может получить доступ к общей папке.
После небольших поисков и изучения журналов и т.д. я понял, что оно может использовать какой-то устаревший протокол, и поэтому я добавил все это в smb.conf
в секции [global]
:
server min protocol = NT1
lanman auth = yes
ntlm auth = yes
raw NTLMv2 auth = no
client NTLMv2 auth = no
map to guest = Bad Password
security = user
Я не понимаю каждую часть этого, но, похоже, это “понижает” Samba-сервер до какого-то старого поведения. Увы, хотя ситуация явно улучшилась (он смог аутентифицироваться и т.д.), она затем не проходит на этом этапе в журнале уровня 5 (может быть, позже есть больше информации, но, на мой взгляд, это суть проблемы):
[2024/09/30 23:37:15.769356, 3] source3/smbd/smb1_process.c:1112(switch_message)
switch message SMBtrans2 (pid 9725) conn 0x5e05509ec960
[2024/09/30 23:37:15.769361, 5] source3/smbd/uid.c:327(change_to_user_impersonate)
change_to_user_impersonate: Пропуск изменения пользователя - уже пользователь
[2024/09/30 23:37:15.769370, 5] source3/smbd/uid.c:294(print_impersonation_info)
print_impersonation_info: Выданный пользователь: uid=(122,122), gid=(0,128), cwd=[/nas/nas/audio/flac]
[2024/09/30 23:37:15.769378, 3] source3/smbd/smb1_trans2.c:2645(call_trans2qpathinfo)
call_trans2qpathinfo: TRANSACT2_QPATHINFO: уровень = 512
[2024/09/30 23:37:15.769383, 3] source3/smbd/error.c:78(error_packet_set)
Пакет ошибки NT на source3/smbd/smb1_trans2.c(2653) cmd=50 (SMBtrans2) NT_STATUS_INVALID_LEVEL
[2024/09/30 23:37:15.769397, 5] source3/lib/util.c:150(show_msg)
size=35
smb_com=0x32
smb_rcls=72
smb_reh=1
smb_err=49152
smb_flg=128
smb_flg2=49155
smb_tid=60757
smb_pid=242
smb_uid=49094
smb_mid=291
smt_wct=0
smb_bcc=0
Я подозреваю, что NT_STATUS_INVALID_LEVEL
все еще является результатом какой-то проблемы с устаревшим протоколом, который не разрешен в текущей версии Samba (2:4.19.5+dfsg-4ubuntu9). Но на самом деле у меня нет понятия.
Есть какие-нибудь идеи? Есть ли способ заставить новый сервер Samba вести себя как версия 16.04 LTS?
Ответ или решение
Проблема, с которой вы столкнулись, связана с изменениями в версии Samba между Ubuntu 16.04 LTS и 24.04 LTS. Вы правильно указали, что ошибка NT_STATUS_INVALID_LEVEL
может быть связана с использованием устаревших протоколов, которые больше не поддерживаются в новых версиях Samba. Ниже приведены рекомендации, как можно попытаться решить эту проблему.
-
Настройки Samba: Обновите файл конфигурации
smb.conf
, добавив более детальные параметры для поддержки устаревших протоколов. Попробуйте следующие настройки в секции[global]
:[global] server min protocol = NT1 client min protocol = NT1 max protocol = SMB3 lanman auth = yes ntlm auth = yes raw NTLMv2 auth = no client NTLMv2 auth = no map to guest = Bad Password security = user smb encrypt = disabled
Обратите внимание, что
client min protocol
и параметры шифрования могут помочь, если ваше legacy устройство не поддерживает новые протоколы. -
Уровни доступа: Проверьте, какие уровни доступа на вашем устройстве. Возможно, ваше устройство ожидает, что сервер Samba поддерживает определенные функции. Для этого попробуйте установить более низкие уровни доступа с помощью:
[global] ntlm auth = yes lanman auth = yes client NTLMv2 auth = no
-
Логи Samba: Уровень логирования в Samba можно увеличить для дальнейшей диагностики. Установите уровень логирования на
log level = 3
илиlog level = 5
для получения более подробной информации о происходящих процессах. Это можно сделать, добавив или изменив строку в секции[global]
:log level = 3
-
Тестирование: После внесения изменений вам необходимо перезапустить службу Samba, чтобы изменения вступили в силу:
sudo systemctl restart smbd sudo systemctl restart nmbd
-
Управление пользователями: Убедитесь, что учетная запись пользователя
ftp
действительно существует на системе и имеет необходимые права на доступ к каталогу/nas/nas/audio/flac
. -
Проверка совместимости: Если проблема не решилась, возможно, стоит рассмотреть возможность использования более старой версии Samba, которая соответствует Ubuntu 16.04, для тестирования на отдельной машине или виртуальной среде. Это может помочь выявить различия в конфигурации и поддерживаемых функциях.
Если ни одно из вышеперечисленных решений не помогло, вам, возможно, придется исследовать документацию к вашему устройству для получения дополнительных указаний по поддерживаемым версиям протоколов и потенциальным ограничениям на стороне клиента.