安装cif:“不支持操作”


17

类似的问题不同,我什至无法与smbclient连接。

samba共享在Windows中可以正常工作,并且可以自动运行,但是在Linux中,我根本无法安装它,并且错误消息充其量是神秘的。这是我的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

错误消息是:

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

完全没用的消息。

启用调试的dmesg:

[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

我尝试了许多不同的-sec选项-都失败了,所有内容都有相同的错误消息。smbclient也无济于事:

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

这在Windows上如何工作,而在Linux上却根本不工作?

Answers:


14

要填写@Ken和@Paul的答案:高于v1时需要指定SMB版本:

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

从2.5.42开始,Linux cifs内核客户端已包含在内核中。默认为cifs协议(及相关的早期SMB方言)(“ vers = 1.0”),但可以通过指定“ vers = 2.0”来选择对较新的方言(SMB2.02,SMB2.1和SMB3和SMB3.02)的支持。或“ vers = 2.1”或“ vers = 3.0”或“ vers = 3.02”。- https://wiki.samba.org/index.php/LinuxCIFSKernel

对于smbclient来说,咒语是-m, --max-protocol=LEVEL

smblcient -L server -U username -m SMB2

我没有找到smbclient允许的级别的列表。据马克Muehlfeld在这个线程 Windows使用的版本是:

  • SMB 2.0是Vista / 2008引入的
  • SMB 2.1由Win7 / 2008R2
  • SMB 2.2又名Win8 / 2012版3.0
  • SMB 3.02(截至8.1 / 2012R2)

有几种不同的mount错误消息可以追溯到不匹配的协议级别。非详尽列表(可以随意编辑答案并添加更多内容):

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

最后,我看到了一些注释,这些注释指示使用该选项的经常被引用的建议,sec=ntlmv2不再应遵循类似的建议。所以可能是一个好主意,至少不是混搭secvers


可能是一台新机器,对我来说我vers=3.0没用,但是vers=3.02做了,谢谢。
dashesy

3
就我而言,我唯一可以上班的人是vers=2.0(Ubuntu 18.04)
James T Snell,

1
与Ubuntu 18.04相同的体验;确保尝试所有可能的SMB版本。
杰伊·泰勒

9

好,“我”已经弄清楚了-由于某种原因,添加“ vers = 3.0”可以使其正常工作。我不知道为什么没有这个问题,或者为什么它起作用。但如果其他人的freenas设置遇到此问题,以供将来参考。


1
添加vers=3.0什么?请协助
khaverim

1
我认为保罗的意思是挂载期权。
BHS

2
vers=1.0为我工作
Bilow

5

我已经为此打了一个多月了。客户端为Xenserver 6.2和6.5时,无法通过CIFS挂载ISO目录。

vers = 3.0终于奏效了。

您在哪里找到此选项?

我的域是Windows 2012 R2。我没有降低注册表中的身份验证要求-它们仍然都是默认设置(当我发现它时,我正打算将其广泛打开)。

我根本不必指定sec =设置。

我必须指定一个域。我在大写字母中指定了域-虽然可能不需要。

我的命令如下。

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

现在了解如何向身份验证添加选项。

谢谢Paul,无论您是谁。


3\.0不能为我工作,但是可以3.0
trpt4him

0

FreeNas允许您设置更安全的共享。如果允许最低的Windows安全协议(Windows NT 4.0),它将与samba一起使用。如果您将其设置为Windows XP协议,则您需要重新设置vers = 3.0,这是我奋斗40分钟以通过CentOS 7获得FreeNas连接后发现的。问题是客户端(和GUI)应该检查最高的版本下降。相反,它来自可用的最低版本。一旦改变,这可能是有道理的。我认为特别令人讨厌的是,在Gnome中,您无法添加使用CIFS或指定安全协议版本的选项。我想他们认为这些人不是命令行用户,而是什么都没有,但是这使Linux不能被台式机广泛使用。真是可惜。


-1

在nas4free上,在屏幕底部的其他参数框中,单击服务-> CIFS / SMB。

ntlm auth =是


什么是nas4freeOP,与OP问题有什么关系?
jesse_b
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.