यह प्रश्न पूरी तरह से सामान्य है और केवल मेरी स्थिति पर लागू नहीं है, लेकिन ... मेरे पास एक छोटा व्यस्त बॉक्स उपकरण है, जहां मैं चाहता हूं कि एक गैर-रूट उपयोगकर्ता किसी विशेष स्क्रिप्ट को रूट प्राइवेटिलिज के साथ निष्पादित करने में सक्षम हो। उदाहरण के लिए, डीएचसीपी को सक्षम करने के लिए इस छोटी सी स्क्रिप्ट जैसा कुछ, जहां केवल वैरिएबल ( $1
) को cmdline पर भेजना है (!!) जिसे होस्ट नाम भेजना है:
#!/bin/bash
udhcpc -b -i eth0 -h $1
इस तरह के udhcpc को चलाने के लिए रूट एक्सेस की आवश्यकता होती है, इसलिए यह करने के /etc/sudoers
लिए इस लाइन को समाहित करने के लिए मेरी योजना है :
joe ALL = NOPASSWD: /path/to/enable_dhcp.sh
जो आसानी से रूट विशेषाधिकार के साथ उस स्क्रिप्ट को चलाने के लिए "जो" को सक्षम करना चाहिए:
sudo /path/to/enable_dhcp.sh
और एक पासवर्ड के लिए नहीं पूछा जा रहा है (जो मैं चाहता हूं, क्योंकि मैं चाहता हूं कि जो इसे स्क्रिप्ट करने में सक्षम हो)।
अब .. मुझे पता है (या कम से कम मुझे लगता है कि मैं) $1
एक स्क्रिप्ट का उपयोग करना जो आसानी से रूट विशेषाधिकारों के साथ चलाया जा सकता है एक संक्षिप्त विचार है क्योंकि आप जो भी चाहते हैं उसे इंजेक्ट कर सकते हैं।
तो ... इससे निपटने का सबसे अच्छा तरीका क्या है? इंजेक्शन के हमलों के लिए व्यापक खुला नहीं होने के दौरान, मैं कैसे करूँ जो मैं रूट विशेषाधिकारों के साथ करना चाहता हूं, उसे एक चर में पारित करने की अनुमति दें (या प्रभावी रूप से ऐसा करना)?