Samba: lanman auth

Забавная вещь: вечером заходишь удаленно на свой рабочий компьютер, чтобы кое-что проверить, и видишь, что человек пишет тебе в ICQ. Отключаешься там, включаешься здесь и отвечаешь.

После обновления Samba на RHEL 4 до последнего стабильного релиза (точнее, после удаления старой 3.0.x и установки новой 3.5.4) вылезла фишка, заставившая оперативно погуглить:  аутентифицировались все, кроме Windows 98 — остался еще один такой пациент.

Собственно, конфигурация была полностью сохранена, только база паролей преобразована в новый формат:

pdbedit -i smbpasswd:/etc/samba/smbpasswd -e tdbsam:/etc/samba/passdb.tdb

Было в smb.conf:

smb passwd file = /etc/samba/smbpasswd

Стало:

passdb backend = tdbsam

Что случилось с аутентификацией старых клиентов (Windows 98)? Теперь по умолчанию LM hash, использовавшийся до NT, отключен:

lanman auth = no

При этом в логах мы увидим что-то в духе

ntlm_password_check: NO LanMan password set for user <user> (and no NT password supplied)
check_ntlm_password: Authentication for user <user> FAILED with error NT_STATUS_WRONG_PASSWORD

Потребовалось добавить в smb.conf:

lanman auth = yes

Теперь можно перезапустить службу smb. Но этого недостаточно: хэша для нужного пользователя еще не существует. Нужно его создать, заново установив пароль с помощью smbpasswd:

smbpasswd <user>