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.
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!
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.
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:
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
.
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ê é.
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.