2010-10-29 14 views
23

मैं कैसे सुनिश्चित कर सकता हूं कि कोई उपयोगकर्ता PHP स्क्रिप्ट नहीं चला सकता है और यह केवल क्रॉन नौकरी के हिस्से के रूप में चलाया जाता है?सुनिश्चित करें कि एक PHP स्क्रिप्ट केवल क्रॉन नौकरी के रूप में चलती है?

उत्तर

15

आप अपने क्रॉन्टाब में एक पर्यावरण चर सेट कर सकते हैं। IS_CRON=1 जैसी लाइन को आपके क्रोंटैब की शुरुआत में रखा जा सकता है, फिर get_env("IS_CRON") == 1 के लिए अपने PHP प्रोग्राम में जांचें।

बेशक, आपको फ़ाइल अनुमतियों का भी उपयोग करना चाहिए क्योंकि उन्हें आसानी से बाईपास नहीं किया जाता है। यदि यह रूट के क्रॉन, chown root:root yourscript.php और chown 700 yourscript.php के हिस्से के रूप में चलाया जाता है।


ircmaxell कहते हैं, यह मानते हुए कि आपके आप क्या कर रहे के लिए रूट अनुमतियों की जरूरत नहीं है जड़ के अलावा किसी अन्य उपयोगकर्ता के रूप में चलाने के लिए बेहतर होगा के रूप में। मैं बस आपके सेटअप के बारे में अनुमान लगा रहा था।

+0

यह एक सही समाधान की तरह दिखता है ... मैं क्रॉन नौकरियों के लिए थोड़ा नया हूं ... मैं IS_CRON = 1 भाग कैसे सेट करूं? – Starlin

+0

@ स्टर्लिन, बस अपनी क्रॉन्टाब फ़ाइल की शुरुआत में उस पंक्ति को रखें –

+0

कोई उपयोगकर्ता पर्यावरण चर सेट भी कर सकता है। – geoffspear

2

मैं अपने crontab के भीतर एक वातावरण चर की स्थापना और उसके बाद अपने PHP स्क्रिप्ट

+0

कम से कम वोट क्या था? – robjmills

+0

मेरा नहीं था, लेकिन मैं "अस्पष्टता से सुरक्षा के लिए" कहूंगा। जबकि आपका सुझाव * आकस्मिक * निष्पादन को रोक देगा, स्क्रिप्ट में एक झलक किसी को बताएगी कि पर्यावरण चर को सेट करने की आवश्यकता है (एक संकेत के समान "कृपया मैन्युअल रूप से न चलाएं")।"Cronjobs के लिए एक अलग उपयोगकर्ता सेट अप करें और केवल उस उपयोगकर्ता की पहुंच और स्क्रिप्ट निष्पादन की अनुमति दें" समस्या की जड़ को संबोधित करें (लॉक के समान जो केवल विशिष्ट उपयोगकर्ता द्वारा अनलॉक किया जा सकता है)। – Piskvor

5

के भीतर इस के लिए जाँच संभवतः तरीके यह करने के लिए के एक नंबर रहे हैं सुझाव है। मेरे सिर के ऊपर से, मैं कहूंगा कि इसे रूट के स्वामित्व वाली निर्देशिका में रखकर, और रूट द्वारा केवल पठनीय हो सकता है जो आप जिस प्रभाव को ढूंढ रहे हैं उसे प्राप्त करने के करीब हो सकता है।

क्या ऐसी कोई प्रक्रिया है जिसे आप विशेष रूप से प्रतिबंधित करने के लिए देख रहे हैं? यदि ऐसा है, तो अनुमतियों का उपयोग करके, इसे किसी भी प्रक्रिया में पढ़ने योग्य नहीं बनाते हैं।

1

क्रॉन नौकरियों के लिए उपयोगकर्ता बनाएं, और स्क्रिप्ट की अनुमतियां सेट करें ताकि इसे केवल इस उपयोगकर्ता के रूप में चलाया जा सके। बेशक आपको उस उपयोगकर्ता के crontab में स्क्रिप्ट डालने की आवश्यकता है, जिसे आप उस उपयोगकर्ता के रूप में लॉग इन करके crontab चलाकर कर सकते हैं। बस उस उपयोगकर्ता का पासवर्ड किसी अन्य उपयोगकर्ता को न दें ...

पहले मैं एक पर्यावरण चर स्थापित करने की सोच भी रहा था जो इस स्क्रिप्ट को वेब से चलाने से रोक देगा ... लेकिन बस स्क्रिप्ट को नहीं डालना वह स्थान जहां वेब सर्वर वेबसाइटों के लिए पृष्ठों की तलाश करता है, वही करेगा।

और कुछ भी यादृच्छिक उपयोगकर्ता को पर्यावरण चर सेट करने और फिर स्क्रिप्ट चलाने से रोक रहा है।

8

$_SERVER['REMOTE_ADDR'] खाली होने पर आपकी PHP स्क्रिप्ट जांचने के बारे में कैसे है, और यदि ऐसा नहीं है, तो स्क्रिप्ट को और कुछ किए बिना बाहर निकलें।

संबंधित मुद्दे