Ant*_*ony 15 php unix permissions include
我有一个PHP脚本,需要连接到数据库.数据库的凭据存储在另一个PHP脚本中.
如果我将凭证文件的权限设置为661,以便Public具有执行权限但不具有读取权限,这是否允许主脚本访问凭据并连接到数据库,同时防止在服务器上拥有用户帐户的人查看凭证文件的内容?
我想我对阅读和执行之间的区别感到困惑.php脚本(以www或类似的方式运行)是否需要读取权限才能包含另一个php脚本并使用其中的任何内容?还是只需要执行?读取权限是否隐含地赋予执行权限?
子问题:如果我将所有脚本设置为只具有执行权限而不读取,那么我应该期待任何陷阱吗?这假设我将保留任何我需要显式读取权限(数据文件)设置为读取的文件.
pix*_*x0r 10
就文件而言,执行权限与您无关 - 您的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
Run Code Online (Sandbox Code Playgroud)
如果要阻止世界读取"secrets"目录中的任何文件,只需禁用执行位:
# 750: myuser has rwx, www has r-x, world has ---
chmod 750 secrets
Run Code Online (Sandbox Code Playgroud)
如果您将所有脚本设置为具有执行权限但没有读取权限,则没有人可以对它们执行任何有用的操作(包括Web服务器);-)