gpilotino Asked: 2009-06-18 02:08:30 +0800 CST2009-06-18 02:08:30 +0800 CST 2009-06-18 02:08:30 +0800 CST 共享网络托管环境中的文件系统权限 772 您如何在共享虚拟主机环境中设置文件和文件夹权限?你使用 apache + suexec 吗?如何防止“www”组的成员读取系统中属于其他用户的文件?(通过 ssh 或 php) web-hosting 3 个回答 Voted Best Answer Dan Carley 2009-06-18T03:17:20+08:002009-06-18T03:17:20+08:00 解决方案的一半是在登录以传输文件时将监狱用户 chroot 到他们各自的 DocumentRoots 中。 这可以通过使用ChrootDirectory指令通过 SSH (SFTP/SCP) 轻松实现。 编辑: 由于上述事实上的做法被奇怪地否决了,我不妨也提供另一半。 通常,防止 Apache 脚本模块访问 FS 上不应该访问的文件的唯一方法是通过 suEXEC 作为 CGI 运行它们。在我看来,这非常可怕。然后,您需要单独确保每个用户文件仅限于他们自己的 UID/GID,即。umask 027. 或者,有一些第三方模块会在一个盒子里为你做这件事,比如suPHP。 Jeremy Bouse 2009-06-18T02:46:52+08:002009-06-18T02:46:52+08:00 最常见的做法是共享 Web 托管环境中的每个用户都有自己的 UID(用户名)和 GID(组),与运行 Apache Web 服务器的用户分开。您可以使用 suexec 使 CGI 以与用户相同的权限运行,而不是作为 Web 服务器用户/组。PHP 将通过以用户身份运行并且不允许代码访问它无权访问的内容来为您执行此操作。 问题在于使成员无法读取文件。因为权限必须足够开放,以便 Apace 服务器可以读取它们以便能够为它们提供服务。我建议如果每个用户都有自己的 UID/GID,那么文件使用 0664,目录使用 0775。这仅授予“其他人”读取权限。 LukeR 2009-06-18T03:12:47+08:002009-06-18T03:12:47+08:00 FreeBSD 监狱是一种选择。
解决方案的一半是在登录以传输文件时将监狱用户 chroot 到他们各自的 DocumentRoots 中。
这可以通过使用ChrootDirectory指令通过 SSH (SFTP/SCP) 轻松实现。
编辑:
由于上述事实上的做法被奇怪地否决了,我不妨也提供另一半。
通常,防止 Apache 脚本模块访问 FS 上不应该访问的文件的唯一方法是通过 suEXEC 作为 CGI 运行它们。在我看来,这非常可怕。然后,您需要单独确保每个用户文件仅限于他们自己的 UID/GID,即。
umask 027
. 或者,有一些第三方模块会在一个盒子里为你做这件事,比如suPHP。最常见的做法是共享 Web 托管环境中的每个用户都有自己的 UID(用户名)和 GID(组),与运行 Apache Web 服务器的用户分开。您可以使用 suexec 使 CGI 以与用户相同的权限运行,而不是作为 Web 服务器用户/组。PHP 将通过以用户身份运行并且不允许代码访问它无权访问的内容来为您执行此操作。
问题在于使成员无法读取文件。因为权限必须足够开放,以便 Apace 服务器可以读取它们以便能够为它们提供服务。我建议如果每个用户都有自己的 UID/GID,那么文件使用 0664,目录使用 0775。这仅授予“其他人”读取权限。
FreeBSD 监狱是一种选择。