2010-10-29 176 views

回答

15

你可以在你的crontab中設置一個環境變量。像IS_CRON=1這樣的行可以放在你的crontab的開頭,然後在你的php程序中檢查get_env("IS_CRON") == 1

當然,你也應該使用文件的權限,他們不是那麼容易繞過。如果這是作爲root的cron的一部分運行,chown root:root yourscript.phpchown 700 yourscript.php


由於ircmaxell說,這將會是更好的作爲根用戶以外的用戶身份運行假設你並不需要root權限的你在做什麼。我只是猜測你的設置。

+0

這看起來像一個完美的解決方案......我有點新的cron作業......我將如何設置IS_CRON = 1份? – Starlin 2010-10-29 17:40:15

+0

@Starlin,只需將該行放在crontab文件的開頭 – 2010-10-29 17:42:08

+0

用戶也可以設置環境變量。 – geoffspear 2010-10-29 17:44:52

2

我建議你的crontab中設置環境變量,然後你的PHP腳本

+0

什麼是負面投票? – robjmills 2010-10-29 17:47:30

+0

不是我的,但我會說「爲了安全而默默無聞」。雖然你的建議可以防止*意外執行,但是窺探一下腳本會告訴任何人需要設置哪個環境變量(類似於「請不要手動運行」)。「爲cronjobs設置一個單獨的用戶並僅允許該用戶訪問和執行腳本」的答案解決了問題的根源(類似於只能由特定用戶解鎖的鎖)。 – Piskvor 2010-10-30 08:24:35

5

內檢查這可能有多種方式來做到這一點。關於我的頭頂,我會說將它放在一個由root擁有的目錄中,並且只能由root讀取,可能會接近達到您要查找的效果。

是否有任何流程需要特別限制?如果是這樣,使用權限,使其不能讀取任何這些進程。

1

創建cron作業用戶,並設置腳本的權限,所以它只能作爲該用戶運行。當然,您需要將該腳本放在該用戶的crontab中,您可以通過以該用戶身份登錄並運行crontab來完成該腳本。就是不給該用戶的密碼,只是其他任何用戶...

起初我還想到設置環境變量會阻止運行從網絡這個腳本的......卻唯獨沒有把腳本Web服務器尋找網站頁面的空間也會這樣做。

,並沒有什麼從第一設置環境變量,然後運行該腳本停止隨機用戶。

8

如何讓你的PHP腳本檢查是否$_SERVER['REMOTE_ADDR']是空的,如果不是,那麼有沒有進一步做任何腳本退出。