क्या डिफ़ॉल्ट के अलावा किसी अन्य चीज़ के लिए रूट के शेल को सेट करना बुरा व्यवहार है?


16

एक बार मेरे एक दोस्त (जो एक अनुभवी यूनिक्स / लिनक्स उपयोगकर्ता हैं) ने मुझे बताया कि श (यानी बाश या ज़ीश) के अलावा किसी और चीज़ के लिए रूट के शेल को सेट करने से समस्याएँ पैदा हो सकती हैं, क्योंकि कुछ स्क्रिप्ट मान सकते हैं कि शेल श है और कुछ अजीब है ।

हालांकि, मुझे लगता है कि उबंटू में डिफ़ॉल्ट रूट शेल बैश करने के लिए सेट है, और जेंटू बैश का भी उपयोग करता है। क्या कोई मिथक का भंडाफोड़ कर सकता है?

जवाबों:


12

हाँ। यदि सिस्टम बूटिंग के दौरान विफल रहता है तो आप रूट शेल में लॉग इन कर सकते हैं। यदि आपके पास अलग / usr है तो कुछ गोले सफलतापूर्वक शुरू करने में विफल हो सकते हैं।

मैं toorडिफ़ॉल्ट शेल के साथ रूट को छोड़ते समय गैर-मानक शेल के साथ खाता (uid 0, gid 0) बनाने की सलाह दूंगा।


यह मेरे साथ तब हुआ जब मैंने FBSD 7.2 से 8.0 पर अपग्रेड किया और मैं पुनर्निर्माण करना भूल गया bash। मैंने ठीक करने के लिए एकल उपयोगकर्ता मोड में बूट किया, लेकिन यह केवल इसलिए काम किया क्योंकि /bin/shअभी भी इसके FBSDकांटे से जुड़ा था bourneऔर नहीं bash
gvkv

बस चीजों को स्पष्ट करने के लिए, अगर मैं कहता हूं zshऔर किसी तरह /usrक्षतिग्रस्त है तो मुझे समस्या होगी? लेकिन मेरे सिस्टम ने और खुद को /bin/shइंगित किया है, क्यों प्रभावित नहीं होगा? /bin/bashbashsh
फुनेहे

1
रूट "गारंटी" के लिए चूक कि सिस्टम बूट हो जाएगा - अपग्रेड गाइड कम से कम रूट में लॉग इन करने में सक्षम होने के बारे में ध्यान रखेगा। हालाँकि यह किसी और चीज के लिए नहीं हो सकता है। समाधान है कि हर रोज इस्तेमाल के लिए नॉन-डिफॉल्ट शेल के साथ टॉर द्वारा रूट अकाउंट को डुप्लिकेट करें और जैसा है वैसे ही रूट रखें।
मकीज पीचोटका

1
zsh/usr/bin/अगर यह गलत है स्थापित किया गया था में नहीं होना चाहिए । सभी गोले में होना चाहिए/bin
xenoterracide

1
@xenoterracide: Gentoo पर zsh है, /binलेकिन कुछ फ़ाइलों को रखता है /usr/share। इसके अलावा, मैंने स्पष्ट रूप से कहा कि समस्या बूट के दौरान लॉगिन के दौरान है (जब कुछ सेवा विफल हो जाती है)।
मैकीज पीचोटका

7

मुद्दा नहीं होना चाहिए।

शेल-स्क्रिप्ट फाइलें स्पष्ट रूप से एनकोड करती हैं कि वे किस शेल से निष्पादित हैं। यह पहली पंक्ति या अन्य कार्यक्रमों या स्क्रिप्ट्स में एन्कोडेड है जो एक विशिष्ट शेल को निष्पादित करता है और शेल स्क्रिप्ट को तर्क के रूप में देता है।

एकमात्र कार्यक्रम जो मैं सोच सकता हूं कि उपयोगकर्ता खाता खोल जानकारी (लॉगिन प्रक्रिया के अलावा) का उपयोग करता है। यदि आपका उपयोगकर्ता मेलस्वर पर शेल / बिन / गलत के रूप में सेट किया गया है, तो वास्तव में मजेदार है ... लेकिन आप आमतौर पर रूट के रूप में घोषित नहीं करते हैं।

एक अन्य उम्मीदवार रूट के क्रॉस्टैब में लाइनें होगी। मुझे नहीं पता कि क्रोनड की नीति किस शेल का उपयोग करना है।


$ SHELL आमतौर पर स्टार्टअप पर क्रोनडोमन द्वारा / bin / sh पर सेट हो जाता है।
इकोक्स

3

बोर्न शेल के लिए लिखी गई लिपियां ज्यादातर समय BASH या ZSH या $ foo के खिलाफ बिना किसी समस्या के चलती हैं।

कई लिनक्स सिस्टम पर कोई मूल श इंस्टॉल नहीं किया जाता है, इसके बजाय अक्सर / बिन / बैश के खिलाफ सिमलिंक किया जाता है।

