mount.cifs не может использовать тот же файл учетных данных, который использует smbclient


10

Я пытаюсь смонтировать общий ресурс NetApp CIFS на один из наших серверов, и я продолжаю печатать «Отказано в доступе» на stderr и NT_STATUS_WRONG_PASSWORDпечатать на ходу dmesg.

root@xxxehpvld05 ~ $ mount.cifs -vv //zhp-nas.xxx.com/perspectives /mnt/secure/cifs -o credentials=/etc/cifs.creds
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
root@xxxehpvld05 ~ $ dmesg | tail
CIFS VFS: cifs_mount failed w/return code = -13
Status code returned 0xc000006a NT_STATUS_WRONG_PASSWORD
CIFS VFS: Send error in SessSetup = -13
CIFS VFS: cifs_mount failed w/return code = -13
Status code returned 0xc000006a NT_STATUS_WRONG_PASSWORD
CIFS VFS: Send error in SessSetup = -13
CIFS VFS: cifs_mount failed w/return code = -13
Status code returned 0xc000006a NT_STATUS_WRONG_PASSWORD
CIFS VFS: Send error in SessSetup = -13
CIFS VFS: cifs_mount failed w/return code = -13

Команда smbclient, однако, работает без проблем, используя тот же самый файл учетных данных:

root@xxxehpvld05 ~ $ smbclient -L //zhp-nas.xxx.com/perspectives -A /etc/cifs.creds
Domain=[XXX] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]

        Sharename       Type      Comment
        ---------       ----      -------
        IPC$            IPC       Remote IPC
        ZHPSubmit-dev   Disk
    [...snip...]

Кажется, что если один работает, другой должен также, особенно, поскольку файл учетных данных также определяет имя домена.


что случилось с щедростью?

Я так и не получил ответ, который сработал для меня, так что щедрость со временем истекла, и все эти пункты пошли по пути додо.
Братчли

Если ты сможешь придумать ответ, я награду тебя новой наградой, я просто не хочу удерживать лишние баллы, если не получу ответ.
Братчли

Итак, у меня возникла похожая проблема (с ошибкой -13 в модуле ядра). Я установил cifs-utilsпакет (Debian), и он решил проблему. Я потратил немного времени на отладку, потому что не ожидал никакой поддержки без установленного пакета, поэтому я предположил, что это так. Я ожидал что-то вроде «неизвестной файловой системы» от mount, но этого не произошло.
sherrellbc

Ответы:


7

Без дополнительной информации я не могу сказать наверняка, но я видел эту проблему при подключении к более старому серверу Windows, на котором работала более старая версия протокола. Помните, что CIFS считается «диалектом» (типом) SMB. Существуют другие типы, и более старые установки не используют CIFS.

По сути, это как сказать, что говорят два человека. Один испанский и один английский, и вы пытаетесь заставить говорящего по-английски понимать испанский, когда он явно не знает.

SMBclient использует другой диалект для переговоров по безопасности. (или, по крайней мере, обнаруживает по-другому).

Пытаться

mount -t cifs // путь / вещь / / mount / point -o имя пользователя = пользователь, пароль = пароль, sec = ntlm

и посмотрим, что получится. (sec = ntlm - важная часть)


Та же проблема даже при указании аутентификации NTLM. То же самое, если я ntlmили ntlmv2. Я не уверен, как устранить неполадки, поэтому, если вам нужна дополнительная информация, дайте мне знать, и я обновлю вопрос. Могут ли быть какие-то элементы управления доступом на стороне NetApp, которые пропустил парень из SAN?
Братчли

Версия серверного программного обеспечения, есть ли какие-либо маршрутизаторы или коммутаторы в пути?
Котейр

Та же подсеть. Не уверен, какая версия Samba находится на другой стороне, поскольку это устройство NetApp ONTAP.
Братчли

4

Играя с командами, я нашел возможную причину:

Со страницы руководства smbclient:

   -A|--authentication-file=filename
       This option allows you to specify a file from which to read the
       username and password used in the connection. The format of the file is

           username = <value>
           password = <value>
           domain   = <value>

       Make certain that the permissions on the file restrict access from
       unwanted users.

Со страницы руководства файла mount.cifs:

   credentials=filename
       specifies a file that contains a username and/or password and
       optionally the name of the workgroup. The format of the file is:

          username=value
          password=value
          domain=value

Затем я создал два файла учетных данных, один с пробелами, как показано в первом фрагменте, а другой без, и назвал их credsи creds.spacy.

Большая битва:

С credsфайлом:

mount.cifs -vvv //host/path /local/path -o credentials=/path/creds

Хорошая тишина, без ошибок.

С creds.spacyфайлом:

# mount.cifs -vvv //host/path /local/path -o credentials=/path/creds.spacy
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

