Montowanie cifs: „Operacja nie obsługiwana”

17

W przeciwieństwie do podobnego pytania nie mogę nawet połączyć się z smbclient.

Udział samby działa dobrze w systemie Windows i działa automagicznie, ale w systemie Linux nie mogę go w ogóle zamontować, a komunikat o błędzie jest w najlepszym razie tajemniczy. Oto moja samba.conf:

[global]
    dos charset = CP437
    netbios name = REDACTED
    server string = Lab
    server role = standalone server
    map to guest = Bad User
    obey pam restrictions = Yes
    smb passwd file = /var/etc/private/smbpasswd
    private dir = /var/etc/private
    max log size = 51200
    server min protocol = SMB2
    time server = Yes
    deadtime = 15
    max open files = 11070
    hostname lookups = Yes
    load printers = No
    printcap name = /dev/null
    disable spoolss = Yes
    dns proxy = No
    pid directory = /var/run/samba
    panic action = /usr/local/libexec/samba/samba-backtrace
    idmap config * : backend = tdb
    acl allow execute always = Yes
    create mask = 0666
    directory mask = 0777
    directory name cache size = 0
    kernel change notify = No
    map archive = No
    map readonly = no
    store dos attributes = Yes
    strict locking = No

[common]
    comment = Lab Common share
    path = /mnt/pool/common
    read only = No
    inherit acls = Yes
    hosts allow = XXX.XXX.XX.X/24, XXX.XX.XX.X/24 <-- redacted
    hide dot files = No
    veto files = /.snap/.windows/.zfs/
    vfs objects = zfsacl, streams_xattr, aio_pthread
    zfsacl:acesort = dontcare
    nfs4:chown = yes
    nfs4:acedup = merge
    nfs4:mode = special
    recycle:subdir_mode = 0700
    recycle:directory_mode = 0777
    recycle:touch = yes
    recycle:versions = yes
    recycle:keeptree = yes
    recycle:repository = .recycle/%U

Komunikat o błędzie to:

[as@localhost ~]$ sudo mount -t cifs -o username=removed,password=removed  //server.ip.address/common /media/windowsshare/
mount error(95): Operation not supported

Idealnie bezużyteczna wiadomość.

Dmesg z włączonym debugowaniem:

[237179.795551] fs/cifs/cifsfs.c: Devname: //132.239.27.172/common flags: 0
[237179.795563] fs/cifs/connect.c: Username: lauria
[237179.795565] fs/cifs/connect.c: file mode: 0x1ed  dir mode: 0x1ed
[237179.795600] fs/cifs/connect.c: CIFS VFS: in cifs_mount as Xid: 44 with uid: 0
[237179.795600] fs/cifs/connect.c: UNC: \\132.239.27.172\common
[237179.795605] fs/cifs/connect.c: Socket created
[237179.795606] fs/cifs/connect.c: sndbuf 16384 rcvbuf 87380 rcvtimeo 0x1b58
[237179.795897] fs/cifs/fscache.c: cifs_fscache_get_client_cookie: (0xffff8803e0aa4800/0xffff880035d25580)
[237179.795898] fs/cifs/connect.c: Demultiplex PID: 25817
[237179.795902] fs/cifs/connect.c: CIFS VFS: in cifs_get_smb_ses as Xid: 45 with uid: 0
[237179.795903] fs/cifs/connect.c: Existing smb sess not found
[237179.795907] fs/cifs/cifssmb.c: Requesting extended security.
[237179.795910] fs/cifs/transport.c: For smb_command 114
[237179.795912] fs/cifs/transport.c: Sending smb: smb_len=78
[237179.801062] fs/cifs/connect.c: RFC1002 header 0x25
[237179.801067] fs/cifs/misc.c: checkSMB Length: 0x29, smb_buf_length: 0x25
[237179.801090] fs/cifs/transport.c: cifs_sync_mid_result: cmd=114 mid=1 state=4
[237179.801093] fs/cifs/cifssmb.c: Dialect: 65535
[237179.801094] fs/cifs/cifssmb.c: negprot rc -95
[237179.801097] fs/cifs/connect.c: CIFS VFS: leaving cifs_get_smb_ses (xid = 45) rc = -95
[237179.801100] fs/cifs/fscache.c: cifs_fscache_release_client_cookie: (0xffff8803e0aa4800/0xffff880035d25580)
[237179.801262] fs/cifs/connect.c: CIFS VFS: leaving cifs_mount (xid = 44) rc = -95
[237179.801263] CIFS VFS: cifs_mount failed w/return code = -95

Próbowałem wielu różnych -secopcji --- wszystkie zawodzą, wszystko ma ten sam komunikat o błędzie. smbclient nie jest również pomocny:

smbclient //132.239.27.172/common -U username%password
protocol negotiation failed: NT_STATUS_INVALID_NETWORK_RESPONSE

Jak to działa w systemie Windows, ale wcale nie działa w systemie Linux?

Paweł
źródło

Odpowiedzi:

14

Aby wypełnić odpowiedzi z @Ken i @Paul: Wersja SMB musi być określona, ​​gdy jest wyższa niż v1:

