nie można użyć mount.cifs: mount error (2): Brak takiego pliku lub katalogu

17

Komenda mount.cifs nie działa w systemie gentoo z systememd

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)

Potwierdzono, że istnienie i dostępność pliku mountpoint / home / katalog / ścieżka i plik referencji / etc / user . Włączono także odpowiednie moduły i usługi, tj.

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

i

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

Problem ten został zidentyfikowany przez wielu użytkowników, np. Jeden przykład . NALEŻY RÓWNIEŻ PAMIĘTAĆ, że to samo polecenie wykonane w moim systemie Ubuntu / debian jest w stanie zainstalować poprawnie.

Inne informacje w problematycznej maszynie:

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

wersja mount.cifs zainstalowana w debian / ubuntu to 6.0

Chenming Zhang
źródło
/home/directory/pathczy na pewno istnieje w środowisku Gentoo? Dziwne, że o tym nie wspominasz, ponieważ jest to oczywiste pierwsze pytanie, które się pojawia.
Hauke ​​Laging
Tak, potwierdziłem istnienie i dostępność punktu montowania / home / directory / path .
Chenming Zhang
Powinieneś dodać tę informację do pytania, aby inni czytelnicy nie musieli czytać komentarzy, aby je uzyskać.
Hauke ​​Laging

Odpowiedzi:

8

Może być konieczne podanie opcji vers = w poleceniu mount w celu wymuszenia wersji 3.0, jeśli próbujesz zamontować udział z nowszej wersji systemu Windows. Jeden z naszych serwerów plików został niedawno zaktualizowany do wersji 2012R2 i wtedy mój mount przestał działać. Ustawienie go na vers = 3.0 naprawiło problem. Podobnie jak większość błędów Samby / CIFS, komunikat „Brak takiego pliku lub katalogu” nie jest zbyt pomocny.

Jako przykład:

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

.. gdzie mam swoją domenę, nazwę użytkownika i hasło zawarte w pliku .cifs_user.

Najwyraźniej smbmount domyślnie używa nowszej wersji protokołu SMB, ponieważ działał bez problemu i żadnych specjalnych opcji.

Zauważ, że domyślna wersja protokołu to 1.0.

Ze strony podręcznika 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
źródło
Miałem podobny problem z flagą „nounix”, która nie może być obsługiwana w wersji 1.0. Zmiana na v2.0 (najnowszą dostępną dla mnie) naprawiła problem. Również uprawnienia do plików są bardziej sensowne dzięki vers = 2.0 (755 zamiast 777)
cxrodgers
2
Wielkie dzięki za rozwiązanie związane z opcją vers =! Działa to dla mnie, tylko wstecz ... Po uaktualnieniu opensuse skok z wersji 42.3 do 15.1 wpis fstab do montażu dysku sieciowego, który działał, przestał działać w 15.1. Użyłem opcji vers = 1.0 i zgadnij co ... Prawdopodobnie skok 15.1 używa nowszej wersji protokołu SMB, która nie była w stanie znaleźć katalogu zdalnego.
John
Łączenie się z udziałem hostowanym w systemie Windows Server 2003 z systemu Ubuntu 19.04 ciągle mi się nie udawało, dopóki nie dodałem vers = 1.0 do mojej listy opcji. Dzięki!
user8675309,
To zadziałało dla mnie, Z WYJĄTKIEM: Musiałem podać wersję DRUGĄ, vers=2.0aby zamontować udziały samby mojego 5-letniego systemu NAS ... z wersją 3.0 dostałem błąd.
Frank Nocke,
etc/fstabużytkownicy: Po prostu vers=3.0vers=2.0,guest,uid=1000,iocharset…
ustaw
5

Czy możesz skorzystać z nodfsopcji? tzn. dla -oopcji wejściowych podaj dane wejściowe jak poniżej.

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

tj. dołączone ,nodfs

To zadziałało dla mnie.

Sanath
źródło
Dziękuję Ci! Najpierw wypróbowałem wszystkie inne sugestie, ale potrzebowałem tego na fedora30, gdzie wcześniej go nie potrzebowałem
Jens Timmerman
2

Może być konieczna zmiana secparametru: to ustawienie sprawiło, że zadziałało w mojej konfiguracji:

mount.cifs ... -o sec=ntlm

Odpowiedni wyciąg z man mount.cifs:

