2013-03-08 153 views
0

我的默認cpanel設置以「nobody」用戶身份運行apache。所以當我通過輸出文件的瀏覽器運行php腳本時,該文件的所有權nobody:nobody。當我從用戶「fred」登錄的cron作業運行腳本時,輸出文件由fred擁有:fred 我需要瀏覽器和cron來覆蓋同一個文件。我遇到的問題是,如果一個「用戶」創建文件,另一個不能覆蓋它。 請你讓我知道基本問題在哪裏和一個可能的解決方案。權限的文件是0775.Apache以用戶nobody身份運行php腳本,cron以用戶身份運行php腳本

  • 我是否需要設置組 - 將用戶添加到同一組作爲nobody?如果是這樣如何?
  • 如何讓cron作業以nobody用戶身份運行?

非常感謝, 勞埃德

+0

http://superuser.com/questions/170866/how-to-run-a-cron-job-as-a-specific-user – AmazingDreams 2013-03-08 07:57:00

回答

0

嘗試你的代碼更改文件的許可爲後。 但是,這會產生一個安全問題,因爲任何人都可以編輯你的文件。

我中有你需要實現一個邏輯:

  1. 創建一個shell腳本,臨時文件的內容複製到您的實際文件
  2. 從PHP你只需要更新temp文件和Shell可以讀取它作爲臨時文件將具有讀取權限的所有人。
  3. 使用ssh2_exec命令用您的Linux用戶名和密碼執行shell腳本。

對於ssh2_exec手冊請點擊此鏈接:http://php.net/manual/en/function.ssh2-exec.php

希望這能解決你的問題。

+0

謝謝,但沒有創建安全問題,因爲我會創建每個人都有寫入權限的文件? – hfuhruhurr 2013-03-08 09:00:23

+0

是...請再次閱讀答案。我修改了它。 – 2013-03-08 09:40:43

+0

嗨Nitesh,我不認爲我想把我的服務器的根密碼放在一個shell腳本中 - 這對我並不好。我仍在尋找答案 - 有沒有辦法將cron作爲「nobody」來運行? – hfuhruhurr 2013-03-11 09:41:21

0

好吧,我的解決方案是爲用戶「nobody」創建一個crontab。 我有一個標準的cPanel安裝,因此去/ var/spool/cron創建了一個沒有人的條目。運行crontab -e編輯並安裝。 現在,php運行在cron作業中的任何人都完全像通過瀏覽器一樣運行。所有寫入的文件都屬於nobody,沒有人擁有rw權限。

相關問題