【问题标题】:How do file permissions work on OpenShift?文件权限如何在 OpenShift 上工作?
【发布时间】:2014-10-09 10:46:00
【问题描述】:

我想我对 OpenShift PHP 应用程序中的文件权限有一些基本的误解。它们实际上是如何工作的?

我在 OSX 上开发并使用 SourceTree 推送更改。当我通过 SFTP 程序 (Cyber​​duck) 登录应用程序时,index.php 文件显示其权限设置为 600,但访问者可以在浏览器中正常查看。

这让我很惊讶,因为我认为该文件需要 644 的权限才能被浏览(就像 Apache 网络服务器一样)。

在 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。我该如何解决这个问题?

【问题讨论】:

    标签: php cgi openshift file-permissions


    【解决方案1】:

    我认为您已经习惯了一个用户拥有所提供文件的系统,而网络服务器作为另一个用户运行,但是由于文件所有者(您的用户帐户是那个大的长哈希)也是在 OpenShift 上运行 Web 服务器的进程,然后它使用权限的“6”部分,因此您添加的其他两位数字没有任何区别是有道理的。如果有一个脚本您不希望 Web 可访问,但您希望 PHP 能够执行,那么您应该将它放在包含您的 php 文件的 Web 目录之外。最简单的方法是在您的存储库中创建一个“php”文件夹,并将您的文件放入其中,这些文件需要可通过网络访问。这会将您的 documentRoot 更改为该 php 目录,并且您可以将脚本放在上一层,这样用户就无法通过 Web 请求执行它。

    【讨论】:

    • 完美。这是一个非常清楚的解释和解决方案。谢谢。
    猜你喜欢
    • 2021-06-09
    • 2022-01-03
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    相关资源
    最近更新 更多