अगर मैंने उबंटू में एक उपयोगकर्ता खाता बनाया है root
, तो क्या यह स्वचालित रूप से रूट अनुमतियाँ होगा? सिस्टम को तोड़ो? मैट्रिक्स में गड़बड़ का कारण? क्या हुआ होगा?
अगर मैंने उबंटू में एक उपयोगकर्ता खाता बनाया है root
, तो क्या यह स्वचालित रूप से रूट अनुमतियाँ होगा? सिस्टम को तोड़ो? मैट्रिक्स में गड़बड़ का कारण? क्या हुआ होगा?
जवाबों:
उपयोगकर्ता नाम अद्वितीय होना चाहिए, इसलिए, जैसा कि ओवेन हाइन्स के उत्तर द्वारा उल्लिखित है , आप इस उपयोगकर्ता को बनाने में सक्षम नहीं होंगे। हालाँकि, यहाँ प्रमुख बात यह है कि सुपरसुअर पॉवर (सभी संभावित अनुमतियां) उपयोगकर्ता नाम से नहीं root
, बल्कि UID द्वारा दी जाती हैं ।
UID 0 वाला उपयोगकर्ता सुपरयुसर है।
इसलिए, यदि यूआईडी 0 वाले उपयोगकर्ता का एक अलग नाम था, और आपने एक उपयोगकर्ता नाम बनाया root
, तो उनके पास कोई विशेष स्थिति नहीं होगी।
मैं आपको रूट टैग विकी के लिए संदर्भित करता हूं !
root
। एक महान विचार नहीं है, लेकिन संभव है। इसलिए, उदाहरण के लिए, एक सुपरयूज़र खाता बना सकते हैं जिसे god
यूआईडी कहा जाता है 0
, और एक सामान्य उपयोगकर्ता जिसे root
यूआईडी 1000
या किसी अन्य नंबर के साथ बुलाया जाता है ।
यह आपको नहीं होने देगा क्योंकि पहले से ही एक root
उपयोगकर्ता होगा।
लेकिन, जैसा कि फ्लोरियन डिस्च ने टिप्पणियों में कहा था:
कुछ उपकरण शिकायत करेंगे लेकिन आप हमेशा एक दूसरे उपयोगकर्ता नाम बनाने के लिए संपादित
/etc/passwd
औरetc/shadow
मैन्युअल कर सकते हैंroot
।
chown root file
?
सबसे पहले कैसे, जैसा कि दूसरों ने कहा है, आप उपयोगकर्ता को यूआईडी 0 के साथ कुछ और में बदलते हैं। फिर आप रूट के नाम से एक सामान्य उपयोगकर्ता बना सकते हैं और एक यूआईडी उच्चतर 1000 फिर। यह "ठीक" काम करेगा। सभी अनुमतियाँ और कोर सिस्टम फ़ंक्शन यूआईडी का उपयोग करते हैं न कि उपयोगकर्ता नाम। वास्तव में यह लिनक्स सिस्टम को सख्त करने का एक अच्छा पहला कदम है। (रूट को अक्षम करने के लिए बेहतर है, लेकिन sudo से पहले हम ऐसा करते थे)।
अब जैसा होगा वैसा होगा।
अधिकांश समय कुछ भी नहीं। सभी सिस्टम कॉल जिन्हें प्राधिकरण या प्रमाणीकरण के साथ करना है, वे यूआईडी (जो मुझे पता है) का उपयोग करते हैं। और यह कुछ समय से ऐसा ही है। आपका सिस्टम हमेशा की तरह चलता रहेगा। सिस्टम टूल नए उपयोगकर्ता नाम को दर्शाएगा, लेकिन सामान्य रूप से काम करना जारी रखेगा। दूसरे शब्दों में सम्मेलन में "जड़" और पत्थर में सेट नहीं।
उस ने कहा, मुझे यकीन है कि कुछ उपकरण और कार्यक्रम खराब लिखे गए हैं। $ USER परिवेश चर की जाँच करने वाले प्रोग्राम गलत तरीके से कार्य कर सकते हैं। आमतौर पर ये स्क्रिप्ट और छोटे प्रोजेक्ट होते हैं, लेकिन आप कुछ समय के लिए उस बुरे कमिटमेंट पर नज़र रखने में बिता सकते हैं, जो 6 साल पहले fdisk में था जो आपको सिरदर्द देता रहता है।
यह कुछ ऐसा है जो मैं हर समय करता था। यह एक आसान कदम था, और "गैर-अनुमानित उपयोगकर्ता नामों" के नियम के अंतर्गत आता है। हालांकि आज वही लक्ष्य हासिल करने के बेहतर तरीके हैं।
जैसा कि दूसरों ने समझाया है, यह यूआईडी = 0 उपयोगकर्ता को "सुपरपावर" देता है, न कि उपयोगकर्ता का नाम "रूट" है। इसलिए यदि आप किसी तरह "रूट" नामक एक अन्य उपयोगकर्ता बनाने में कामयाब रहे (मूल नाम बदलने / हटाने के बाद) - उपयोगकर्ता का सुपर-स्टेटस आपके द्वारा दिए गए यूआईडी पर निर्भर करेगा।
जो एक और दिलचस्प विचार की ओर भी ले जाता है: एक ही यूआईडी वाले कई उपयोगकर्ता होना पूरी तरह से संभव है (जो उन्हें अनिवार्य रूप से फाइलसिस्टम अनुमतियों के बिंदु से एक ही उपयोगकर्ता बनाता है, लेकिन अलग-अलग, कहने, शेल और होम डायरेक्टरी के लिए अनुमति देता है)। वास्तव में, कुछ यूनिक्स जैसे सिस्टम में एक और सुपरयूज़र खाता होता है जिसे टोअर (रूट बैकवर्ड) कहा जाता है जो विभिन्न सेटिंग्स के साथ दो सुपर-उपयोगकर्ता खाते रखने की अनुमति देता है।
हां, सिद्धांत रूप में, एक ही उपयोगकर्ता नाम या एक ही आईडी वाले दो उपयोगकर्ता नहीं होने चाहिए। और स्टैंडर्ड यूटिलिटीज फुलप्रूफ हैं और ये आपके लिए ऐसे यूजर्स नहीं बनाएंगे। लेकिन आप हमेशा मैन्युअल रूप से संपादित कर सकते हैं / etc / passwd।
उदाहरण के लिए, मैंने किया:
$ sudo adduser root2 # created ordinary user
$ sudo vim /etc/passwd # edit last line, change 'root2' to 'root'.
$ sudo -u '#1002' id # 1002 is UID of new user, it's in last line of /etc/passwd
uid=1002(root) gid=1002(root2) группы=1002(root2)
जैसा कि आप देख रहे हैं, हम अब जड़ हैं! हां, यह वास्तविक नहीं है (uid = 0 नहीं), लेकिन यह चार अक्षर हैं। प्रभावशाली और बेकार।
इसके अलावा, आप अन्य संशोधन कर सकते हैं। उपयोगकर्ता नाम के रूप में छोड़ दें, (आपका नाम या रूट 2) लेकिन यूआईडी बदलें।
$ tail -n 1 /etc/passwd
root2:x:0:0:,,,:/home/root2:/bin/bash
(देखें, UID और GID फ़ील्ड शून्य हैं) अब आपके पास सामान्य (गैर-रूट) उपयोगकर्ता हैं, लगभग गैर-संदिग्ध उपयोगकर्ता नाम (या बेहतर प्रभाव के लिए उपयोगकर्ता नाम 'जॉन्डो'), लेकिन वास्तव में, इस उपयोगकर्ता के पास सुपरपावर हैं!
$ fdisk /dev/sda
fdisk: unable to open /dev/sda: Permission denied
$ sudo -u root2 fdisk /dev/sda
Command (m for help):
जैसा कि आप देखते हैं, साधारण उपयोगकर्ता fdisk on / dev / sda का उपयोग नहीं कर सकता है, लेकिन root2 कुछ भी कर सकता है!
सिस्टम को बैकडोर प्रदान करने के लिए हैक करने के बाद कभी-कभी उपयोग की जाने वाली यह सरल चाल। यहां तक कि अगर असली रूट उसकी कुंजी / पासवर्ड को बदल देगा, तब भी हैकर का यूआईडी = 0 के साथ अन्य उपयोगकर्ता के माध्यम से सिस्टम पर पूर्ण नियंत्रण होगा।
असल में, न तो उपयोगकर्ता नाम 'रूट' है, न ही uid = 0 अपने आप में जादुई नहीं है। यह सिर्फ कन्वेंशन का मामला है। और यह हमेशा सच भी नहीं होता है। (यह प्रश्न देखें: क्या रूट खाते में हमेशा UID / GID 0 होता है? ) कर्नेल कोड जादुई होता है। दरअसल, यूजरस्पेस कोड ही - कुछ भी नहीं कर सकता जो रूट कर सकता है। भले ही जड़ के रूप में चलता है! रूट पावर कर्नेल में हैं। उदाहरण के लिए यदि आप "बिल्ली / आदि / छाया" (केवल रूट आमतौर पर ऐसा कर सकते हैं), / बिन / बिल्ली कार्यक्रम कॉल लिबक ओपन () फ़ंक्शन जो अभी भी उपयोगकर्ता कोड है, और यह खुला () फ़ंक्शन कर्नेल को सिस्टम कॉल करता है। फिर कर्नेल खुद तय करता है कि उसे क्या करना है। उदाहरण के लिए, कर्नेल कुछ ऑपरेशन की अनुमति दे सकता है यदि प्रभावी उपयोगकर्ता के पास आईडी == 0 है।
सिद्धांत रूप में, यदि आप कर्नेल में कुछ कोड को बदलेंगे और 'www-data' उपयोगकर्ता को अलग तरह से संभालेंगे - कुछ संचालन केवल 'www-data' उपयोगकर्ता के लिए अनुमति दी जा सकती है (और रूट करने के लिए भी अनुमति नहीं है)।
अधिकांश 'उपयोगकर्ता के अनुकूल' उपकरण इसके खिलाफ जांच करेंगे और आपको एक उपयोगकर्ता नाम के साथ एक खाता बनाने की अनुमति नहीं देंगे जो पहले से ही लिया गया है।
यदि आप इसे बाईपास करते हैं, और मैन्युअल रूप से अपने / etc / passwd और / etc / छाया में एक दूसरा रूट खाता जोड़ते हैं, तो जिसका उपयोग किया जाएगा, मुझे लगता है कि यदि आप इसे मूल के पहले या बाद में डालते हैं तो यह निर्भर करेगा। यूनिक्स प्रणाली पर सभी उपयोगकर्ता खातों की तरह, इसमें यूयूएस शून्य का उपयोग केवल तभी होगा जब इसका नाम शून्य हो, चाहे वह किसी भी नाम का हो।