मैं एक स्क्रिप्ट लिख रहा हूं (वास्तव में स्क्रिप्ट और मेकफाइल का एक संयोजन) जो बाहरी निर्भरता स्थापित करता है: कुछ apt-getकमांड, कुछ gitक्लोनिंग, निर्माण, स्थापित करना, उपयोगकर्ताओं को समूहों में जोड़ना, ...
इन लिपियों में कुछ प्रचालनों के लिए सुपरयुसर अनुमतियों की आवश्यकता होती है, कुछ नहीं।
अब तक मैंने सुडो के साथ पूरी प्रक्रिया को चलाया है, लेकिन इसमें कुछ कमियां हैं:
gitरेपोस मैं क्लोनrootजिसका मतलब है कि मैं उनके बिना बाद में संशोधित नहीं कर सकते मालिक के रूप में,sudoयाchown- स्क्रिप्ट जो उपयोगकर्ताओं को समूहों में जोड़ते हैं, वे यह नहीं जानते कि
whoamiरिटर्न के बाद कौन सा उपयोगकर्ता जोड़ना हैroot
सुपरसुअर के रूप में चलने का सबसे अच्छा तरीका केवल उन कमांड्स हैं जिनकी आवश्यकता है? आदर्श रूप से इस प्रक्रिया में अभी भी मुझे अपना sudoपासवर्ड दर्ज करने की आवश्यकता होगी , लेकिन केवल एक बार इंस्टॉल प्रक्रिया की शुरुआत में। फिर इसे बहुत अंत में भूल जाएगा, लेकिन इसे तब तक हर समय रखें (इसमें कई घंटे लग सकते हैं)।
मैंने जो समाधान ऑनलाइन पाया है उनमें शामिल हैं:
sudo -vस्क्रिप्ट की शुरुआत में, लेकिन अगर मैं इस बार सही ढंग से समझूं। मेरी स्क्रिप्ट कुछ घंटों के लिए चल सकती है- स्क्रिप्ट के साथ चल रहा है
sudo, लेकिन आदेशों के साथ सुपरयुजर की आवश्यकता नहीं हैsudo -u $(logname) <command>। यह वही है जो मैं अभी करता हूं, लेकिन ऐसा महसूस होता है कि इसे दूसरे तरीके से होना चाहिए।
आदर्श रूप में, मुझे अपनी स्क्रिप्ट पसंद आएगी:
- सुपरसुअर क्रेडेंशियल्स के लिए पूछें
- उपयोगकर्ता में लॉग के रूप में सामान्य कमांड चलाएं
- चरण 1 में दर्ज क्रेडेंशियल्स के साथ सुडो कमांड चलाएं
sudo -kसुपरयुसर सत्र को बंद करने के लिए
su $SUDO_USER -c commandकमांड के लिए उपयोग सामान्य उपयोगकर्ता के रूप में चलाते हैं।
SUDO_USERपर्यावरण चर की जांच कर सकती है । यदि मौजूद है, तो इसमें sudo का उपयोग करने वाला उपयोगकर्ता का उपयोगकर्ता नाम होगा। तो आप (रूट के रूप में) $ SUDO_USER को चुन सकते हैं: $ SUDO_GID $ your_files। इसी तरह, आप इन चरों की जांच कर सकते हैं ताकि आपके एड्यूसर कमांड को पता चल सके कि किस यूज़र को जोड़ना है।