mount.cifs kann nicht die gleiche Anmeldeinformationsdatei verwenden wie smbclient

mount.cifs kann nicht die gleiche Anmeldeinformationsdatei verwenden wie smbclient

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_PASSWORDim 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 smbclientBefehl 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 credsund genannt creds.spacy.

Der große Showdown:

Mit credsDatei:

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

gute Ruhe, keine Fehler.

Mit creds.spacyDatei:

# 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 smbclientist es egal, ob Leerzeichen vorhanden sind credsund creds.spacyes 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 smbmountdie username=DOMAIN\\userSyntax 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 \ram Ende Ihrer Zeilen, und das löst den Fehler 13 aus.

verwandte Informationen