У меня есть корпус NAS (Noontec N5), что я могу только взаимодействовать с через веб-интерфейс (т.е. нет ssh
). Это позволяет мне подвергать сервис SMB и добавлять пользователей, с или без пароля.
Я могу войти в систему анонимно, например, с smbclient -L 10.1.0.25 -UGuest
и никакой пароль:
~ • smbclient -L 10.1.0.25 -Uguest
Enter guest's password:
Anonymous login successful
Domain=[R] OS=[R] Server=[R]
Sharename Type Comment
--------- ---- -------
PUBLIC Disk
IPC$ IPC
Anonymous login successful
Domain=[R] OS=[R] Server=[R]
Server Comment
--------- -------
Workgroup Master
--------- -------
Я не могу войти в систему с паролем хотя:
~ • smbclient -L 10.1.0.25 -Ujason
Enter jason's password:
session setup failed: NT_STATUS_LOGON_FAILURE
Это то же имя пользователя работает, если я удаляю пароль и вхожу в систему без него (то же как "гостевой" вход в систему).
Как я могу диагностировать это далее или зафиксировать его?
Рабочая группа, используемая для устройства, SUNNYDALE
:
~ • nmblookup -A 10.1.0.25 | grep GROUP
SUNNYDALE <00> - <GROUP> B <ACTIVE>
Добавление этого к smbclient
команда не помогает (это находится теперь также в /etc/samba/smb.conf
):
~ • smbclient -L 10.1.0.25 -W SUNNYDALE -U jason
Enter jason's password:
session setup failed: NT_STATUS_LOGON_FAILURE
Я нашел, что OS X и машина Windows XP протестировали с, и они могут оба соединиться очень хорошо. Это, кажется, некоторое волшебство это smbclient
не знает о (который не обесценивает возможность, что это не находится в официальном протоколе SMB).
Я также пытался использовать mount.cifs
, с каждым другим видом sec=
опция и vers=
опция перечислена в странице справочника ни к какому успеху.
Я использовал Wireshark для получения пакетов между тестовым VM Windows XP и NAS. Похоже, что XP неоднократно пробует различные комбинации доменных имен и протоколов системы защиты, пока что-то не работает. Заключительная (успешная) попытка, кажется, использует SMB
для доменного имени и NTLMSSP
для аутентификации.
Попытка этих настроек с smbclient
и mount.cifs
не работал, как бы то ни было.
Так как вопрос о диагностике, а не возможном решении, я опишу вещи, которые я попробовал, который получил меня ближе к решению (обновления в вопросе суммируют большую часть из него).
При чтении вывода команды ниже, обратите внимание, что мой NAS называют giles
и доменное имя SUNNYDALE
. Мое локальное имя пользователя, и который на поле jason
. Я установил тестовый пароль abcd
для этого.
Проблема состояла в том, что NAS управляет, только, кажется, работает когда NTLM
аутентификация используется из Ubuntu; большая часть использования утилит NTLMv2
по умолчанию или некоторый вариант этого. Я был загнан в угол тем, что начальные инструменты, которые я использовал, не позволяли мне управлять этим.
Большинство корпусов NAS помещает диск спать после периода неактивности. Обычно это - хорошая вещь, но во время диагностики она может вызвать побочные ошибки с определением имен или аутентификацией в зависимости от используемых инструментов.
Отключите sleep-when-idle опцию, в то время как Вы отлаживаете, или сохраняете веб-интерфейс открытым в браузере и периодически обновляете его, чтобы удостовериться, что он произошел. Не забудьте повторно включать его, когда Вы будете сделаны!
Сначала удостоверьтесь, что можно разрешить NAS. Использовать nmblookup
:
~ • nmblookup giles
192.168.1.114 giles<00>
Если Вы не видите его, Вы, возможно, должны были бы установить libnss-winbind
пакет (т.е. с sudo apt-get install libnss-winbind
) и редактирование /etc/nsswitch.conf
. Ищите начало строки hosts:
и место wins
где-нибудь:
hosts: files mdns4_minimal [NOTFOUND=return] dns wins mdns4
(Обратите внимание, что я не эксперт по этим настройкам; запишите то, чем строка была прежде в случае, если Вы работаете в обеспокоиться позже.)
Я нашел это smbclient
не поймал мою проблему, потому что она не позволяет Вам подстраивать настройки аутентификации. mount.cifs
утилита делает, как бы то ни было. Существует несколько других деталей, это дает Вам больше контроля, например, используемую версию протокола SMB. Этот терминальный сеанс показывает, как можно попробовать различные домены и методы аутентификации:
~ • mkdir temp
~ • sudo mount.cifs //giles/jason ./temp -o username=jason,password=abcd,domain=SUNNYDALE
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
~ • sudo mount.cifs //giles/jason ./temp -o username=jason,password=abcd,domain=SUNNYDALE,sec=ntlmv2
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
~ • sudo mount.cifs //giles/jason ./temp -o username=jason,password=abcd,domain=SUNNYDALE,sec=ntlm
~ •
(Что последняя команда была успешна.)
Обратите внимание, что Вы могли бы получить некоторые побочные отказы от mount.cifs
хотя, например:
~ • sudo mount.cifs //giles/jason ./temp -o username=jason,password=abcd,domain=SMB
mount error: could not resolve address for giles: Unknown error
~ • sudo mount.cifs //giles/jason ./temp -o username=jason,password=abcd,domain=SMB
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Иногда я даже получал ошибку аутентификации на первой попытке, но не следующем. Попробуйте каждую команду два или три раза, чтобы быть уверенными.
Будьте осторожны при отладке проблем SMB, в которых Вы не полагаетесь на значения по умолчанию также /etc/samba/smb.conf
или mount.cifs
(или безотносительно инструмента Вы используете). В частности, рабочая группа (запуск строки workgroup =
) и метод аутентификации (client ntlm auth = ...
например, с несколькими строками для различных протоколов).
Отметьте это в mount.cifs
терминальный сеанс выше, я всегда указываю домен при изменении метода аутентификации. Будьте научными! Измените одну и только одну вещь каждый раз. Если это становится утомительным, запишите сценарий!
Как Ben Grimm указывает, иногда эти поля игнорируют рабочую группу, которую Вы даете им. Попробуйте одно из следующего:
Это - основная проверка работоспособности: если можно соединиться из Windows или машины Mac, должно, по крайней мере, быть возможно (даже если трудный) соединиться из Ubuntu. Если Вы не можете соединиться ни от какой другой машины, вернитесь к запуску и попытайтесь настроить вещи, пока Вы не можете.
В моем случае у меня не было машины не-Linux для попытки сначала. В конечном счете я нашел старый XP VM (это было резервное копирование машины от несколько лет назад). Я понял, что мог соединиться с NAS очень хорошо от него! Это привело меня к моей следующей тактике …
Wireshark является программой, которая осматривает и выводит пакеты, проходящие интерфейс на Вашем компьютере. После того как я понял, что мой VM XP мог соединиться, это стало вопросом выяснения, что делала та машина, та моя машина Ubuntu не была.
Wireshark только контролирует интерфейсы на компьютере, на нем работают. Это означает, что необходимо выполнить его на машине, которая находится промежуточная тестовые машины и поле NAS. Я не собираюсь давать полное учебное руководство при маршрутизации и т.д. здесь, но она работала на меня, потому что я выполнил ее на машине, размещающей VM XP, таким образом, все пакеты проходили eth0
насколько Wireshark был заинтересован.
В моем случае VM XP имел IP 192.168.1.111
и NAS имел IP 192.168.1.114
. Таким образом, фильтр получения, который я использовал в Wireshark, был:
(host 192.168.1.111) and (host 192.168.1.114)
Затем я:
\\giles\jason
и хит входитНа данном этапе я просмотрел пакеты при помощи Edit > Find packet...
и выбор "строкой" опция. Я просто искал свое имя пользователя и искал первую попытку успешной аутентификации. Вы видите, которые неудачны путем поиска STATUS_LOGON_FAILURE
несколько пакетов позже.
То, что удивило меня, было чистым количеством попыток, которые выполнял XP. Это использовало данное имя пользователя и доменное имя, иногда это использовало WORKGROUP
или SMB
или даже имя клиента как домен, и это попробовало несколько методов аутентификации.
Странно достаточно я даже не определил успешную попытку! Это было точкой, в которой я понял smbclient
движение не должно было помогать и вернулось к mount.cifs
и используемый это намного более с научной точки зрения.
Наконец, после выяснения, через что проблема была и успешно доступ к доле mount.cifs
, Я все еще не мог заставить Наутилус соединяться. Проблемой здесь является использование Наутилуса GVFS для монтирования долей SMB и использования GVFS NTLMv2
по умолчанию.
Можно изменить это в масштабе всей системы путем редактирования /etc/samba/smb.conf
и добавление:
client ntlm auth = yes
client ntlmv2 auth = no
Я добавил это чуть ниже workgroup = ...
установка. Однако это вызовет изменение для всех долей SMB, которые GVFS пыталась смонтировать, который мог бы сделать другие доли недоступными, поэтому остерегаться.
(По некоторым причинам mount.cifs
жалуется на ту первую строку, но testparm
не делает. Возможно, это может быть удалено, но я не игра для попытки.)
С этими полями кажется, что принуждение рабочей группы необходимо:
smbclient -L 10.1.0.25 -W WORKGROUP -U jason
можно проверить рабочую группу поля путем выполнения:
$ nmblookup -A 10.1.0.25 | grep GROUP
..__MSBROWSE__. <01> - <GROUP> B <ACTIVE>
WORKGROUP <00> - <GROUP> B <ACTIVE>
WORKGROUP <1e> - <GROUP> B <ACTIVE>
Я добирался эти NT_STATUS_LOGON_FAILURE
сообщение, но также и получение:
Server does not support EXTENDED_SECURITY but 'client use spnego = yes and 'client ntlmv2 auth = yes'
Для решения проблемы я должен был добавить строку
use spnego = no
клиенту поле
/etc/samba/smb.conf
Linux (в верхней части перед [global]
)
Теперь, если я соединяюсь со своим NAS, это работает, и я добираюсь:
root@localhost:~# smbclient -L \\\\192.168.1.1\\ -U admin
WARNING: The "syslog" option is deprecated
Enter admin's password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.33]
Sharename Type Comment
--------- ---- -------
ipc$ IPC IPC Service (SERVERUS)
Backup Disk 8tb_Seagate_2's Backup in Seagate Backup+ Hub BK
dropbox Disk TOSHIBA_EXT's dropbox in TOSHIBA External USB 3.0
WindowsImageBackup Disk TOSHIBA_EXT's WindowsImageBackup in TOSHIBA External USB 3.0
Rug Disk Seagate_8tb_1's Rug in Seagate Backup+ Hub BK
drive_backup Disk TOSHIBA_EXT(1)'s drive_backup in TOSHIBA External USB 3.0
ntfsck.00000000 Disk TOSHIBA_EXT(1)'s ntfsck.00000000 in TOSHIBA External USB 3.0
archive Disk Seagate_Backup_Plus_Drive's archive in Seagate Backup+ Hub BK
data_dump Disk Seagate_Backup_Plus_Drive's data_dump in Seagate Backup+ Hub BK
Decimus_bac Disk Seagate_Backup_Plus_Drive's Decimus_bac in Seagate Backup+ Hub BK
images Disk Seagate_Backup_Plus_Drive's images in Seagate Backup+ Hub BK
Net Disk Seagate_Backup_Plus_Drive's Net in Seagate Backup+ Hub BK
share Disk Seagate_Backup_Plus_Drive's share in Seagate Backup+ Hub BK
test Disk Seagate_Backup_Plus_Drive's test in Seagate Backup+ Hub BK
tools Disk Seagate_Backup_Plus_Drive's tools in Seagate Backup+ Hub BK
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.33]
Server Comment
--------- -------
LIBREELEC LibreELEC
SERVERUS SERVERUS
Workgroup Master
--------- -------
WORKGROUP LIBREELEC
Я добирался эти NT_STATUS_LOGON_FAILURE
сообщение, но также и получение:
Server does not support EXTENDED_SECURITY but 'client use spnego = yes and 'client ntlmv2 auth = yes'
Для решения проблемы я должен был добавить строку
use spnego = no
клиенту поле
/etc/samba/smb.conf
Linux (в верхней части перед [global]
)
Теперь, если я соединяюсь со своим NAS, это работает, и я добираюсь:
root@localhost:~# smbclient -L \\\\192.168.1.1\\ -U admin
WARNING: The "syslog" option is deprecated
Enter admin's password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.33]