kann mount.cifs nicht verwenden: mount error (2): Keine solche Datei oder Verzeichnis

17

Es wurde festgestellt, dass der Befehl mount.cifs auf einem Gentoo-System mit systemd nicht ausgeführt werden kann

ae429-1105 etc # mount -t cifs //file.abc.edu.au/user /home/directory/path -o credentials=/etc/user,rw,iocharset=utf8,file_mode=0777,dir_mode=0777
mount error(2): No such file or directory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

Es wurde bestätigt, dass der Mountpoint / home / directory / path und die Berechtigungsnachweisdatei / etc / user vorhanden und zugänglich sind . Auch die entsprechenden Module und Dienste wurden aktiviert, dh

 ae429-1105 etc # lsmod |egrep 'fuse|cifs'
 fuse                   72589  5 
 cifs                  312131  0

und

ae429-1105 etc # systemctl -t service -a |grep Samba
nmbd.service                         loaded active   running Samba NetBIOS                     name server
smbd.service                         loaded active   running Samba SMB/CIFS     server
winbindd.service                     loaded inactive dead    Samba Winbind daemon

Dieses Problem wurde von vielen Benutzern erkannt, z . B. einem Beispiel . Beachten Sie auch, dass der gleiche Befehl, der in meinem Ubuntu / Debian-System ausgeführt wird, erfolgreich eingehängt werden kann.

Weitere Informationen in der problematischen Maschine:

ae429-1105 etc # mount.cifs --version
mount.cifs version: 6.1

Die in Debian / Ubuntu installierte Version von mount.cifs ist 6.0

Chenming Zhang
quelle
/home/directory/pathist sicher, in der Gentoo-Umgebung zu existieren? Seltsam, dass Sie das nicht erwähnen, da dies die offensichtliche erste Frage ist, die sich stellt.
Hauke ​​Laging
Ja, ich habe die Existenz und Zugänglichkeit des Mount-Points / home / directory / path bestätigt .
Chenming Zhang
Sie sollten diese Informationen zur Frage hinzufügen, damit andere Leser die Kommentare nicht lesen müssen, um sie zu erhalten.
Hauke ​​Laging

Antworten:

8

Möglicherweise müssen Sie die Option vers = für den Befehl mount angeben, um Version 3.0 zu erzwingen, wenn Sie versuchen, eine Freigabe von einer neueren Windows-Version bereitzustellen. Einer unserer Dateiserver wurde kürzlich auf 2012R2 aktualisiert, und in diesem Moment funktionierte mein Mount nicht mehr. Das Setzen auf vers = 3.0 hat das Problem behoben. Wie die meisten Samba / CIFS-Fehler ist die Meldung "Keine solche Datei oder kein solches Verzeichnis" nicht sehr hilfreich.

Als Beispiel:

# mount -t cifs //win2012r2/someshare -o cred=/home/foo/.cifs_user, vers=3.0 /mnt/tmp

..wobei meine Domain, mein Benutzername und mein Passwort in der .cifs_user-Datei enthalten sind.

Anscheinend verwendet smbmount standardmäßig eine neuere Version des SMB-Protokolls, da es ohne Probleme und ohne spezielle Optionen funktioniert hat.

Beachten Sie, dass die Standardprotokollversion 1.0 ist.

Aus der Manpage mount.cifs:

vers=
           SMB protocol version. Allowed values are:

           ·   1.0 - The classic CIFS/SMBv1 protocol. This is the default.

           ·   2.0 - The SMBv2.002 protocol. This was initially introduced in Windows Vista Service Pack 1, and
               Windows Server 2008. Note that the initial release version of Windows Vista spoke a slightly
               different dialect (2.000) that is not supported.

           ·   2.1 - The SMBv2.1 protocol that was introduced in Microsoft Windows 7 and Windows Server 2008R2.

           ·   3.0 - The SMBv3.0 protocol that was introduced in Microsoft Windows 8 and Windows Server 2012.
