PHP脚本/目录有什么权限?

chr*_*ard 22 php sql apache permissions

我正在努力帮助一位朋友将网站从一个网站搬到另一个网站.旧的地方已经关闭,我只有一个平坦的tar文件.

该网站包含HTML文档,可以下载一个小的Java应用程序(将在手机上加载)以将数据发送到网站.

移动Java应用程序发送了一个字符串URL=<HOST>/php/register.php.这个php脚本包含另一个php脚本(../inc/db_login.php),它使用连接到SQL DB $link=mysql_connect().另一个文件,register.php用于将新发送的数据放入DB中的SQL插入.

我的问题是基本的,我应该把这两个PHP文件放在新网站上以及目录和文件应该具有哪些权限?

旧的Web服务器显然有一个/php/inc目录.这些都不存在于新的Web服务器上.我应该创建它们吗?他们应该获得什么许可?我想在单独的PHP文件中使用密码的原因是安全性.该/php/inc目录可能有不同的权限.

新服务器有目录:

  • /httpdos
  • /httpsdos
  • /cgi-bin
  • /conf (以及其他一些可能不相关的)

我的问题

  1. file-extension(.php)是否对服务器有意义:因为PHP脚本被"包含"在HTML代码中(<?...?>服务器之间需要查看文件后缀还是不相关?)(我知道服务器会对<?...?>, 当然)

  2. 应该将公共文件(register.php在我的情况下)放在httpdocs/目录中还是服务器(我认为是apache)对某些内容做出反应并将其提取到另一个目录中?

  3. PHP脚本是否应具有权限R-X(读取和执行),--X(执行)或R--(读取)?从操作系统的角度来看,我猜apache只是读取这些文件,这意味着它们应该是R--,但这意味着如果PHP服务被"停止",客户端将在其浏览器中获取所有PHP代码(?).我更喜欢它,--X但因为这既不是二元也不是#!,我想它一定是--R

  4. 如果公共PHP脚本可以放在另一个目录(例如,/php而不是/httpdocs)应该/php(和脚本)有什么权限?我想服务器必须知道这个/php目录(或者是否有通常的默认值?)

  5. 包含的PHP脚本(../inc/db_login.php包含SQL密码)不应该在/httpdocs我的猜测之下.这意味着我register.php包含的文件不在/httpdocs子树下.这有用吗?服务器需要知道吗?

据我所知,您可能需要了解服务器配置.只需假设答案中的默认值(如果是,您可以知道它的更改位置).

Ign*_*ams 51

目录必须具有可执行的执行权限.通常这是0755.运行的PHP脚本mod_php不会执行,而是读取; 0644就足够了.必须写入的目录需要由Web服务器运行的用户拥有.可能还有其他关于权限的问题,例如SELinux,但上述内容将帮助您了解基础知识.

其他用户或外部客户端不得访问的文档应由0600Web服务器用户拥有,并且位于DocumentRoot外部.请注意,在安全模式下运行mod_php将阻止脚本包含DocumentRoot之外的任何内容; 一个可悲的缺陷.


kin*_*roi 13

将php文件设置为640

为了最大限度地提高安全性,您应该设置最小权限,即640.

  • 店主6将是一个上传的文件.
  • 4组将是服务该文件的组.使apache成为组成员.
  • 无人0意味着没有其他用户可以读取该文件.这很重要,因为php脚本有时会有密码和其他敏感数据.

绝不允许每个人阅读php脚本.

有用的命令:

chmod 640 file.php
chown user:group file.php
usermod -a -G group apache
Run Code Online (Sandbox Code Playgroud)

这些命令正在做什么:

  1. 更改file.php的所有权,以便用户可以读写,分组读取.
  2. 将file.php的所有权更改为所选的用户名和组名.
  3. 将apache添加到组中,以便apache可以为该文件提供服务.否则640将无法正常工作.