【发布时间】:2013-02-05 12:25:46
【问题描述】:
我正在设置共享主机。我的用户可以通过 SFTP 访问服务器来上传他们的内容。我正在使用单独的 PHP 进程作为各自的用户运行(每个站点一个)。我希望用户默认看不到其他用户的内容(除了通过网络服务器作为任何其他非特权客户端),但网络服务器(作为 www-data 用户/组运行)应该能够读取所有内容。现在,我将 www 中文件的所有权授予特定用户,将组所有权授予 www-data,并使用 set GID 位将组所有权传播到新文件/目录(用户不在 www-data 组中)。
它工作得很好,但现在我遇到了一个问题。一些网站正在使用 wordpress,当他们上传文件时,设置的 GID 位会丢失,这意味着 Web 服务器无法访问它。是否有某种方法可以将 PHP 或 wordpress(更有可能)配置为 chmod 文件和目录到正确的权限?
注意:我在 PHP 中没有使用安全模式,所以应该可以添加设置的 GID 位。
更新:我尝试在 wordpress 配置中调整 FS_CHMOD_DIR 和 FS_CHMOD_FILE 值。我认为这将允许我将上传的文件更改为我想要的任何内容。但是,它并不影响新上传文件的权限。从codex 中的信息来看,我猜这些设置仅适用于核心更新功能。
谢谢!
【问题讨论】:
-
您可以使用 .htaccess 和 .htpasswd 来保护每个用户的目录或为每个站点创建虚拟目录。
-
问题是我想让用户通过 SFTP 访问,所以他们可以访问 HTTP 服务器之外的文件。 htaccess 和 htpasswd 在这种情况下无济于事。
-
为什么要谈论 php 和 www-data? SFTP 是一种文件传输协议。您可以为用户或 sftp 组用户创建目录并设置文件系统权限。
-
SFTP 用于将文件传输到服务器。然后 HTTP 服务器必须显示它们,这就是 PHP 的用武之地。我正在使用以这些用户身份运行的 PHP-FPM 实例,而 Web 服务器必须提供静态内容。这是否使它更清楚一点?
-
你可以设置访问用户对SFTP目录的权限,对吧?你说,php可以访问任何目录下的文件,怎么限制呢?每个人都使用虚拟目录来解决这个问题。一个用户,服务器中的一个文档根目录。但是您可以将服务器空间目录创建到用户主目录中,并为此创建链接到服务器以访问 Web 服务器以访问用户数据。
标签: php wordpress permissions chmod