Ich versuche, eine NetApp CIFS-Freigabe auf einem unserer Server bereitzustellen, und erhalte ständig die Meldung „Zugriff verweigert“ auf stderr und NT_STATUS_WRONG_PASSWORD
im laufenden Betrieb 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
Der smbclient
Befehl funktioniert jedoch problemlos und verwendet genau dieselbe Anmeldeinformationsdatei:
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...]
Es scheint, wenn das eine funktioniert, sollte das andere auch funktionieren, insbesondere da in der Anmeldeinformationsdatei auch der Domänenname angegeben ist.
Antwort1
Ohne weitere Informationen kann ich es nicht mit Sicherheit sagen, aber ich habe dieses Problem beim Herstellen einer Verbindung zu einem älteren Windows-Server gesehen, auf dem eine ältere Protokollversion ausgeführt wurde. Denken Sie daran, dass CIFS als „Dialekt“ (Typ) von SMB gilt. Es gibt andere Typen und ältere Setups verwenden kein CIFS.
Im Grunde ist es so, als würden zwei Personen miteinander sprechen, eine auf Spanisch und eine auf Englisch, und Sie versuchen, den Englischsprecher zu zwingen, Spanisch zu verstehen, obwohl dies offensichtlich nicht der Fall ist.
SMBclient verwendet für Sicherheitsverhandlungen ein anderes Dilect (oder erkennt es zumindest anders).
Versuchen
mount -t cifs //Pfad/Ding/ /mount/Punkt -o Benutzername=Benutzer,Passwort=Passwort,Sek.=ntlm
und sehen Sie, was passiert. (sec=ntlm ist der wichtige Teil)
Antwort2
Beim Herumspielen mit den Befehlen habe ich einen möglichen Grund gefunden:
Aus der Manpage von 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.
Aus der Manpage von 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
Dann habe ich zwei Anmeldeinformationsdateien erstellt, eine mit Leerzeichen, wie im ersten Snippet gezeigt, und eine ohne, und habe sie creds
und genannt creds.spacy
.
Der große Showdown:
Mit creds
Datei:
mount.cifs -vvv //host/path /local/path -o credentials=/path/creds
gute Ruhe, keine Fehler.
Mit creds.spacy
Datei:
# 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)
Ihre Anmeldeinformationsdatei enthält also offensichtlich Leerzeichen, die von mount.cifs nicht verstanden werden.
Außerdem smbclient
ist es egal, ob Leerzeichen vorhanden sind creds
und creds.spacy
es gab keinen Grund für Beschwerden.
Antwort3
Eine weitere Möglichkeit, die ich heute beim Versuch entdeckt habe, eine Freigabe zu mounten, besteht darin, dass smbmount
die username=DOMAIN\\user
Syntax unterstützt wird, einen Benutzer in einer Domäne als Anmeldeinformation anzugeben.
Damit mount.cifs
(und mount -t cifs
) funktionieren, müssen diese beiden separat angegeben werden: -o username=user,password=pass,dom=DOMAIN
.
Antwort4
Wie user55518 erklärt hat, enthält Ihre Anmeldeinformationsdatei wahrscheinlich Leerzeichen, auch wenn Sie diese nicht sehen. Wenn Sie Ihre Anmeldeinformationsdatei unter Windows bearbeitet haben, steht wahrscheinlich Leerzeichen \r
am Ende Ihrer Zeilen, und das löst den Fehler 13 aus.