mount -t cifs \
  -o username=USERNAME,vers=3.0 \
  //server/share \
  /mnt/point

Klient jądra Linux CIFS jest dołączany do jądra od wersji 2.5.42. Protokół cifs (i powiązane wcześniejsze dialekty SMB) jest domyślny („vers = 1.0”), ale obsługę nowszych dialektów (SMB2.02, SMB2.1 oraz SMB3 i SMB3.02) można wybrać, określając „vers = 2.0” lub „vers = 2.1” lub „vers = 3.0” lub „vers = 3.02” na górze. - https://wiki.samba.org/index.php/LinuxCIFSKernel

W przypadku smbclient inkantacja jest następująca -m, --max-protocol=LEVEL:

smblcient -L server -U username -m SMB2

Nie znalazłem listy dozwolonych poziomów dla smbclient. Według Marc Muehlfeld w tym wątku wersje używane przez system Windows to:

  • SMB 2.0 został wprowadzony przez Vista / 2008
  • SMB 2.1 przez Win7 / 2008R2
  • SMB 2.2 aka 3.0 przez Win8 / 2012
  • SMB 3.02 do 8.1 / 2012R2

Istnieje kilka różnych mountkomunikatów o błędach, które można prześledzić do poziomu niedopasowanego protokołu. Niewyczerpująca lista (edytuj odpowiedź i dodaj więcej):

mount error(13): Permission denied
mount error(95): Operation not supported
mount error(121): Remote I/O error

Wreszcie, widziałem kilka uwag wskazujących na często cytowane porady dotyczące korzystania z tej opcji sec=ntlmv2i podobne nie powinny być przestrzegane. Więc prawdopodobnie dobrym pomysłem jest przynajmniej nie mieszanie i łączenie seci vers.

matowe wilkie
źródło
To może być nowa maszyna, dla mnie vers=3.0nie działała, ale działała vers=3.02, dzięki.
dashy
3
I w moim przypadku jedynym, co udało mi się dostać do pracy, był vers=2.0(Ubuntu 18.04)
James T Snell
1
To samo doświadczenie z Ubuntu 18.04; koniecznie wypróbuj wszystkie możliwe wersje SMB.
Jay Taylor
9

OK „Rozmyślałem” - z jakiegoś powodu dodanie „vers = 3.0” sprawia, że ​​działa. Nie wiem, dlaczego miał problemy bez tego, ani dlaczego to działa. ale do wykorzystania w przyszłości, jeśli inni mają ten problem ze swoimi konfiguracjami freenas.

Paweł
źródło
1
dodając vers=3.0do czego ? Proszę o pomoc
khaverim,
1
Myślę, że Paul zamierzał montować opcje.
BHS
2
vers=1.0pracował dla mnie
Bilow
5

Walczę z tym od ponad miesiąca. Ponieważ klientem jest Xenserver 6.2 i 6.5, nie można zamontować katalogu ISO przez CIFS.

Vers = 3.0 w końcu zadziałało.

Gdzie znalazłeś tę opcję?

Moja domena to Windows 2012 R2. Nie obniżyłem wymagań uwierzytelniania w rejestrze - wszystkie są nadal domyślne (właśnie miałem je szeroko otworzyć, kiedy to znalazłem).

W ogóle nie musiałem określać ustawienia sec =.

I DID musiałem określić domenę. Podałem domenę wielkimi literami - może jednak nie być potrzebna.

Moje polecenie następuje.

mount -t cifs "//192.168.92.25/shared" -o username=administrator,password=<your_password>,domain=<YOUR DOMAIN IN CAPS>,vers=3\.0 /root/tmp

Teraz wymyśl, jak dodać opcje do uwierzytelnienia.

Dzięki, Paul, kimkolwiek jesteś.

Ken Finch
źródło
3\.0nie działało dla mnie, ale działało 3.0.
trpt4him
0

FreeNas pozwala skonfigurować bezpieczniejsze udziały. Jeśli zezwolisz na najniższe protokoły bezpieczeństwa systemu Windows (Windows NT 4.0), będzie on działał z sambą. Jeśli masz ustawione, powiedz, protokoły systemu Windows XP i wyżej, potrzebujesz wersji vers = 3.0, którą odkryłem po 40 minutach walki o uzyskanie FreeNas connecte wiv CentOS 7. Problem polega na tym, że klienci (i GUI) powinni sprawdzać najwyższą wartość wersja w dół. Zamiast tego pochodzi z najniższej dostępnej wersji. Może kiedyś miało to sens, ale wiele się zmieniło. Myślę, że jest to szczególnie denerwujące, że w Gnome nie można dodawać opcji ani do korzystania z CIFS, ani do określania wersji protokołu bezpieczeństwa. Wydaje mi się, że dla tych osób jest to wiersz poleceń lub nic, ale to powstrzymuje Linuksa przed szerszym użyciem przez komputery. co naprawdę szkoda.

Jonah Libster
źródło
-1

w us4free kliknij usługę -> CIFS / SMB u dołu ekranu w polu typu Parametry dodatkowe

ntlm auth = tak

użytkownik352466
źródło
Co to jest nas4freei jak odnosi się do pytania PO?
jesse_b