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

9

Estou tentando montar um compartilhamento CIFS da NetApp em um de nossos servidores e continuo recebendo "Permissão negada" impressa em stderr e NT_STATUS_WRONG_PASSWORD impressa na execução 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 comando smbclient , no entanto, funciona sem problemas, usando o mesmo arquivo de credenciais exato:

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 deve funcionar, especialmente porque o arquivo de credenciais também especifica o nome do domínio.

    
por Bratchley 16.06.2014 / 21:04

7 respostas

7

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

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

O SMBclient usa um dielect diferente para negociações de segurança. (ou pelo menos detecta de forma diferente).

Tente

mount -t cifs //path/thing/ /mount/point -o username=user,password=pass,sec=ntlm

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

    
por 30.06.2014 / 13:11
3

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

A partir da página man 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.

A partir da página man do 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

Em seguida, criei dois arquivos de credenciais, um com espaços, conforme mostrado no primeiro snippet e um sem e nomeou-os creds e creds.spacy .

O grande confronto:

Com creds file:

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

bom silêncio, sem erros.

Com creds.spacy file:

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

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

Além de smbclient , não importa se há espaços. creds e creds.spacy não causaram nenhuma perdiz.

    
por 02.07.2014 / 19:25
2

A adição de sec = ntlm corrigiu o problema para mim. Eu tenho um NAS mais antigo (netgear stora). A segurança padrão para cifs em kernels recentes é ntlmssp

    
por 20.12.2014 / 16:30
2

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

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

    
por 30.01.2015 / 14:19
0

Eu quero agradecer a todos vocês !!! para este problema, ele realmente me ajuda muito !, também encontrei algumas informações importantes sobre o parâmetro "sec = ntlm", por isso deixo o link se alguns de vocês forem interessantes, linhas abaixo:

Microsoft NTLM

Eu estava tentando montar um diretório de compartilhamento do desktop do windows 7, mas era impossível adicionar o parâmetro "sec = ntlm" e funciona, e alguns detalhes importantes podem ser que eu não considerei que meu desktop do windows 7 estava em um domínio, então eu acho que foi o detalhe mais importante que eu deveria considerar. por isso, funciona !, realmente agradeço muito a todos vocês !, bênçãos !! e boas vibrações! : D

    
por 15.03.2016 / 00:09
0

Como user55518 explicou, você provavelmente tem espaços em seu arquivo de credenciais, mesmo que você não os veja. Se você editou seu arquivo de credenciais no Windows, provavelmente tem \r no final de suas linhas e isso gera o erro 13.

    
por 27.06.2017 / 19:53
0

No meu caso, eu só precisava adicionar a opção vers=3.0 (o CIFS era a versão 1, que não é mais suportada desde o kernel 4.13, então eu mudei para o SMBv3 no servidor) e ainda tive que reinicializar para fazer funciona, esta é a minha linha de montagem em /etc/fstab now:

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

Meu arquivo de credenciais:

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

Na verdade, domain não é necessário, mas é a opção correta para usar de acordo com a página de manual do mount.cifs agora.

    
por 09.11.2017 / 00:03