sec=Tryb Bezpieczny. Dozwolone wartości to:

  • none - próba połączenia jako użytkownik zerowy (bez nazwy)
  • krb5 - Użyj uwierzytelniania Kerberos w wersji 5
  • krb5i - Użyj uwierzytelniania Kerberos i wymuś włączenie podpisywania pakietów
  • ntlm - Użyj skrótu hasła NTLM
  • ntlmi - Użyj mieszania hasła NTLM i wymuś podpisywanie pakietów
  • ntlmv2 - Użyj skrótu hasła NTLMv2
  • ntlmv2i - Użyj mieszania haseł NTLMv2 i wymuś podpisywanie pakietów
  • ntlmssp - Używaj mieszania haseł NTLMv2 zawartego w surowym komunikacie NTLMSSP
  • ntlmsspi - Użyj skrótu hasła NTLMv2 zawartego w komunikacie Raw NTLMSSP i wymuś podpisywanie pakietów

    Domyślnie w wersjach jądra głównego przed v3.8 było sec=ntlm. W v3.8 wartość domyślna została zmieniona na sec=ntlmssp.

    Jeśli serwer wymaga podpisania podczas negocjacji protokołu, może zostać włączony automatycznie. Podpisywanie pakietów może być również włączone automatycznie, jeśli jest włączone w /proc/fs/cifs/SecurityFlags.

Benoit Duffez
źródło
1

Wpadłem na to na Ubuntu 18.04. Problem polegał na tym, że potrzebowałem pakietu keyutils do uwierzytelnienia Kerberos ( sec=krb5opcja montowania), który nie został zainstalowany wraz z cifs-utils (który zapewnił mount.cifs). Nie jestem pewien, czy nazwa pakietu jest taka sama w Gentoo, czy nie. (Dzięki https://forum.zentyal.org/index.php?topic=18601.0 za rozwiązanie.)

Chris
źródło
1

Spróbuj zainstalować keyutils pakietu:

sudo apt-get install keyutils

Nie jestem pewien, dlaczego to pomaga, może ktoś ma tutaj odpowiedź. Ale przynajmniej załatwiło to dla mnie: z keyutils montaż cifs działał dobrze.

Klaus
źródło
Dodaj informacje, jak to rozwiązałoby problem wskazany w pytaniu. Co robi ten pakiet i jak ma się do problemu podniesionego przez PO?
Haxiel,
Dobre pytanie. Nie jestem pewien, w jaki sposób keyutils pakietu. W moim przypadku przynajmniej to załatwiło sprawę. Po instalacji keyutils, moje cifs mount działało dobrze, podczas gdy zanim dostałem komunikat o błędzie „błąd montowania (2): brak takiego pliku lub katalogu”, tak jak w OP.
Klaus
Duplikat tej drugiej odpowiedzi
roaima,
1

Chciałem dodać kolejne źródło tego problemu, z którym się dzisiaj spotkałem. Po zmianie identyfikatora użytkownika unixowego użytkownik smb utworzony za pomocą smbpasswd może nie być w stanie uwierzytelnić się dla udziału samby, co powoduje ten sam błąd.

Więc jeśli zmieniłeś swój identyfikator użytkownika unix, usermod -u 1000 my_usermożesz mieć problemy. Rozwiązaniem dla mnie było później usunięcie i ponowne dodanie użytkownika smb:

smbpasswd -x mój_użytkownik
smbpasswd -a mój_użytkownik
Ryad
źródło
Chociaż jest to prawda, w jaki sposób ma to związek z pierwotnym pytaniem?
RalfFriedl
Jak powiedziałem, jeśli zmienisz identyfikator użytkownika, pojawi się ten sam błąd, co w pierwotnym pytaniu. Więc jeśli ktoś zrobiłby to samo i znalazł ten wątek, on lub ona może uznać moją wskazówkę za przydatną.
Ryad
1

Dodaj $do końca, tak jak to//winserver/sharename$

mount.cifs -v -o username=myusername,domain=MYCODOMAIN //winserver/sharename$ /mnt/mymountpoint
Fahri çetin
źródło
Łał! Masz pojęcie, co robi „$”? Naprawiłem to, ale nie mam pojęcia, dlaczego
Gabriel Fair
Znak $ to udział administracyjny w kontekście udziału Windows, jeśli aktywowany przez system, użytkownik z prawami administracyjnymi może uzyskać dostęp do wszystkich ścieżek. Przykład \\ MY-SERVER \ c $
Phil795 25.1019
0

Uruchomiłem ten sam błąd „błąd montowania (2): brak takiego pliku lub katalogu” przy użyciu mount.cifs na maszynie Wirtualnej CentOS 7. Nigdy nie ustaliłem dokładnie, dlaczego błąd był generowany podczas korzystania z domyślnych zabezpieczeń ntlm (i wariantów), ale odkryłem, że korzystanie z uwierzytelniania Kerberos rozwiązało problem. Więc moja ostatnia działająca linia poleceń wyglądała tak:

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

mając na uwadze, że polecenie, które spowodowało błąd „brak takiego pliku lub katalogu” to:

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

Aby korzystać z Kerberos, zainstalowałem pakiet „krb5-workstation” i skonfigurowałem go.

Mark Edington
źródło
0

Ze mną to działało, umieszczając „vers = 1.0” jak poprzednio -> referencje = / root / .dbx.credentials, vers = 1.0 , uid = 1001, gid = 100, rw

Carlos Roberto da Silva Junior
źródło