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

10

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

Bratchley
fonte
o que aconteceu com a recompensa?
Nunca recebi uma resposta que funcionou para mim, então a recompensa acabou expirando e todos esses pontos seguiram o caminho do dodô.
Bratchley
Se você puder pensar na resposta, eu lhe darei uma nova recompensa, só que não quero perder pontos se não receber uma resposta.
Bratchley
Então, eu estava tendo um problema semelhante (com o erro -13 do módulo do kernel). Eu instalei o cifs-utilspacote (Debian) e ele resolveu o problema. Passei um pouco depurando isso porque não esperava nenhum suporte sem o pacote ter sido instalado, por isso presumi que sim. Eu estava esperando algo como "sistema de arquivos desconhecido" do mount, mas isso não aconteceu.
sherrellbc

Respostas:

7

Sem mais informações, não posso ter certeza, mas vi esse problema ao conectar-me a um servidor Windows mais antigo que executava uma versão de protocolo mais antiga. Lembre-se de que o CIFS é considerado um "dialeto" (tipo) de SMB. Existem outros tipos e as 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 você está tentando forçar o falante de inglês a entender o espanhol quando claramente ele não entende.

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

Experimentar

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

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

coteyr
fonte
Mesmo problema, mesmo ao especificar a autenticação NTLM. Mesmo se eu fizer ntlmou ntlmv2. Não tenho certeza de como solucioná-lo. Se você precisar de mais informações, avise-me e atualizarei a pergunta. Poderia haver alguns controles de acesso no lado da NetApp que o funcionário da SAN perdeu?
Bratchley
Versão do software para servidor, existem roteadores ou switches no caminho?
coteyr
Mesma sub-rede. Não tenho certeza de qual versão do Samba está do outro lado, pois é um dispositivo NetApp ONTAP.
#
4

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 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 trecho e outro sem e os nomeei credse creds.spacy.

O grande confronto:

Com o credsarquivo:

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

bom silêncio, sem erros.

Com o 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)

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

Além disso smbclient, não importa se há espaços. credse creds.spacynão causou nenhum galo silvestre.


fonte
Havia uma linha em branco extra no final do arquivo, mas eu recebo a mesma coisa depois de excluí-lo. Esta é uma versão ligeiramente editada do que está no arquivo creds. Senhas redigidas e reais são senhas de maiúsculas e minúsculas que contêm "!" como um personagem especial.
#
Há outro aspecto disso, que esta solução me levou a encontrar: As credenciais devem estar na ordem correta, ou seja, nome de usuário, senha, domínio e não qualquer outra ordem como domínio, nome de usuário e senha (que é o que eu tinha). Isso também funciona bem com, smbclientmas falha mount.cifs. Depois de alterar a ordem para a correta, conforme especificado na documentação que você citou aqui, ele começou a funcionar. Parece que estes (tanto o manuseio inadequado de espaços quanto a questão de pedidos) são erros terríveis que devem ser facilmente corrigidos por quem o mantém mount.cifs.
#
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 nos kernels recentes é ntlmssp

Ed Hourigan
fonte
Trabalhou para mim também. Ainda não sei a causa real. Caso isso ajude alguém: isilon mount no ubuntu LTS 14.04. O isilon (algumas coisas da SAN) fala com o diretório ativo do Windows. A mesma conta funcionou como um encanto em outras máquinas e ao montá-lo diretamente no Windows.
Reinout van Rees
Nota extra: o 12.04 com as atualizações mais recentes funciona bem, o 14.04 faz parte do problema agora (final de abril de 2015).
Reinout van Rees
Última nota extra: a questão central era um conhecido problema Microsoft com o armazenamento EMC Isilon e atualização KB3002657 (ou assim meu sysadmin me diz agora :-))
Reinout van Rees
2

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 mount.cifs(e mount -t cifs) ao trabalho, estes dois têm de ser fornecidos separadamente: -o username=user,password=pass,dom=DOMAIN.

fiskfisk
fonte
Para montar uma SMB 3,0 partes servido por um NetApp Data ONTAP cluster teve que chamar ambos sec=ntlmedom=DOMAIN
iii
1

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

Cyrlop
fonte
você pode usar o set list de comando no vim para verificar se há guias extra / espaços
vfbsilva
0

Quero agradecer a todos vocês !!! para esta questão, ele realmente me ajudou muito !, também encontrei algumas informações importantes sobre o parâmetro "sec = ntlm", então deixo o link se alguns de vocês forem interessantes sobre isso, linhas abaixo:

Microsoft NTLM

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

DarkPenguin15
fonte
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 mudei para o SMBv3 no servidor) e ainda precisava reiniciar para fazê-lo funcionar. Esse é o meu monte a linha /etc/fstabagora:

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, domainnão é necessário, mas é a opção correta para usar de acordo com a página de manual mount.cifs agora.

Gregor
fonte
0

Eu tenho lutado com isso por um tempo.

Com os seguintes erros:

mount error(112): Host is down

aqui ajudou a definir a opção vers = 1.0, então relatou

mount error(13): Permission denied

e acabou sendo "caracteres extras" no meu arquivo de credenciais

onde originalmente eu tinha:

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

onde deveria estar

# cat /etc/samba/cred-file
username=john
password=secret
remigiusz boguszewicz
fonte