挂载 cifs 驱动器给出:挂载错误(22):参数无效

Nie*_*ian 51 mount cifs

我正在尝试运行:

sudo mount -t cifs //user.my-backup.com /mnt/wal_drive -o iocharset=utf8,rw,credentials=/etc/backupcredentials.txt,uid=postgres,gid=postgres,file_mode=0660,dir_mode=0770
Run Code Online (Sandbox Code Playgroud)

但是我不断收到以下错误:

mount error(22): Invalid argument
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

小智 74

也许这有助于解决这个问题,mount error(22): Invalid argument...可能的错误是 mount 命令上的参数/s(模式)。

  1. 检查您遇到的错误的日志。

    tail -f  /var/log/kern.log 
    
    Run Code Online (Sandbox Code Playgroud)
  2. 删除无效参数

  • 这对我有用。我发现错误 `CIFS not working, kernel upgrade:No dialect specified on mount` 并通过 [adding] `vers=1.0` 到我的 /etc/fstab(https://bbs.archlinux.org/viewtopic.php ?id=230952)。我怀疑它是由使用内核 4.13 引起的。 (11认同)

drg*_*rog 14

另一个可能的原因是存在sec=ntlmin/etc/fstab并且它与较新的 SMB 协议(如 SMB3)不兼容。

虽然不是 OP 的情况,但这也可能导致mount error(22): Invalid argument错误,就像升级旧服务器后对我所做的那样。

尽管kern.log包含对 的建议specify vers=1.0 on mount,但删除或更改可能更安全sec=ntlm。也许使用默认值来允许自动协商 SMB 版本和安全性,或指定兼容选项,例如vers=3.0,sec=ntlmssp.

显然,这取决于您的 SMB 服务器的功能,但vers=1.0除非必要,否则我会尽量避免。


小智 8

我在 Arch Linux 上遇到了同样的问题,日志中有这条消息:

kernel: CIFS VFS: cifs_mount failed w/return code = -22
Run Code Online (Sandbox Code Playgroud)

对我来说,解决方案是指定旧版本的 cifs(默认为 3.0):

/etc/fstab

//my-router/share /media/share cifs ver="2.1",rw,soft,uid=ele,gid=ele,file_mode=0770,dir_mode=0770,credentials=/etc/router-credentials.conf 0 0
Run Code Online (Sandbox Code Playgroud)


Nie*_*ian 2

我使用了错误的网址。本来应该是://user.my-backup.com/backup