概括
在 Unix、Linux 或 BSD 系统中:
除了私钥或者密码文件、用户私有内容或任何自定义应用程序特定的原因(例如为用户或内部或外部的自动化流程提供私人信息数据库),为什么要禁用其他访问文件权限(例如chmod -R o-rwx <file/directory>
:)对于操作系统安装的文件、相关配置设置内容(通常在/lib
和中找到/etc
)以及额外的、共同的/标准的地方?
请阅读并理解这个相关问题(“为什么许多 Linux 文件具有其他=读取访问权限?”)及其答案在评论或回答之前。
更多细节
哪些一般推理或“最佳实践”适用于大多数系统,特别是在公共互联网上提供服务的系统(常见示例包括但不限于:DNS,SMTP,IMAP,HTTP及其安全变体)?
请注意,我们更加关注系统文件,而不是应用程序特定或用户私有的信息(例如在 中找到的许多文件/目录/home
)。
我的团队对的一般范例/最佳实践特别感兴趣/etc
,但这个问题适用于任何部分任何文件系统在 Linux/Unix/BSD 安装中创建。
一般而言,我们倾向于保留所有默认的、其他可读的(和/或可执行的,在极少数情况下,可写的)权限,就像每个操作系统的默认设置中通常所见的那样。我们只是在寻找最佳实践,一般的原因(它们通常是基于隐私和安全的原因,但现在总是如此)我们为什么要专门禁用任何世界权限。
编辑 2019-10-23
我们正在对自己的系统进行进一步调查。我们在/etc
各种主机系统(均为 Ubuntu)上的系统文件目录(即)中运行以下命令的变体以进行进一步评估。(欢迎对此方法提出建议和指导。)
find . -name .git -prune -o ! -type l \( ! -perm /o=r -a ! -perm /o=w -a ! -perm /o=x \) -exec ls -ld {} \+
答案1
您作为管理员正在实施定义可以访问文件的用户的策略。
一个希望显而易见的例子:用户凭证必须受到保护,因为如果不保护,身份验证就会被破坏,系统就会受到威胁。因此,/etc/shadow 必须不可读,否则攻击者可以获取散列密码并破解它们。
对于限制较少的文件,禁用一些其他人的权限不同于删除全部其中。
通常,不拥有该文件的随机人员不应能够编辑该文件。意外(使用编辑器查看并使用零散字符保存)或故意(向他们不应该拥有的应用程序授予管理员权限)都可能导致不必要的更改。这就是为什么您会在许多系统上看到 umask 0002(又名 ow)的原因。
删除读取也是您可以做出的选择。但是,对实际上不包含特权信息的文件执行此操作,您会收到“限制性 umask”的投诉。如果他们无法读取配置文件,要求某人登录您的 Web 服务器并修复问题会慢得多。如果所有登录用户都支持 Web 服务器,为什么拒绝他们查看配置?