Таким образом, очевидно, ваш файл учетных данных содержит пробелы, которые не понимаются mount.cifs.

Кроме того, smbclientэто не имеет значения, если есть пробелы. credsи creds.spacyне вызвал никакого глухаря.


В конце файла была лишняя пустая строка, но после удаления я получаю то же самое. Это слегка отредактированная версия того, что находится в файле creds. Отредактированные и настоящие пароли - это пароли в смешанном регистре, содержащие "!" как особый характер.
Братчли

В этом есть еще один аспект, который я нашел в этом решении: учетные данные должны быть в правильном порядке, т.е. имя пользователя, пароль, домен, а не какой-либо другой порядок, например домен, имя пользователя, пароль (что я и имел). Это также хорошо работает, smbclientно не для mount.cifs. После того, как я изменил заказ на правильный, как указано в документации, которую вы цитировали здесь, он начал работать. Похоже, что это (как неправильное обращение с пробелами, так и проблема с упорядочением) являются ужасными ошибками, которые должен быть легко исправлен любым, кто их поддерживает mount.cifs.
leftclickben

2

Добавление sec = ntlm исправило проблему для меня. У меня есть старый NAS (Netgear Stora). По умолчанию безопасность для cifs в последних ядрах - ntlmssp


У меня тоже сработало. Я еще не знаю настоящую причину. В случае, если это кому-то поможет: смонтировать isilon на Ubuntu LTS 14.04. Isilon (что-то вроде SAN) общается с нашим активным каталогом windows. Эта же учетная запись работала как брелок на других машинах и при непосредственном монтировании в Windows.
Рейноут Ван Рис

Дополнительное примечание: 12.04 с последними обновлениями работает нормально, 14.04 как-то сейчас является частью проблемы (конец апреля 2015 года).
Рейноут Ван Рис

Последнее дополнительное замечание: основной проблемой была известная проблема Microsoft с хранилищем emc isilon и обновлением KB3002657 (или так мой системный администратор говорит мне прямо сейчас :-))
Reinout van Rees

2

Еще одна возможность, которую я обнаружил при попытке смонтировать общий ресурс, заключается в том, что он smbmountподдерживает username=DOMAIN\\userсинтаксис для предоставления пользователю домена в качестве учетных данных.

Для mount.cifsmount -t cifs) на работу, эти два должны быть представлены отдельно: -o username=user,password=pass,dom=DOMAIN.


Чтобы смонтировать общий ресурс smb 3.0, обслуживаемый NetApp Clustered Data, ONTAP должен был вызвать оба sec=ntlmиdom=DOMAIN
iii

1

Как объяснил пользователь 55518, в вашем файле учетных данных, возможно, есть пробелы, даже если вы их не видите. Если вы отредактировали файл учетных данных в Windows, у вас, вероятно, \rв конце строк, и это приводит к ошибке 13.


вы можете использовать список команд в vim, чтобы проверить наличие дополнительных табуляции / пробелов
vfbsilva

0

Я хочу поблагодарить всех вас !!! в этом вопросе это мне очень помогает! Также я нашел важную информацию о параметре "sec = ntlm", поэтому я оставляю ссылку, если некоторые из вас интересны, строки ниже:

Microsoft NTLM

Я пытался смонтировать директорию общего доступа с рабочего стола Windows 7, но я не смог добавить параметр "sec = ntlm", и это работает, и некоторые важные детали могут заключаться в том, что я не считаю, что мой рабочий стол Windows 7 был в домен, поэтому я думаю, что это была самая важная деталь, которую я должен рассмотреть. Таким образом, это работает! Спасибо большое всем вам! и хороших флюидов! : D


0

В моем случае мне нужно было только добавить эту опцию vers=3.0(CIFS была версией 1, которая больше не поддерживается начиная с ядра 4.13, поэтому я переключился прямо на SMBv3 на сервере), и все же мне пришлось перезагрузиться, чтобы она заработала, это мое линия монтирования /etc/fstabсейчас:

auto,rw,credentials=/usr/local/etc/smb.credentials,vers=3.0,file_mode=0664,dir_mode=0775,uid=myuser,gid=users

Мой файл учетных данных:

username=myuser
password=****
domain=mydomain

На самом деле, domainэто не нужно, но это правильный вариант для использования в соответствии с man-страницей mount.cifs.


0

Я боролся с этим некоторое время.

Со следующими ошибками:

mount error(112): Host is down

здесь он помог установить опцию vers = 1.0, затем он сообщил

mount error(13): Permission denied

и оказалось, что это дополнительные символы в моем файле учетных данных

где изначально у меня было:

# cat /etc/samba/cred-file
username="john"
password="secret"

где это должно быть

# cat /etc/samba/cred-file
username=john
password=secret
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.