TL; DR: चीजों को रूट के रूप में तभी करें जब आपको करना है। sudo
यह बहुत आसान बनाता है। यदि आप रूट लॉगिन को सक्षम करते हैं, तो आप अभी भी इस नियम का पालन कर सकते हैं, आपको बस ऐसा करने के लिए सावधान रहना होगा। हालांकि रूट लॉगिन को सक्षम करना वास्तव में असुरक्षित नहीं है यदि सही किया गया है, तो आपको रूट लॉगिन को सक्षम करने की आवश्यकता नहीं है क्योंकि आपके पास है sudo
।
यहाँ वास्तव में दो संबंधित प्रश्न हैं।
- किसी के रोजमर्रा के कंप्यूटर उपयोग (वेब ब्राउजिंग, ईमेल, वर्ड प्रोसेसिंग, गेमिंग, आदि) के लिए रूट के रूप में लॉग इन करना बुरा क्यों है?
- क्यों उबंटू पूरी तरह से रूट लॉग को अक्षम करने
sudo
और प्रशासक को रूट के रूप में विशिष्ट कमांड चलाने के लिए सक्षम करने के लिए पोलकिट का उपयोग करने के लिए डिफ़ॉल्ट है ?
हर समय सब कुछ जड़ के रूप में क्यों नहीं चलाया जाता?
अधिकांश अन्य उत्तर इसे कवर करते हैं। यह नीचे आता है:
- यदि आप उन कार्यों के लिए मूल शक्तियों का उपयोग करते हैं जिनकी उन्हें आवश्यकता नहीं है, और आप कुछ ऐसा करना चाहते हैं जो आप करना नहीं चाहते थे, तो आप अपने सिस्टम को उस तरह से बदल सकते हैं या नुकसान पहुंचा सकते हैं जो आप नहीं चाहते हैं।
- यदि आप किसी प्रोग्राम को रूट के रूप में चलाते हैं जब आपको इसकी आवश्यकता नहीं थी, और यह कुछ ऐसा करने के लिए समाप्त होता है जिसका आप इसके लिए मतलब नहीं था - उदाहरण के लिए, सुरक्षा भेद्यता या अन्य बग के कारण - यह बदल सकता है या नुकसान पहुंचा सकता है आपका सिस्टम एक तरह से जिसे आप नहीं चाहते हैं।
यह सच है कि चीजों को जड़ के रूप में किए बिना भी आप नुकसान पहुंचा सकते हैं। उदाहरण के लिए, आप अपने स्वयं के होम डायरेक्टरी में सभी फाइलों को हटा सकते हैं, जिसमें आमतौर पर रूट के बिना आपके सभी दस्तावेज शामिल होते हैं! (उम्मीद है कि आपके पास बैकअप है।)
बेशक, जड़ के रूप में, गलती से उन समान डेटा को नष्ट करने के अतिरिक्त तरीके हैं। उदाहरण के लिए, आप of=
एक dd
कमांड में गलत तर्क निर्दिष्ट कर सकते हैं और अपनी फ़ाइलों पर कच्चा डेटा लिख सकते हैं (जो उन्हें रास्ता बनाता है, ठीक करने के लिए कठिन तरीके से अगर आप केवल उन्हें हटा दिया है)।
यदि आप अपने कंप्यूटर का उपयोग करने वाले एकमात्र व्यक्ति हैं, तो आप जो नुकसान कर सकते हैं, वह केवल रूट के रूप में हो सकता है, जो वास्तव में आपके नियमित उपयोगकर्ता विशेषाधिकारों के साथ होने वाले नुकसान से अधिक नहीं हो सकता है। लेकिन यह अभी भी कोई कारण नहीं है कि आप अपने Ubuntu सिस्टम को गड़बड़ाने के अतिरिक्त तरीकों को शामिल करें।
यदि एक गैर-रूट उपयोगकर्ता खाते के साथ चलने से आपको अपने स्वयं के कंप्यूटर पर नियंत्रण रखने से रोका जाता है, तो यह निश्चित रूप से एक बुरा व्यापार होगा। लेकिन यह नहीं है - कभी भी आप वास्तव में जड़ के रूप में एक क्रिया करने की इच्छा रखते हैं, आप ऐसा कर सकते हैं sudo
और अन्य तरीकों के साथ ।
इसे रूट के रूप में लॉग इन करना संभव क्यों नहीं है?
यह विचार कि जड़ के रूप में लॉग इन करने की क्षमता स्वाभाविक रूप से असुरक्षित है, एक मिथक है। कुछ सिस्टम में डिफ़ॉल्ट रूप से एक रूट खाता सक्षम है; अन्य सिस्टम sudo
डिफ़ॉल्ट रूप से उपयोग करते हैं , और कुछ दोनों के साथ कॉन्फ़िगर किए गए हैं।
- उदाहरण के लिए, OpenBSD , जिसे व्यापक रूप से और यथोचित रूप से दुनिया में सबसे सुरक्षित सामान्य-उद्देश्य वाला ओएस माना जाता है, स्थानीय, पासवर्ड-आधारित लॉगिन के लिए सक्षम रूट खाते वाले जहाज।
- अन्य अच्छी तरह से सम्मानित OSes जो ऐसा करते हैं , उनमें RHEL , CentOS और Fedora शामिल हैं ।
- डेबियन (जिससे उबंटू व्युत्पन्न होता है ) उपयोगकर्ता को तय करता है कि सिस्टम इंस्टॉलेशन के दौरान कौन सा दृष्टिकोण कॉन्फ़िगर किया जाएगा।
यह मूल रूप से गलत नहीं है कि ऐसी प्रणाली हो जहाँ रूट खाता सक्षम हो, बशर्ते कि
- आप अभी भी केवल इसका उपयोग करते हैं जब आपको वास्तव में आवश्यकता होती है, और
- आप इसे उचित रूप से एक्सेस तक सीमित रखते हैं।
अक्सर नौसिखिए पूछते हैं कि उबंटू में रूट खाते को कैसे सक्षम किया जाए। हमें उनसे यह जानकारी नहीं छुपानी चाहिए, लेकिन आमतौर पर जब लोग यह पूछते हैं, क्योंकि वे गलत धारणा के तहत हैं कि उन्हें रूट खाता सक्षम करने की आवश्यकता है। वास्तव में, यह लगभग आवश्यक नहीं है, इसलिए ऐसे प्रश्नों का उत्तर देते समय यह महत्वपूर्ण है कि हम इसे समझाएं। रूट खाते को सक्षम करना भी जटिल हो जाता है और रूट के रूप में कार्रवाई करना आसान होता है जिसे रूट विशेषाधिकारों की आवश्यकता नहीं होती है। लेकिन इसका मतलब यह नहीं है कि रूट खाता अपने आप में असुरक्षित है।
sudo
प्रोत्साहित करता है और उपयोगकर्ताओं को कमांड को रूट के रूप में चलाने में मदद करता है , जब उन्हें जरूरत होती है। कमांड को रूट, टाइप sudo
, स्पेस और फिर कमांड के रूप में चलाने के लिए । यह बहुत सुविधाजनक है, और सभी कौशल स्तरों के कई उपयोगकर्ता इस दृष्टिकोण को पसंद करते हैं।
संक्षेप में, आपको रूट लॉगिन को सक्षम करने की आवश्यकता नहीं है क्योंकि आपके पास है sudo
। लेकिन जब तक आप इसे केवल उन प्रशासनिक कार्यों के लिए उपयोग करते हैं जिनकी आवश्यकता होती है, तो इसे सक्षम करने और रूट के रूप में लॉग इन करने के लिए समान रूप से सुरक्षित है, जब तक कि यह केवल इन तरीकों से हो :
- स्थानीय रूप से, गैर-ग्राफिकल वर्चुअल कंसोल से ।
su
कमांड के साथ , जब दूसरे खाते से लॉग इन किया जाता है।
हालाँकि, यदि आप इन तरीकों से रूट पर लॉग इन करते हैं, तो पर्याप्त सुरक्षा जोखिम उत्पन्न होते हैं:
रेखांकन। जब आप ग्राफ़िकल रूप से लॉग इन करते हैं, तो ग्राफ़िकल इंटरफ़ेस प्रदान करने के लिए पूरी बहुत सारी सामग्री चलती है, और आप किसी भी चीज़ के लिए उस इंटरफ़ेस का उपयोग करने के लिए रूट के रूप में और भी अधिक एप्लिकेशन चलाना समाप्त कर देंगे। यह रूट के रूप में केवल चल रहे कार्यक्रमों के सिद्धांत के खिलाफ जाता है जो वास्तव में रूट विशेषाधिकारों की आवश्यकता होती है। इनमें से कुछ कार्यक्रमों में बग शामिल हो सकते हैं, जिसमें सुरक्षा कीड़े भी शामिल हैं।
इसके अलावा, इससे बचने के लिए एक गैर-सुरक्षा कारण है। रेखीय रूप से रूट के रूप में लॉगिंग अच्छी तरह से समर्थित नहीं है - लॉवबोर्ग उल्लेखों के रूप में , डेस्कटॉप वातावरण के डेवलपर्स और ग्राफिकल एप्लिकेशन अक्सर उन्हें रूट के रूप में परीक्षण नहीं करते हैं। यहां तक कि अगर वे करते हैं, तो एक ग्राफिकल डेस्कटॉप वातावरण में लॉग इन करने पर रूट को उपयोगकर्ताओं द्वारा वास्तविक विश्व अल्फा और बीटा परीक्षण नहीं मिलता है, क्योंकि लगभग कोई भी इसे प्रयास नहीं करता है (ऊपर बताए गए सुरक्षा कारणों से)।
यदि आपको रूट के रूप में एक विशिष्ट ग्राफ़िकल एप्लिकेशन चलाने की आवश्यकता है, तो आप उपयोग कर सकते हैंgksudo
या कर सकते हैंsudo -H
। यदि आप वास्तव में रूट खाते के साथ रेखांकन पर लॉग इन करते हैं तो यह रूट की तुलना में बहुत कम प्रोग्राम चलाता है।
दूर से। root
खाता प्रभाव में कुछ भी कर सकते हैं, और यह व्यावहारिक रूप से हर यूनिक्स की तरह सिस्टम पर एक ही नाम है। ssh
या अन्य दूरस्थ तंत्रों के माध्यम से रूट के रूप में लॉग इन करके , या यहां तक कि रिमोट सेवाओं को कॉन्फ़िगर करने के लिए इसे अनुमति देने के लिए , आप घुसपैठियों के लिए बहुत आसान बनाते हैं, जिसमें स्वचालित स्क्रिप्ट और बॉटनेट पर चलने वाले मैलवेयर शामिल हैं, जानवर बल, शब्दकोश हमलों ( संभवतः) के माध्यम से पहुंच प्राप्त करने के लिए; कुछ सुरक्षा कीड़े)।
यदि आप केवल कुंजी-आधारित और पासवर्ड-आधारित रूट लॉगिन की अनुमति देते हैं, तो जोखिम बहुत अधिक नहीं है ।
उबंटू में डिफ़ॉल्ट रूप से, न तो ग्राफिकल रूट लॉगिन और न ही एसएसएच के माध्यम से दूरस्थ लॉगिन सक्षम हैं, भले ही आप रूट के रूप में लॉगिंग को सक्षम करें । अर्थात्, यदि आप रूट लॉगिन सक्षम करते हैं, तब भी यह केवल उन तरीकों से सक्षम है जो यथोचित रूप से सुरक्षित हैं।
- यदि आप उबंटू पर एक ssh सर्वर चलाते हैं और नहीं बदला है
/etc/sshd/ssh_config
, तो इसमें लाइन होगी PermitRootLogin without-password
। यह पासवर्ड-आधारित रूट लॉगिन को अक्षम करता है, लेकिन कुंजी-आधारित लॉगिन की अनुमति देता है। हालाँकि, कोई भी कुंजी डिफ़ॉल्ट रूप से कॉन्फ़िगर नहीं की गई है, इसलिए जब तक आपने एक सेट नहीं किया है, वह भी काम नहीं करेगी। इसके अलावा, कुंजी-आधारित रिमोट रूट लॉगिन पासवर्ड-आधारित रिमोट रूट लॉगिन की तुलना में बहुत कम खराब है, क्योंकि यह क्रूर बल और शब्दकोश हमलों का खतरा पैदा नहीं करता है।
- भले ही चूक चाहिए आप की रक्षा, मुझे लगता है कि यह अभी भी एक अच्छा विचार है, अपने ssh विन्यास की जाँच करने के आप रूट खाता सक्षम करने जा रहे हैं। और यदि आप ऐसी अन्य सेवाएँ चला रहे हैं जो दूरस्थ लॉगिन प्रदान करती हैं, जैसे कि ftp, तो आपको उन्हें भी जांचना चाहिए।
निष्कर्ष के तौर पर:
- जब आपको ज़रूरत हो तभी सामान की तरह करें;
sudo
आपको ऐसा करने में मदद करता है, जबकि आप अभी भी जड़ की पूरी शक्ति दे रहे हैं।
- यदि आप समझते हैं कि रूट कैसे काम करता है और इसके अत्यधिक उपयोग के खतरे हैं, तो रूट खाते को सक्षम करना सुरक्षा दृष्टिकोण से वास्तव में समस्याग्रस्त नहीं है।
- लेकिन अगर आप समझते हैं कि, आप यह भी जानते हैं कि आपको रूट खाते को सक्षम करने की आवश्यकता नहीं है ।
रूट के बारे में अधिक जानकारी के लिए और sudo
इसके कुछ अतिरिक्त लाभों सहित, sudo
जिन्हें मैंने यहां शामिल नहीं किया है, मैं उबंटू सहायता विकी में रूटसूड की अत्यधिक अनुशंसा करता हूं ।