एक विशाल आवेदन की जरूरत है, एक विशिष्ट समय में, एक फ़ाइल को कम संख्या में लिखने के लिए जिसे रूट अनुमतियों की आवश्यकता होती है। यह वास्तव में एक फ़ाइल नहीं है, लेकिन एक हार्डवेयर इंटरफ़ेस है जो लिनक्स में एक फ़ाइल के रूप में उजागर होता है।
पूरे एप्लिकेशन को रूट विशेषाधिकार देने से बचने के लिए, मैंने एक बैश स्क्रिप्ट लिखी जो महत्वपूर्ण कार्य करती है। उदाहरण के लिए, निम्न स्क्रिप्ट आउटपुट के रूप में हार्डवेयर इंटरफ़ेस के पोर्ट 17 को सक्षम करेगा:
echo "17" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio17/direction
हालांकि, जैसा suid
कि मेरे सिस्टम पर बैश स्क्रिप्ट के लिए अक्षम है, मुझे आश्चर्य है कि इसे प्राप्त करने का सबसे अच्छा तरीका क्या है।
स्क्रिप्ट
sudo
को मुख्य एप्लिकेशन से कॉल करें, और स्क्रिप्ट को कॉल करते समय पासवर्ड की आवश्यकता से बचने के लिए, तदनुसार sudoers सूची को संपादित करें। मैं sudo विशेषाधिकार देने के लिए थोड़ा असहज हूँecho
।बस, एक C प्रोग्राम लिखें
fprintf
, और इसे रुट पर सेट करें। स्ट्रिंग्स और फाइलनाम को हार्डकोड करें और सुनिश्चित करें कि केवल रूट ही इसे संपादित कर सकता है। या एक पाठ फ़ाइल से तार पढ़ें, इसी तरह सुनिश्चित करें कि कोई भी फ़ाइल को संपादित नहीं कर सकता है।कुछ अन्य समाधान जो मेरे पास नहीं थे और सुरक्षित या सरल हैं, फिर जो ऊपर प्रस्तुत किए गए हैं?