【问题标题】:Linux permission in directories目录中的 Linux 权限
【发布时间】:2014-04-20 09:56:04
【问题描述】:

我在我的服务器中安装了 Apache,一切看起来都很好。问题是每次我创建一个文件夹/文件时它没有 777 权限,我需要对我创建的每个文件夹/文件使用 chmod 来分配 777 权限。如何创建将默认用于新文件/文件夹的权限规则?

【问题讨论】:

  • 为什么要一切777权限?这在安全方面有点冒险......

标签: linux apache webserver centos


【解决方案1】:

虽然我同意 777 不是一个好主意,但答案是 umask:

umask 000

我至少推荐以下内容,这样世界上不是每个人(好吧,可以访问那台机器)都可以在那里写:

umask 002

哦,这些不会被目录继承。改为使用 ACL 来获取继承。 ACL 工具因操作系统而异。试试“setfacl”或“c​​hacl”。

【讨论】:

  • 请注意,修改 umask 只会掩盖程序创建文件的任何模式。如果文件是使用 RW 权限创建的 (0666),则清除 umask 不会设置丢失的位。它只能丢弃已设置的位。
  • 非常正确。另一方面,大多数程序在创建文件时使用标准的 0666 权限集,为目录和可执行文件使用 0777 权限集,除非有非常具体的原因(例如安全问题)。
【解决方案2】:

简短的回答是你不能,而且你不应该即使你可以。在文件系统上使用0777 作为模式的任何文件都是一个非常糟糕的主意。

稍长一点的答案是,Apache 进程控制它创建新文件的模式,将其作为open(2) 的第三个参数或使用fopen(3)。在后一种情况下,模式默认为0666。无论传入何种模式,都会被进程的 umask 值进一步修改。如果一个进程有一个正常的 umask(例如022),那么使用fopen 打开文件的结果将是一个模式设置为0666 & ~022 = 0644 的文件。我猜如果进程使用open 来创建带有0777 的文件并且进程umask 设置为0,那么它创建的文件将以0777 作为结果模式。

【讨论】:

    猜你喜欢
    • 2021-09-13
    • 1970-01-01
    • 2017-05-26
    • 2018-10-21
    • 2013-07-18
    • 1970-01-01
    • 2015-05-28
    • 2012-11-01
    • 2017-11-03
    相关资源
    最近更新 更多