Unix权限,读取与执行(PHP上下文)

我有一个PHP脚本需要连接到数据库。 数据库的凭证存储在另一个php脚本中。

如果我将凭证文件的权限设置为661,以便Public拥有执行权限但不具有读取权限,是否允许主脚本访问凭据并连接到数据库,同时防止服务器上的用户帐户的某人查看凭证文件的内容?

我想我对读和执行之间的区别感到困惑。 一个PHP脚本(以www或类似的方式运行)需要读权限才能包含另一个PHP脚本,并使用任何内容? 还是只需要执行? 读取权限隐式赋予执行权限吗?

子问题:如果我将所有的脚本都设置为只有执行权限而没有读取,那么我是否应该有任何缺陷? 这是假设我将离开任何文件我需要明确的读取权限(数据文件)设置为读取。

就文件而言,执行权限与您无关 – Web服务器的用户帐户正在运行,需要访问和读取相关文件的权限。 为了遍历目录,用户还需要在该目录上执行许可。

如果你试图让你的脚本可以被Web服务器读取(假设你是以“www”属于“www”组的帐户运行的),而不是系统上的其他用户,那么我该怎么做假设您的帐户是“myuser”):

# Change owner to "myuser" and group to "www" for file(s) in question chown myuser:www config.php # 640: myuser has rw-, www has r--, world has --- chmod 640 config.php 

如果你想阻止世界读取“秘密”目录中的任何文件,只需禁用执行位:

 # 750: myuser has rwx, www has rx, world has --- chmod 750 secrets 

如果您将所有脚本设置为拥有执行权限但没有读取权限,则无人可以对其执行任何操作(包括Web服务器);-)

脚本被读取,不被执行。 脚本的执行权限告诉加载器或内核读取shebang行并将脚本传递给指定的解释器。