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_PASSWORD
impressa 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 smbclient
comando, 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 creds
e creds.spacy
.
O grande confronto:
Com creds
arquivo:
mount.cifs -vvv //host/path /local/path -o credentials=/path/creds
bom silêncio, sem erros.
Com creds.spacy
arquivo:
# 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, smbclient
não importa se há espaços. creds
e creds.spacy
não causou nenhum problema.
Responder3
Outra possibilidade que descobri ao tentar montar um compartilhamento hoje é que smbmount
suporta a username=DOMAIN\\user
sintaxe 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 \r
no final das linhas e isso gera o erro 13.