Я пытаюсь смонтировать общий ресурс NetApp CIFS на одном из наших серверов, но постоянно получаю сообщение «Permission Denied» в 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...]
Похоже, если работает один вариант, то и другой тоже должен работать, тем более, что в файле учетных данных также указано доменное имя.
решение1
Без дополнительной информации я не могу сказать наверняка, но я видел эту проблему при подключении к старому серверу Windows, который работал на старой версии протокола. Помните, что CIFS считается "Диалектом" (типом) SMB. Есть и другие типы, и старые настройки не используют CIFS.
По сути, это как если бы говорили два человека. Один на испанском, а другой на английском, и вы пытаетесь заставить говорящего по-английски понять испанский, когда он явно его не понимает.
SMBclient использует другой диалект для согласования безопасности (или, по крайней мере, определяет по-другому).
Пытаться
mount -t cifs //путь/вещь/ /точка монтирования -o имя_пользователя=пользователь,пароль=pass,сек=нтлм
и посмотрим, что произойдет. (sec=ntlm - важная часть)
решение2
Поэкспериментировав с командами, я нашел возможную причину:
Из страницы руководства 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
не вызвал никаких нареканий.
решение3
Еще одна возможность, которую я обнаружил сегодня, пытаясь смонтировать общий ресурс, заключается в smbmount
поддержке username=DOMAIN\\user
синтаксиса для предоставления пользователя в домене в качестве учетных данных.
Для работы mount.cifs
(и ) эти два параметра должны быть предоставлены отдельно: .mount -t cifs
-o username=user,password=pass,dom=DOMAIN
решение4
Как объяснил user55518, у вас, вероятно, есть пробелы в файле учетных данных, даже если вы их не видите. Если вы редактировали файл учетных данных в Windows, у вас, вероятно, есть пробелы \r
в конце строк, и это выдает ошибку 13.