यदि कुछ स्क्रिप्ट्स केवल "मानती हैं" कि शेल स्पष्ट रूप से श है, तो उन्हें फिर से लिखा जाना चाहिए। आपकी स्क्रिप्ट की जरूरत की व्याख्या करने वाले चुनने के लिए शेबंग तंत्र का उपयोग करता है। यदि इसकी श, लिपि को #!/bin/shपहली पंक्ति के रूप में शामिल किया जाना चाहिए ।

इस संदर्भ में आपकी डिफ़ॉल्ट शेल सेटिंग प्रासंगिक नहीं होनी चाहिए।


2

मुझे नहीं लगता कि रूट के खोल को बदलने से कोई परेशानी होगी। मुझे लगता है कि कुछ यूनियनों (शायद कुछ बीएसडी वेरिएंट्स?) को रूट के लिए डिफ़ॉल्ट शेल के रूप में tcsh याद है।

रूट लॉगिन वैसे भी दुर्लभ हैं। आम तौर पर, आप अपने खाते में लॉग इन करेंगे और फिर su या sudo को रूट करेंगे।

क्या मायने रखता है कि रूट के खोल में कुछ निर्भरताएं जितनी संभव हो उतनी होनी चाहिए ताकि सिस्टम पुनर्संयोजन संदर्भ में प्रयोग करने योग्य हो। उदाहरण के लिए, सांख्यिकीय रूप से जुड़े रूट शेल का होना एक अच्छा विचार है; कुछ वितरण बैश या zsh या सैश के एक सांख्यिकीय रूप से जुड़े संस्करण को जहाज करते हैं (कई मानक उपयोगिताओं के साथ एक शेल निर्मित)। हालांकि यह इतना महत्वपूर्ण नहीं है अगर आपका सिस्टम आसानी से बचाव सीडी या यूएसबी ड्राइव से बूट किया जा सकता है।


निर्भरता कारण से मुझे लगता है कि शेल को छोड़ने के लिए यह समझ में आता है ताकि एक बड़ा सिस्टम संशोधन (एक अपग्रेड की तरह) चीजों को गड़बड़ न करे। मैं मानता हूं कि लाइव सीडी या यूएसबी के साथ इसे ठीक करना आसान है, लेकिन मुझे इसे पहले से ठीक नहीं करना चाहिए।
फुनेहे

1

उपयोगकर्ता का लॉगिन शेल बूट प्रक्रिया को प्रभावित नहीं करता है। इस शेल को आप जो चाहें सेट कर सकते हैं। सभी प्रणालियों में बैश नहीं है और वे ठीक काम करते हैं। इसके अलावा अगर यह /usr/bin/zshगलत था, तो सभी सिस्टम शेल में होना चाहिए /bin। हालाँकि, /bin/shआपको डिफ़ॉल्ट के अलावा किसी अन्य चीज़ की ओर इंगित करने के लिए नहीं बदलना चाहिए (जब तक कि आपको पता नहीं है कि आप क्या कर रहे हैं) क्योंकि कई लिपियों में #!/bin/shआमतौर पर बैश होने के #!/bin/bashसंकेत होते हैं , जब उन्हें होना चाहिए क्योंकि वे बशीश और अन्य व्यवहार का उपयोग करते हैं जो नहीं होगा पर काम करते हैं zshया dash


उफ़ खेद मैं अपने कंप्यूटर पर वास्तव में एक गलती की है, दोनों bashऔर zshमें हैं/bin
phunehehe

0

मेरे पास रूट के लिए डिफ़ॉल्ट शेल के रूप में बैश है । मैंने कुछ समय के लिए zsh का इस्तेमाल किया , लेकिन फिर बैश चला गया । आप किस शेल का उपयोग करते हैं, यह ज्यादा मायने नहीं रखता।

यह केवल एक मुद्दा है, अगर एक से अधिक लोगों की जड़ें हैं। उस मामले में आप एक 'सामान्य भाजक' का चयन कर सकते हैं जो आमतौर पर बैश होता है, क्योंकि यह सबसे व्यापक रूप से उपयोग किया जाने वाला खोल है।


0

सोलारिस / इल्लुमोस के संबंध में सोलारिस रूट शैल मिनी-एफएक्यू का उल्लेख है

कुछ sysadmins अभी भी
Solaris सिस्टम पर रूट शेल को बदलने के खिलाफ सलाह देते हैं। पूछें क्यों और आपको बताया जा सकता है कि रूट को एक
सांख्यिकीय रूप से जुड़े शेल की आवश्यकता है जो कि
/ usr / lib के तहत गतिशील पुस्तकालयों पर निर्भर नहीं है । यह अतीत में सच था, लेकिन
आज जरूरी नहीं है। सोलारिस, जब ठीक से कॉन्फ़िगर किया गया है, यूनिक्स के किसी भी अन्य संस्करण की तरह है और रूट या किसी अन्य खाते के लिए आप जो भी शेल परिभाषित करते हैं, उसका समर्थन कर सकते हैं।

तो, हाँ, यदि आप सोलारिस या इल्मोस का उपयोग कर रहे हैं, तो इसके अलावा अन्य गोले का उपयोग करना ठीक है sh

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.