CIFs de montagem: “Operação não suportada”

17

Diferente da pergunta semelhante , eu não consigo nem me conectar ao smbclient.

O compartilhamento do samba funciona bem no Windows e funciona automaticamente, mas no Linux não consigo montá-lo e a mensagem de erro é enigmática na melhor das hipóteses. Aqui está o meu 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

A mensagem de erro é:

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

Uma mensagem perfeitamente inútil.

O dmesg ativado para depuração:

[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

Eu tentei muitas -secopções diferentes - todas elas falham, tudo tem a mesma mensagem de erro. O smbclient também não é útil:

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

Como isso funciona no Windows, mas não no Linux?

Paulo
fonte

Respostas:

14

Para preencher as respostas de @Ken e @Paul: A versão SMB precisa ser especificada quando superior à v1:

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

O cliente de kernel cifs do Linux foi incluído no kernel desde 2.5.42. O protocolo cifs (e dialetos SMB anteriores relacionados) é o padrão ("vers = 1.0"), mas o suporte para dialetos mais recentes (SMB2.02, SMB2.1 e SMB3 e SMB3.02) pode ser selecionado especificando "vers = 2.0" ou "vers = 2.1" ou "vers = 3.0" ou "vers = 3.02" na montagem. - https://wiki.samba.org/index.php/LinuxCIFSKernel

Para smbclient, o encantamento é -m, --max-protocol=LEVEL:

smblcient -L server -U username -m SMB2

Não encontrei uma lista dos níveis permitidos para smbclient. De acordo com Marc Muehlfeld neste tópico, as versões usadas pelo Windows são:

  • O SMB 2.0 foi introduzido pelo Vista / 2008
  • SMB 2.1 por Win7 / 2008R2
  • SMB 2.2 aka 3.0 por Win8 / 2012
  • SMB 3.02 até 8.1 / 2012R2

Existem várias mountmensagens de erro diferentes que podem ser rastreadas até o nível de protocolo incompatível. Uma lista não exaustiva (fique à vontade para editar a resposta e adicionar mais):

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

Finalmente, vi alguns comentários que indicam os conselhos frequentemente citados para usar a opção sec=ntlmv2e similares não devem mais ser seguidos. Então provavelmente é uma boa idéia, pelo menos, não misturar e combinar sece vers.

Matt Wilson
fonte
Pode ser uma máquina nova, para mim vers=3.0não funcionou, mas vers=3.02funcionou, obrigado.
dashesy
3
E no meu caso, o único que eu poderia começar a trabalhar foi vers=2.0(Ubuntu 18.04)
James T Snell
1
Mesma experiência com o Ubuntu 18.04; não deixe de experimentar todas as versões SMB possíveis.
Jay Taylor
9

OK "Eu" descobri isso - por algum motivo, adicionar "vers = 3.0" faz funcionar. Não sei por que estava tendo problemas sem isso ou por que funciona. mas para referência futura se outras pessoas tiverem esse problema com suas configurações de freenas.

Paulo
fonte
1
adicionando vers=3.0a quê ? Por favor, ajude
khaverim
1
Eu acho que paul pretendia montar opções.
BHS
2
vers=1.0trabalhou para mim
Bilow
5

Estou lutando contra isso há mais de um mês. Com o cliente sendo Xenserver 6.2 e 6.5, não é possível montar o diretório ISO sobre CIFS.

O vers = 3.0 finalmente funcionou.

Onde você encontrou essa opção ??!

Meu domínio é o Windows 2012 R2. Não reduzi os requisitos de autenticação no registro - eles ainda são todos padrão (eu estava prestes a abri-lo quando o encontrei).

Não precisei especificar uma configuração sec =.

Eu tenho que especificar um domínio. Especifiquei domínio no caps - talvez não seja necessário.

Meu comando segue.

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

Agora, descubra como adicionar opções à autenticação.

Obrigado Paul, quem você é.

Ken Finch
fonte
3\.0não funcionou para mim, mas 3.0funcionou.
trpt4him
0

O FreeNas permite configurar compartilhamentos mais seguros. Se você permitir os protocolos de segurança mais baixos do Windows (Windows NT 4.0), ele funcionará com o samba. Se você tiver definido, digamos protocolos do Windows XP e acima, você exigirá o vers = 3.0, como descobri depois de 40 minutos para obter o FreeNas connect wiv CentOS 7. O problema é que os clientes (e a GUI) devem estar verificando os níveis mais altos versão inativa. Em vez disso, vai da versão mais baixa disponível. Pode ter feito sentido uma vez, mas muita coisa mudou. Eu acho que é especialmente irritante que no Gnome você não possa adicionar opções, seja para usar o CIFS ou para especificar versões do protocolo de segurança. Eu acho que eles imaginam para essas pessoas a linha de comando ou nada, mas isso impede o Linux de ser usado mais amplamente pelos desktops. o que é realmente uma pena.

Jonah Libster
fonte
-1

no nas4free, clique em serviço -> CIFS / SMB na parte inferior da tela no tipo de caixa Parâmetros adicionais

ntlm auth = yes

user352466
fonte
O que é nas4freee como isso se relaciona com a pergunta dos OPs?
11139 jesse_b