我认为我误解了有关 OpenShift PHP 应用程序中文件权限的一些基本知识。它们实际上是如何工作的?
我在 OSX 上进行开发并使用 SourceTree 推送更改。当我通过 SFTP 程序 (Cyberduck) 登录应用程序时,index.php 文件显示其权限设置为 600,但访问者可以在浏览器中正常查看它。
这让我感到惊讶,因为我认为该文件需要 644 的权限才能浏览(就像 Apache Web 服务器)。
在 OpenShift 上,文件权限 600、640 和 644 似乎都是等效的。这是正确的还是我做错了什么?
相关: 我的 OpenShift 应用程序有一个 cgi-bin 文件夹,其中包含一个只能从 PHP 文件执行(调用)的 cgi 程序。换句话说,任何 PHP 脚本都应该能够调用此 cgi 程序,但尝试直接浏览 cgi-bin 文件夹的访问者则不能。
我将cgi-bin文件夹和cgi程序文件权限都设置为700(因此只有“所有者”具有读/写/执行设置,并且没有为“组”和“其他人”授予权限)。但是访问者仍然可以直接浏览到程序 URL 并执行它(例如 www.example.com/cgi-bin/program.cgi) - 就好像权限是 777 一样。我该如何解决这个问题?
最佳答案
我认为您已经习惯了一个系统,其中一个用户拥有所提供的文件,而网络服务器作为另一个用户运行,但由于文件所有者(您的用户帐户是那个大长哈希)也是所有者在 OpenShift 上运行 Web 服务器的进程,则它使用权限的“6”部分,因此您添加的其他两位数字不会产生任何影响,这是有道理的。如果您不希望通过 Web 访问某个脚本,但希望 PHP 能够执行该脚本,那么您应该将其放置在包含 php 文件的 Web 目录之外。最简单的方法是在您的存储库中创建一个“php”文件夹,并将需要可通过网络访问的文件放入其中。这会将您的 documentRoot 更改为该 php 目录,并且您可以将脚本放在该目录之上,这样用户就无法通过 Web 请求执行它。
关于php - OpenShift 上的文件权限如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26276453/