Montagem cifs: “Operação não suportada”

8

Diferentemente da pergunta semelhante , não consigo me conectar com o smbclient.

O compartilhamento 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 habilitado 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 opções -sec diferentes --- todas elas falharam, 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? O que estou fazendo de errado? Qualquer ideia seria apreciada!

    
por paul 14.07.2014 / 20:31

4 respostas

7

OK "Eu" descobri - por algum motivo, adicionando "vers = 3.0" faz funcionar. Eu não sei porque estava tendo problemas sem isso, ou porque funciona. mas para referência futura, se outros estão tendo esse problema com suas configurações freenas.

    
por 16.07.2014 / 00:24
5

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

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

The Linux cifs kernel client has been included in the kernel since 2.5.42. The cifs protocol (and related earlier SMB dialects) is the default ("vers=1.0") but support for newer dialects (SMB2.02, SMB2.1 and SMB3 and SMB3.02) can be selected by specifying "vers=2.0" or "vers=2.1" or "vers=3.0" or "vers=3.02" on mount. -- 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 o smbclient. De acordo com Marc Muehlfeld em este 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 por 8.1 / 2012R2

Existem várias mensagens de erro mount diferentes que podem ser rastreadas até o nível de protocolo incompatível. Uma lista não exaustiva (sinta-se à 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, eu vi alguns comentários que indicam o conselho freqüentemente citado para usar a opção sec=ntlmv2 e similares não devem mais ser seguidos. Então provavelmente é uma boa ideia, pelo menos, não misturar e combinar sec e vers .

    
por 19.10.2017 / 20:51
4

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

O vers = 3.0 finalmente funcionou.

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

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

Eu não precisei especificar uma definição de seg =.

Eu precisei especificar um domínio. Eu especifiquei o domínio em maiúsculas - pode não ser 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ê é.

    
por 26.01.2015 / 08:23
0

O FreeNas permite que você configure 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ê tem que definir, diga protocolos do Windows XP e acima você reuqire o vers = 3.0 como descobri depois de lutar por 40 minutos para obter o FreeNas connecte wiv CentOS 7. O problema é que os clientes (e GUI) devem estar verificando o mais alto versão para baixo. 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 acham que essas pessoas são de linha de comando ou nada, mas isso impede que o Linux seja usado mais amplamente pelos usos da área de trabalho. o que é realmente uma vergonha.

    
por 21.12.2015 / 23:22