mount.cifs não pode usar o mesmo arquivo de credenciais que o smbclient usa

mount.cifs não pode usar o mesmo arquivo de credenciais que o smbclient usa

Estou tentando montar um compartilhamento NetApp CIFS em um de nossos servidores e continuo recebendo "Permissão negada" impressa em stderr e NT_STATUS_WRONG_PASSWORDimpressa no arquivo 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

O smbclientcomando, entretanto, funciona sem problemas, usando exatamente o mesmo arquivo de credenciais:

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...]

Parece que se um funciona, o outro também deveria funcionar, especialmente porque o arquivo de credenciais também especifica o nome de domínio.

Responder1

Sem mais informações, não posso ter certeza, mas vi esse problema ao me conectar a um servidor Windows mais antigo que estava executando uma versão de protocolo mais antiga. Lembre-se de que CIFS é considerado um “dialeto” (tipo) de SMB. Existem outros tipos e configurações mais antigas não usam CIFS.

Basicamente é como dizer que duas pessoas estão conversando. Um espanhol e um inglês, e você está tentando forçar o falante de inglês a entender espanhol quando claramente ele não entende.

SMBclient usa uma seleção diferente para negociações de segurança. (ou pelo menos detecta de forma diferente).

Tentar

mount -t cifs //caminho/coisa/ /montagem/ponto -o nome de usuário=usuário,senha=senha,sec=ntlm

e veja o que acontece. (sec=ntlm é a parte importante)

Responder2

Brincando com os comandos, encontrei um possível motivo:

Na página de manual do 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.

Na página de manual de 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

Então criei dois arquivos de credenciais, um com espaços, como mostrado no primeiro trecho e outro sem e os nomeei credse creds.spacy.

O grande confronto:

Com credsarquivo:

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

bom silêncio, sem erros.

Com creds.spacyarquivo:

# 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)

Obviamente, seu arquivo de credenciais contém espaços que não são compreendidos pelo mount.cifs.

Além disso, smbclientnão importa se há espaços. credse creds.spacynão causou nenhum problema.

Responder3

Outra possibilidade que descobri ao tentar montar um compartilhamento hoje é que smbmountsuporta a username=DOMAIN\\usersintaxe para fornecer um usuário em um domínio como credencial.

Para que mount.cifs(e mount -t cifs) funcionem, estes dois devem ser fornecidos separadamente: -o username=user,password=pass,dom=DOMAIN.

Responder4

Conforme explicado pelo usuário55518, você provavelmente terá espaços em seu arquivo de credenciais, mesmo que não os veja. Se você editou seu arquivo de credenciais no Windows, provavelmente tem \rno final das linhas e isso gera o erro 13.

informação relacionada