我遇到一个问题,在没有 fstab 条目的情况下挂载远程 CIFS 服务器可以工作,但通过 fstab 挂载则不行。
以下命令有效:
$ sudo mount -t cifs //w.x.y.z/Home$ /mnt/dir -o domain=A,username=B,password='C',sec=ntlmssp,file_mode=0700,dir_mode=0700
但是,如果我将以下行添加到 /etc/fstab 并尝试通过命令mount
(例如mount -a
或mount /mnt/dir
)挂载,我会收到下面列出的错误:
$ tail -n 1 /etc/fstab
//w.x.y.z/Home$ /mnt/dir cifs domain=A,username=B,password='C',sec=ntlmssp,file_mode=0700,dir_mode=0700
错误:
$ sudo mount /mnt/csif
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
将 dump 和 fsck pass order 显式设置为 0 没有帮助。两个命令似乎都做同样的事情
答案1
最好避免直接输入密码/etc/fstab
(通常是世界可读的)。相反,将它们放入一个文件中,并引用该文件,如下所示:
//w.x.y.z/Home$ /mnt/dir cifs credentials=/home/username/cifs.creds,sec=ntlmssp,file_mode=0700,dir_mode=0700
/home/username/cifs.creds
由合适的用户(root 或与拥有 SMB 共享的 SMB 用户相对应的用户)拥有,并且chmod og-rwx
.它包含以下格式的凭据
domain=A
username=B
password=C
A
,B
并且C
上面必须是文字 - 没有类似 shell 的引号或反斜杠解析。
答案2
当您键入 mount 命令时,该部分password='C'
首先由 shell 处理,并password=C
在到达 mount 命令之前变为。 fstab 条目未完成此操作,因此您必须删除单引号。如果您的密码包含特殊字符,您可以将其替换为八进制代码,尤其\040
是空格。