Foobrew
quelle
Ich hatte ein ähnliches Problem mit dem "nounix" -Flag, das in v1.0 nicht unterstützt werden darf. Das Problem wurde behoben, indem ich auf v2.0 (die neueste für mich verfügbare Version) umgestiegen bin. Auch Dateiberechtigungen sind mit vers = 2.0 (755 statt 777)
sinnvoller
2
Vielen Dank für die Lösung zu vers = option! Es hat bei mir nur rückwärts geklappt ... Nach dem Upgrade von opensuse jump von 42.3 auf 15.1 hat ein fstab-Eintrag zum Mounten eines funktionierenden Netzlaufwerks in 15.1 aufgehört zu funktionieren. Ich habe die Option vers = 1.0 verwendet und raten Sie mal, was ... Wahrscheinlich wird in Schritt 15.1 eine neuere Version des SMB-Protokolls verwendet, mit der das Remote-Verzeichnis nicht gefunden werden konnte.
John
Die Verbindung zu einer Freigabe, die unter Windows Server 2003 von Ubuntu 19.04 gehostet wird, ist für mich immer wieder fehlgeschlagen, bis ich vers = 1.0 zu meiner Optionsliste hinzugefügt habe. Vielen Dank!
user8675309
Es hat bei mir funktioniert, AUSSER: Ich musste Version ZWEI angeben vers=2.0, um die Samba-Freigaben meines 5 Jahre alten NAS-Systems zu mounten ... mit 3.0 habe ich den obigen Fehler erhalten.
Frank Nocke
etc/fstabBenutzer: Stellen Sie das vers=3.0(oder 2.0 ...) einfach richtig und raumlos vor Ihre anderen Optionen, z. B.vers=2.0,guest,uid=1000,iocharset…
Frank Nocke
5

Können Sie nodfsOption verwenden? dh für Ihre -oOptionseingabe übergeben Sie die Eingabe wie folgt.

-o credentials=/etc/user,rw,iocharset=utf8,file_mode=0777,dir_mode=0777,nodfs

dh angehängt ,nodfs

Es hat bei mir funktioniert.

Sanath
quelle
Danke! Ich habe zuerst alle anderen Vorschläge ausprobiert, aber ich brauchte dies auf fedora30, wo ich es vorher nicht brauchte
Jens Timmerman
2

Möglicherweise müssen Sie den secParameter ändern : Diese Einstellung hat in meinem Setup funktioniert:

mount.cifs ... -o sec=ntlm

Relevanter Auszug aus man mount.cifs:

sec=Sicherheitsmodus. Zulässige Werte sind:

  • none - Versuch, eine Verbindung als NULL-Benutzer (kein Name) herzustellen
  • krb5 - Verwenden Sie die Kerberos-Authentifizierung der Version 5
  • krb5i - Verwenden Sie die Kerberos-Authentifizierung und aktivieren Sie die Paketsignatur
  • ntlm - Verwenden Sie NTLM-Passwort-Hashing
  • ntlmi - Verwenden Sie NTLM-Kennwort-Hashing und erzwingen Sie die Paketsignierung
  • ntlmv2 - Verwenden Sie NTLMv2-Passwort-Hashing
  • ntlmv2i - Verwenden Sie NTLMv2-Kennwort-Hashing und erzwingen Sie die Paketsignatur
  • ntlmssp - Verwenden Sie NTLMv2-Kennwort-Hashing, das in einer unformatierten NTLMSSP-Nachricht gekapselt ist
  • ntlmsspi - Verwenden Sie NTLMv2-Kennwort-Hashing, das in einer unformatierten NTLMSSP-Nachricht gekapselt ist, und erzwingen Sie die Paketsignatur

    Der Standardwert in Hauptkernversionen vor v3.8 war sec=ntlm. In Version 3.8 wurde die Standardeinstellung in geändert sec=ntlmssp.

    Wenn der Server während der Protokollaushandlung signiert werden muss, wird er möglicherweise automatisch aktiviert. Die Paketsignatur kann auch automatisch aktiviert werden, wenn sie in aktiviert ist /proc/fs/cifs/SecurityFlags.

Benoit Duffez
quelle
1

