我一直在为 Samba 使用单独的凭证文件,因为这似乎是“建议的”让事情“更安全”的方法。然而,我也一直在试图弄清楚这究竟是如何让你的系统更安全的。
我的想法是,无论您将凭据直接放在 fstab 中还是放在单独的 cred 文件中,凭据都会以纯文本形式存储。如果有人已经侵入您的系统,以至于他们可以访问 /etc/fstab,那么他们现在就知道 cred 文件在哪里,它叫什么,而且很可能无论它的权限如何都可以访问它。
我觉得这对于工作环境中的多用户计算机可能很有用,通过将凭证文件存储在个人 /Home 文件夹中的某个位置,可以防止每个用户访问彼此的“个人网络存储”共享。但对于单用户家庭计算机,使用凭证文件真的会让任何东西更安全吗,还是只是让你“感觉”它是安全的?
如果它确实使事情变得更加安全,那么存储位置和权限的最佳做法是什么?
明确地说,我说的是家庭用户访问本地服务器上的共享以访问媒体和文件备份位置。
答案1
对于单用户系统,这很可能没有什么区别,因为相同的密码也可以在您自己的帐户下的许多其他地方找到,例如在 Linux 上,它很可能存储在 GNOME Keyring 中,您的任何程序都可以读取它。
但是,这确实增加了您的密码可能因 fstab 条目而故意或意外泄露的可能性,例如,将配置复制粘贴到您的笔记中或发送系统日志以帮助某人调查系统问题时。(例如,图形文件管理器可能会将 fstab 内容保存在内存中,等等。)
这类似于命令行或系统日志中的密码——理论上,在单用户系统上,除了您之外的任何人都看不到日志文件,直到有一天您在 GitHub 问题上发布系统日志,而您的密码意外地出现在其中。
最后,你发现的“建议”并不只针对单用户系统;通常它被给予,或者找到,多用户系统管理员,它确实有很大的不同。
如果有人已经侵入您的系统,以至于他们可以访问 /etc/fstab,那么他们现在就知道 cred 文件在哪里、它叫什么名字,并且很可能无论它的权限如何都可以访问它。
不是,因为 /etc/fstab 通常默认可供所有进程和所有用户访问,因此访问它并不意味着“最有可能”您可以读取其他文件,而不管它们的权限如何。
因此,如果你能够以“http”用户的身份在网络服务器上运行代码(例如,通过受感染的 PHP 网络应用程序),这仍然是长的距离真正拥有 root 权限还有很长的路要走。
以非特权用户身份访问系统并不一定意味着受到损害——在多用户系统(服务器和工作站)中,除所有者之外的其他人也可以合法登录,这种情况仍然很常见。包含用户密码哈希值的通用 /etc/shadow 文件也主要受文件权限的保护。
如果它确实使事情变得更加安全,那么存储位置和权限的最佳做法是什么?
当共享在启动时挂载时,凭证文件也必须在此时可访问(请记住,启动过程有几个阶段 - 在某些其他事情发生之前可能会挂载网络文件系统)。将其放入/etc
可以保证工作(/etc/private 可能是一个合适的位置)。
如果共享仅对一个用户可访问(file_mode
例如,使用 mount 选项),则将文件放在某人的个人 /home 中可能有意义,但这完全属于意见领域。
fstab 中的挂载以 root 权限进行处理,因此该文件只需由 root 可读 - 通常,重点是它不能被“世界”读取。(尽管 root 可以在没有授予读取权限的情况下读取文件,但仍然习惯于使此类文件明确可读且通常可由 root 写入,即 0600 或 0400 而不是 0000 权限位。)