【发布时间】:2014-04-20 09:56:04
【问题描述】:
我在我的服务器中安装了 Apache,一切看起来都很好。问题是每次我创建一个文件夹/文件时它没有 777 权限,我需要对我创建的每个文件夹/文件使用 chmod 来分配 777 权限。如何创建将默认用于新文件/文件夹的权限规则?
【问题讨论】:
-
为什么要一切777权限?这在安全方面有点冒险......
标签: linux apache webserver centos
我在我的服务器中安装了 Apache,一切看起来都很好。问题是每次我创建一个文件夹/文件时它没有 777 权限,我需要对我创建的每个文件夹/文件使用 chmod 来分配 777 权限。如何创建将默认用于新文件/文件夹的权限规则?
【问题讨论】:
标签: linux apache webserver centos
虽然我同意 777 不是一个好主意,但答案是 umask:
umask 000
我至少推荐以下内容,这样世界上不是每个人(好吧,可以访问那台机器)都可以在那里写:
umask 002
哦,这些不会被目录继承。改为使用 ACL 来获取继承。 ACL 工具因操作系统而异。试试“setfacl”或“chacl”。
【讨论】:
0666),则清除 umask 不会设置丢失的位。它只能丢弃已设置的位。
简短的回答是你不能,而且你不应该即使你可以。在文件系统上使用0777 作为模式的任何文件都是一个非常糟糕的主意。
稍长一点的答案是,Apache 进程控制它创建新文件的模式,将其作为open(2) 的第三个参数或使用fopen(3)。在后一种情况下,模式默认为0666。无论传入何种模式,都会被进程的 umask 值进一步修改。如果一个进程有一个正常的 umask(例如022),那么使用fopen 打开文件的结果将是一个模式设置为0666 & ~022 = 0644 的文件。我猜如果进程使用open 来创建带有0777 的文件并且进程umask 设置为0,那么它创建的文件将以0777 作为结果模式。
【讨论】: