问题描述
我正在尝试运行:
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
但是我不断收到以下错误:
mount error(22): Invalid argument
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
我究竟做错了什么?
最佳回答
也许这有助于此,mount error(22): Invalid argument
…可能的错误是 \nargument/s (mode) on mount 命令。
-
检查您遇到的错误日志。
\n
tail -f /var/log/kern.log \n
-
删除无效参数
次佳回答
另一个可能的原因是 /etc/fstab
中存在 sec=ntlm
,它与较新的 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
。
第三种回答
我在 Arch Linux 上遇到了同样的问题,日志中有这条消息:
kernel: CIFS VFS: cifs_mount failed w/return code = -22
对我来说,解决方案是指定旧版本的 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
第四种回答
就我而言,这个问题是因为我挂载了一个充满符号链接的目录。在调查了 Windows 中的符号链接之后,我得到了它们的 “real” 路径并挂载了它们。
第五种回答
我使用了错误的 URL。应该是://user.my-backup.com/backup