Ich bin auf Ubuntu 18.04 darauf gestoßen. Das Problem war, dass ich das Paket keyutils für die Kerberos-Authentifizierung ( sec=krb5Mount-Option) benötigte, das nicht zusammen mit cifs-utils (mount.cifs) installiert wurde. Ich bin mir nicht sicher, ob der Paketname unter Gentoo gleich ist oder nicht. (Vielen Dank an https://forum.zentyal.org/index.php?topic=18601.0 für die Lösung.)

Chris
quelle
1

Ich wollte eine weitere Quelle für dieses Problem hinzufügen, auf das ich heute gestoßen bin. Sobald Sie die Benutzer-ID eines Unix-Benutzers ändern, kann sich der über smbpasswd erstellte smb-Benutzer möglicherweise nicht mehr für die Samba-Freigabe authentifizieren, was zu demselben Fehler führt.

Wenn Sie also Ihre Unix-Benutzer-ID über geändert haben usermod -u 1000 my_user, können Probleme auftreten. Das Update für mich war, den smb-Benutzer danach zu löschen und wieder hinzuzufügen:

smbpasswd -x mein_benutzer
smbpasswd -a mein_benutzer
Ryad
quelle
Wie hängt das mit der ursprünglichen Frage zusammen?
RalfFriedl
Wie gesagt, wenn Sie die Benutzer-ID eines Benutzers ändern, wird der gleiche Fehler wie bei der ursprünglichen Frage angezeigt. Wenn also jemand dasselbe tut und diesen Thread findet, könnte er oder sie meinen Hinweis nützlich finden.
Ryad
1

Fügen Sie $am Ende so ein hinzu//winserver/sharename$

mount.cifs -v -o username=myusername,domain=MYCODOMAIN //winserver/sharename$ /mnt/mymountpoint
Fahri çetin
quelle
Beeindruckend! Irgendeine Idee, was das '$' bewirkt? Es hat es für mich behoben, aber keine Ahnung warum
Gabriel Fair
Das Zeichen $ ist eine administrative Freigabe im Windows-Freigabekontext. Wenn es vom System aktiviert wird, kann ein Benutzer mit Administratorrechten auf alle Pfade zugreifen. Beispiel \\ MY-SERVER \ c $
Phil795
0

Ich lief in der gleichen "mount error (2): Keine solche Datei oder Verzeichnis" Fehler mit mount.cifs auf einer CentOS 7 VM. Ich habe nie genau festgestellt, warum der Fehler bei Verwendung der Standard- NTLM- Sicherheit (und der Varianten) generiert wurde , aber ich habe festgestellt, dass die Verwendung der Kerberos-Authentifizierung das Problem umgeht . So sah meine letzte funktionierende Befehlszeile aus:

mount.cifs -v -o domain=MYCODOMAIN,sec=krb5 //winserver/sharename /mnt/mymountpoint

Während dieser Befehl, der den Fehler "no such file or directory" gab, lautete:

mount.cifs -v -o username=myusername,domain=MYCODOMAIN //winserver/sharename /mnt/mymountpoint

Um Kerberos zu verwenden, habe ich das Paket "krb5-workstation" installiert und konfiguriert.

Mark Edington
quelle
0

Versuchen Sie das Paket keyutils zu installieren:

sudo apt-get install keyutils

Ich weiß nicht genau, warum das hilft. Vielleicht hat hier jemand anderes eine Antwort. Aber zumindest hat es mir geholfen: Mit keyutils hat das cifs mount prima funktioniert.

Klaus
quelle
Bitte geben Sie an, wie das in der Frage angegebene Problem behoben werden kann. Was macht dieses Paket und wie wird es in das vom OP aufgeworfene Problem einbezogen?
Haxiel
Gute Frage. Ich bin nicht sicher, wie das Paket keyutils hilft. Zumindest in meinem Fall war das der Trick. Nach der Installation von keyutils hat mein cifs mount einwandfrei funktioniert, wohingegen ich vorher die Fehlermeldung "mount error (2): No such file or directory" erhalten habe, genau wie im OP.
Klaus
Duplikat dieser anderen Antwort
roaima
0

Bei mir hat es funktioniert, indem "vers = 1.0" wie zuvor gesetzt wurde -> credentials = / root / .dbx.credentials, vers = 1.0 , uid = 1001, gid = 100, rw

Carlos Roberto da Silva Junior
quelle