【发布时间】:2011-01-01 21:49:45
【问题描述】:
我有一个需要连接到数据库的 php 脚本。数据库的凭据存储在另一个 php 脚本中。
如果我将凭据文件的权限设置为 661,以便 Public 具有执行权限但没有读取权限,这是否允许主脚本访问凭据并连接到数据库,同时防止有人在服务器上拥有用户帐户从查看凭证文件的内容?
我想我对读取和执行之间的区别感到困惑。 php 脚本(以 www 或类似的方式运行)是否需要读取权限才能包含另一个 php 脚本并使用其中的任何内容?还是只需要执行?读取权限是否隐式赋予执行权限?
子问题:如果我将所有脚本都设置为只有执行权限而不是读取,我应该预料到有什么陷阱吗?这是假设我将保留任何需要明确读取权限的文件(数据文件)设置为读取。
【问题讨论】:
-
我最近阅读了有关 setuid 和 setgid 位的信息。是否可以在 php 解释器上使用 setuid 并为 php 解释器和 php 文件提供自己的 uid,并设置脚本属性仅授予用户读取权限?那么读取 php 文件的唯一方法就是以 php 用户身份登录,或者由任何人通过解释器登录。
-
我太慢了,无法编辑我之前的评论:setuid 很危险。如果您将 php 保留为 root 用户,一个漏洞将是在您自己的脚本之一上运行 php,并且它将对您的系统具有 root 访问权限,(据我了解。)
标签: php unix permissions include