मेरे पास एक बैश स्क्रिप्ट है जो कुछ सॉफ़्टवेयर स्थापित करती है। मैं जितनी जल्दी हो सके विफल होना चाहता हूं अगर यह रूट द्वारा नहीं चलाया जा रहा है। मैं उसे कैसे कर सकता हूँ?बैश: विफल होने पर स्क्रिप्ट को रूट नहीं किया जा रहा है
उत्तर
#!/bin/bash
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 1>&2
exit 1
fi
स्रोत: http://www.cyberciti.biz/tips/shell-root-user-check-script.html
या, इसे कम रखने के लिए यूआईडी env: यदि [[$ UID -ne 0]]; तो – zlack
@zlack $ UID मूल उपयोगकर्ता के यूआईडी को देगा यदि स्क्रिप्ट 'सुडो' के माध्यम से चलाया जाता है जबकि डेविड की स्क्रिप्ट को रूट के रूप में चलाने के रूप में माना जाएगा। आप जो कर रहे हैं उसके आधार पर, डेविड शायद बेहतर है। – pr1001
जैसा कि pr1001 कहते हैं, यूआईडी काम नहीं करेगा अगर उपयोगकर्ता सूडो का उपयोग करके स्क्रिप्ट चला रहा है, लेकिन ईयूआईडी ठीक काम करेगा। – Tom
इस पर चारों ओर से खुदाई करने के बाद, आम सहमति बैश में id -u
उपयोग करने के लिए कोई जरूरत नहीं है कि, के रूप में EUID
(प्रभावी प्रयोक्ता आईडी) अलग-अलग सेट हो जाएगा हो रहा है। UID
के विपरीत, EUID
0
होगा जब उपयोगकर्ता root
है या sudo
का उपयोग कर रहा है। जाहिर है, यह करीब 100 गुना तेजी से id -u
चलाने की तुलना में है:
#!/bin/bash
if ((EUID != 0)); then
echo "You must be root to do this." 1>&2
exit 1
fi
स्रोत: https://askubuntu.com/questions/30148/how-can-i-determine-whether-a-shellscript-runs-as-root-or-not
हालांकि यह बोर्न शेल में काम नहीं करता है। क्या आपके पास कोई सख्ती से POSIX अनुपालन समाधान है? –
- 1. जब कोई विकल्प सेट किया गया है तो विफल होने से बैश स्क्रिप्ट से कैसे बचें?
- 2. बैश स्क्रिप्ट बंद होने पर रन कमांड
- 3. स्क्रिप्ट संसाधन त्रुटि: क्या मुझे हैक किया जा रहा है?
- 4. NSMenuItem सक्षम नहीं किया जा रहा है?
- 5. AppHarbor Web.config को लागू नहीं किया जा रहा है
- 6. एआरसी ऐप पर कॉल नहीं किया जा रहा है
- 7. जावा user.home को% userprofile% पर सेट किया जा रहा है और हल नहीं किया जा रहा है
- 8. रेस्ट्रेसी इंटरसेप्टर को कॉल नहीं किया जा रहा है
- 9. बैश: CTRL-C होने पर इस स्क्रिप्ट को कैसे बाधित किया जाए?
- 10. छुपा इनपुट प्रकार मौजूद होने पर कोई पोस्ट डेटा वापस नहीं किया जा रहा है
- 11. सशर्त संकलन प्रतीकों को परिभाषित नहीं किया जा रहा है
- 12. app_offline का सम्मान नहीं किया जा रहा है?
- 13. माइबेटिस - विरासत गुणों को मैप नहीं किया जा रहा है
- 14. मुझे स्क्रिप्ट नाम को बैश में कैसे निष्पादित किया जा सकता है?
- 15. बाहरी निर्भरताओं को कैसे प्रबंधित किया जा रहा है जिन्हें लगातार संशोधित किया जा रहा है
- 16. बेस कन्स्ट्रक्टर को कॉल नहीं किया जा रहा है
- 17. AsyncTask निष्पादित होने पर टुकड़ों को प्रतिस्थापित किया जा रहा है - getActivity()
- 18. MEDIA_MOUNTED प्रसारण प्राप्त नहीं किया जा रहा
- 19. बैश सेट + x के बिना यह मुद्रित किया जा रहा
- 20. प्रविष्टि विफल होने पर
- 21. क्रोम लोकहोस्ट कुकी सेट नहीं किया जा रहा है
- 22. यह कैसे जांचें कि उपयोगकर्ता साइट के रूट यूआरएल पर जा रहा है या नहीं?
- 23. बैश स्क्रिप्ट को रूट के रूप में भी निष्पादित नहीं कर सकता है?
- 24. टेक्स्टफिल्ल्डडिड एंडडिटिंग क्यों है: कॉल नहीं किया जा रहा है?
- 25. ProGuard साथ निकाला जा रहा है लॉगिंग को दूर नहीं करता तार लॉग किया जा रहा
- 26. एंड्रॉइड विजेट अपडेट नहीं किया जा रहा
- 27. हार्डवेयर त्वरण सक्षम नहीं किया जा रहा
- 28. Periodictask निष्पादित नहीं किया जा रहा
- 29. कोई सबहेल विफल होने पर फ्लैग-आउट से बाहर क्यों नहीं निकलता है?
- 30. बैश स्क्रिप्ट
हालांकि मैं * आम तौर पर * इस मूर्खतापूर्ण व्यवहार पर विचार करेंगे: * इसे चलाने के लिए जब तक अनुमतियों असफल चलो *; सिस्टम सेटअप किया जा सकता है कि ऑपरेशन को वर्तमान उपयोगकर्ता के रूप में सफलतापूर्वक निष्पादित किया जा सकता है और रूट को मजबूर कर इस विकल्प को हटा दिया गया है [मुझे उन स्क्रिप्ट को ठीक करना पड़ा जिन्होंने पहले समान धारणाएं की हैं]। दूसरी तरफ, रूट के रूप में चलाने पर मुझे एक बड़ी वसा चेतावनी को प्रदर्शित करने या प्रदर्शित करने के लिए एक और अधिक मामला है। –
आपको सूडो का उपयोग करने का प्रयास करना चाहिए। लिनक्स के तहत, जब आप कुछ भी इंस्टॉल करते हैं तो आपको सामान्य उपयोगकर्ताओं को सिस्टम – masterLoki
को नुकसान पहुंचाने वाले किसी भी चीज को स्थापित करने से रोकने के लिए रूट होना जरूरी है। वह चाहता है कि उसकी स्क्रिप्ट इस बात को ध्यान में रखे कि कुछ लोग भूल सकते हैं, या सूडो (या विशेषाधिकार वृद्धि के अन्य साधनों से अनजान हो सकते हैं))। कुछ और करने का प्रयास करने से पहले रन टाइम सैनिटी की जांच करना अच्छा अभ्यास है। –