2014-10-09 14 views
2

我认为我误解了OpenShift PHP应用程序中有关文件权限的基本知识。他们如何实际工作?文件权限在OpenShift上如何工作?

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

回答

3

我觉得你已经习惯了一个系统,其中一个用户拥有正在提供的文件,并且web服务器作为另一个用户运行,但是由于文件所有者(你的用户帐号就是那个很长的散列)也是所有者在OpenShift上运行Web服务器的过程中,它使用的是权限的“6”部分,所以您添加的其他两位数字没有什么不同。如果有一个脚本不需要Web访问,但希望PHP能够执行,那么您应该将它放在包含php文件的Web目录之外。最简单的方法是在您的仓库中创建一个“php”文件夹,并将您的文件放在需要可通过网页访问的文件中。这将改变你的documentRoot到那个php目录,并且你可以把你的脚本放在高于它的一个级别,以便用户不能用web请求执行它。

+0

完美。这是一个非常明确的解释和解决方案。谢谢。 – Cascade 2014-10-10 15:57:04