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

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

Я пытаюсь смонтировать общий ресурс 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.

Связанный контент