直接或通过 fstab 挂载 CIFS 文件系统

直接或通过 fstab 挂载 CIFS 文件系统

我遇到一个问题,在没有 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 -amount /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

AB并且C上面必须是文字 - 没有类似 shell 的引号或反斜杠解析。

答案2

当您键入 mount 命令时,该部分password='C'首先由 shell 处理,并password=C在到达 mount 命令之前变为。 fstab 条目未完成此操作,因此您必须删除单引号。如果您的密码包含特殊字符,您可以将其替换为八进制代码,尤其\040是空格。

相关内容