2013-10-12 93 views
0

我需要从远程计算机调用一个PHP脚本,它将调用远程服务器来更改DNS记录。这可能吗?我在测试环境中一切正常,但PHP无权访问/var/namdd/mydomain.com.db。这是我的一个VPS,我有root访问权限,所以访问不成问题。我只是想让脚本为我做。有任何想法吗?具有root权限的PHP脚本?

+2

几种可能性:1.更改权限,因此您不需要“root”权限; 2。创建一个PHP文件可以与之通信的守护进程,其唯一目的是修改该记录; 3.创建一个修改DNS记录的命令,并配置'sudo'以允许PHP用户在没有密码的情况下运行该命令(并且只有该命令)。 – icktoofay

回答

0

假设其他服务器正在运行BIND,这些文件可能由named命名,而不是root。将是一个更简单的选择。此外,你可以让他们777,然后让PHP简单地编辑它们。

+0

更改权限以便PHP可以编辑它们可能是个好主意,但777几乎不是一个好主意。 – icktoofay

+0

他们拥有我的'命名'。我担心把它们设置为777,认为它可能会让其他事情混乱起来。 Cpanel通常会编辑它们。我会试试看,最坏的情况是我将权限设置恢复正​​常。 –

+0

我知道777永远不是好主意,但它是一个域名。我有一台服务器在家里,这将调用一个PHP脚本,如果我的家庭IP更改PHP脚本将编辑DNS并重新启动命名。我的托管服务器有DNS,因为我想保留邮件(MX记录),以防我的家庭服务器出问题,我不会放弃电子邮件。几乎只是一个开发设置。没有关键。 –

0

三种方式立刻浮现在脑海:

  1. 更改文件的权限。
  2. 创建一个守护进程来完成它。
  3. 创建一个命令,并配置sudo无需密码即可运行它。

更改文件

最简单的情况是改变文件的权限权限。要做到这一点,你可能至少要知道

  1. 用户读取文件,并
  2. 你的PHP脚本运行的用户。

如果用户相同,那么答案当然很简单:将所有者更改为该用户。否则,如果文件不包含敏感信息,则可以将所有者更改为PHP用户,并授予所有用户的读取权限。最后,您可能能够创建一个包含这两个用户的新组,并更改该文件的组。然后,您可以将该文件的用户更改为PHP用户并授予写入权限,将该组更改为您创建的组并授予读取权限,并且不授予其他任何人。


创建一个后台程序来完成它

这是相当复杂的;我不能说我会推荐这个选项。从本质上讲,你有一个后台进程以任何必要的权限运行。这个过程可以完成任何需要完成的任务,并与较低特权的进程进行通信。当PHP脚本需要修改该文件时,它可以将请求发送到守护程序,然后可以代表PHP脚本更改该文件。


命令与sudo

这可能是做到这一点的最佳途径之一。从本质上讲,你需要创建一些命令来执行你需要的文件。那么一旦你知道它运行在root(或者最好是一些权限较低的用户仍然拥有必要的权限)时,你可以配置sudo让PHP用户以没有密码的更多特权用户身份执行它。