2013-10-12 94 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用戶以沒有密碼的更多特權用戶身份執行它。