fstab 和 cifs 挂载,是否可以在 fstab 之外存储身份验证信息?

TJ *_*J L 15 linux permissions mount fstab

我目前正在使用 cifs 在 /etc/fstab 中挂载一些网络共享(需要身份验证)。它运行良好,但我想将身份验证详细信息(用户名/密码)移到 fstab 之外,并且能够将其修改为 600(因为如果我要更改其权限,fstab 可能会出现问题)。我想知道是否可以这样做(多用户系统,不希望所有用户都可以查看这些权限)。

从:

//server/foo/bar /mnt/bar cifs username=user,password=pass,r 0 0
Run Code Online (Sandbox Code Playgroud)

到:

//server/foo/bar /mnt/bar cifs <link to permissions>,r 0 0
Run Code Online (Sandbox Code Playgroud)

(或类似的东西)。谢谢。

jan*_*neb 14

从 mount.cifs 联机帮助页:

凭据=文件名
    指定包含用户名和/或密码的文件。文件格式为:

                         用户名=值
                         密码=值
   这比在共享文件(例如 /etc/fstab)中使用明文密码更可取。请务必正确保护任何凭据文件。

  • 请注意模糊的“确保正确保护任何凭据文件”。通常意味着您应该将文件(以root身份)保存到`/root/`,然后`chmod 700` (3认同)
  • 我曾希望情况会在*七年后*有所不同,但遗憾的是,这似乎仍然是“最佳”答案。而且它不是远程安全的。每个对服务器具有 `sudo` 访问权限的人都可以读取 `.smbcredentials`。就我而言,该文件将包含(除非我诱使其他人放弃他们的)_my_ Windows 登录凭据。比如,我用来访问 Evil Corp 的_所有_系统的相同单点登录凭据,包括工资单、福利等?似乎充满了危险。像这样的东西可能更安全一些:https://askubuntu.com/a/1081421。 (3认同)
  • 我的连接还需要 `domain=value` 部分 (2认同)
  • 该文件的语法很微妙。不要在那里放空行甚至“#comments”。 (2认同)

小智 9

使用凭据选项,例如:

http://www.justlinux.com/nhf/Filesystems/Mounting_smbfs_Shares_Permanently.html

来自网站的示例:

cd
echo username=mywindowsusername > .smbpasswd
echo password=mywindowspassword >> .smbpasswd
chmod 600 .smbpasswd
Run Code Online (Sandbox Code Playgroud)

在命令中替换您的 Windows 用户名和密码。除了 root 之外,没有其他人能够读取此文件的内容。

创建后,您可以将 /etc/fstab 文件中的行修改为如下所示:

//servername/sharename /mountdirectory smbfs credentials=/home/myhomedirectory/.smbpasswd 0 0
Run Code Online (Sandbox Code Playgroud)

来自 /etc/fstab 的示例:

//server/share/   /mnt/localmountpoint   cifs   credentials=/root/.creda
Run Code Online (Sandbox Code Playgroud)

janneb 的帖子和手册页的链接显示了凭据文件中需要存在的内容。

  • 谢谢,两个答案都有帮助(我应该阅读联机帮助页)。如果我可以将 2 个答案标记为正确答案,我会的。 (2认同)

vla*_*ras 6

所以我正在积累两个答案

  1. 创建文件,例如 /root/.cifs

    username=value
    password=value
    domain=value (optional)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 设置权限600(rw-权限)以保护您的凭据

    # chmod 600 /root/.cifs
    
    Run Code Online (Sandbox Code Playgroud)
  3. 传递credentials=/root/.cifs给您的命令而不是username=andpassword=

  • 额外的小评论:不需要`chmod`,因为根`/root` 的主目录希望已经是`rwx------`。 (2认同)