'कोई नहीं' उपयोगकर्ता का उद्देश्य क्या है?


93

जब मैंने सभी मानव उपयोगकर्ताओं की सूची पढ़ी उसके बाद मैंने देखा कि मेरे उबंटू प्रणाली में 'कोई नहीं' नाम का एक उपयोगकर्ता खाता है।

मैंने यह भी देखा कि मैं निम्नलिखित आदेश और अपने पासवर्ड का उपयोग करके टर्मिनल से इस खाते में प्रवेश कर सकता हूं:

sudo su nobody

सु कोई भी

यह मुझे बिल्कुल बुरा नहीं लगता, लेकिन मैं जानना चाहता हूं कि इस उपयोगकर्ता का उद्देश्य क्या है? क्या यह डिफ़ॉल्ट रूप से उबंटू की एक ताजा स्थापना पर बनाया गया है या किसी विशेष पैकेज को स्थापित करके बनाया गया है?


8
ध्यान दें कि जब आप अपने पासवर्ड का उपयोग करने के लिए लॉग इन करते हैं, तो आप अपने पासवर्ड को sudo चरण के लिए उपयोग कर रहे हैं, किसी के खाते के लिए नहीं (और यह कारण है कि यह काम करता है क्योंकि सुपरसुसर किसी को भी अपना पासवर्ड दर्ज करने की आवश्यकता के बिना मुकदमा कर सकता है (हालांकि के रूप में) नीचे उल्लेख किया गया है, मेरा मानना ​​है कि आरएच-डेरिवेटिव्स पर कम से कम, अगर किसी का शेल / साइबिन / नॉलोगिन पर सेट नहीं है, तो आप अभी भी सुपरयूजर (उर्फ रूट)
फून

डिफ़ॉल्ट रूप से अब ऐसा ही है (18.04+?)। sudo su nobodyवापसी यह खाता वर्तमान में उपलब्ध नहीं है। क्योंकि उपयोगकर्ता के लिए शेल ( ) पर nobody सेट है/usr/sbin/nologingetent passwd nobody
पाब्लो ए

@ सर्नॉल्ड - कृपया मेरी टिप्पणी को उस उत्तर पर देखें जो मुझे लगता है कि आप पर विचार कर रहे हैं। यह एक खराब जवाब है, क्योंकि यह कारण या स्रोतों का हवाला नहीं देता है। यह आगे चलकर सभी को बताता है कि मैं किसी के खाते के बारे में नहीं जानता और एनएफएस कैसे काम करता है: इसके साथ root_squashयह रिमोट सिस्टम पर किसी के लिए भी रूट करेगा । यह कमोबेश इसके विपरीत है जो इस उत्तर को बताता है
vidarlo

जवाबों:


85

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

एक वास्तविक उपयोगकर्ता के रूप में कुछ चलाने के साथ इसका विरोध करें, अगर उस सेवा से समझौता किया गया था (वेब ​​सर्वर कभी-कभार मनमाना कोड चलाने के लिए शोषण किया जाता है), तो यह उस उपयोगकर्ता के रूप में चलेगा और उस उपयोगकर्ता के पास हर चीज तक पहुंच होगी। ज्यादातर मामलों में, यह जड़ पाने जितना ही बुरा है

आप Ubuntu विकी पर किसी भी उपयोगकर्ता के बारे में थोड़ा अधिक पढ़ सकते हैं:

अपने अनुवर्ती जवाब देने के लिए:

मैं इस खाते तक क्यों नहीं पहुँच सकता su nobody?

sudo grep nobody /etc/shadowआपको दिखाएगा कि किसी के पास पासवर्ड नहीं है और आप suबिना अकाउंट पासवर्ड के नहीं जा सकते । इसके sudo su nobodyबजाय सबसे साफ तरीका है । मैं तुम्हें एक बहुत ही उजाड़ shखोल में छोड़ दूँगा ।

क्या आप इस खाते का उपयोग करने के लिए संकेत दिए जाने पर एक विशेष उदाहरण दे सकते हैं ?

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

इसका एक वास्तविक विश्व उदाहरण memcached(एक मुख्य-मूल्य-इन-मेमोरी कैश / डेटाबेस / चीज़) है, जो मेरे कंप्यूटर पर बैठा है और मेरा सर्वर बिना किसी खाते के चल रहा है। क्यों? क्योंकि इसे सिर्फ किसी भी अनुमति की आवश्यकता नहीं है और इसे एक खाता देने के लिए जिसमें फाइलों तक पहुंच है, बस एक अनावश्यक जोखिम होगा।


बस दो और चीजें अगर आप समझा सकते हैं: 1) मैं इस खाते का उपयोग क्यों नहीं कर सकता su nobodyऔर 2) क्या आप इस खाते का उपयोग करने के लिए संकेत दिए जाने पर एक विशेष उदाहरण दे सकते हैं ?
रादु राईडेनु

@ RaduRădeanu 1) मैं अनुमान लगा रहा हूं कि इसका कोई पासवर्ड सेट नहीं है, और जब आप suएक सामान्य उपयोगकर्ता के रूप में होते हैं, तो आपको लक्ष्य उपयोगकर्ता का पासवर्ड देना होगा। प्रयास करें sudo -iतो su nobodyजड़ खोल से (जो एक पासवर्ड की आवश्यकता नहीं होगी)।
बजे एक CVn

2
Network File Systemनक्शे rootको nobodyतो स्थानीय जड़ दूरस्थ जड़ कर सकते हैं की तरह सब कुछ उपयोग नहीं कर सकते।
सिल्वेस्टर

1
@ RaduRădeanu कृपया संपादित इतिहास पर ध्यान दें। जब मैंने मूल कमांड का परीक्षण किया (वहां क्या नहीं है) तो यह मूल रूप से मैं एक डैश (/ बिन / श) शेल में समाप्त हो रहा था, लेकिन अब मैं इसे दोहरा नहीं सकता। आपका मूल संपादन ठीक था। यह मैं नहीं था जिसने इसे बदल दिया।
ओली

1
मुझे हमेशा लगा nobodyकि वास्तव में / मुख्य रूप से NFS द्वारा linuxstandardbase राज्यों के रूप में उपयोग किया जाता है ।
डेगोनलेजेल

29

कई यूनिक्स वेरिएंट में, "कोई नहीं" एक उपयोगकर्ता खाते का पारंपरिक नाम है, जिसके पास कोई फाइल नहीं है, कोई विशेषाधिकार प्राप्त समूहों में नहीं है, और इसमें कोई क्षमता नहीं है सिवाय उन सभी के जो प्रत्येक उपयोगकर्ता के पास है।

यह दुर्भावनापूर्ण उपयोगकर्ता द्वारा किए जा सकने वाले नुकसान को सीमित करने के लिए, विशेष रूप से सर्वर के रूप में किसी के रूप में डेमॉन को चलाने के लिए आम है। हालाँकि, इस तकनीक की उपयोगिता कम हो जाती है यदि एक से अधिक डेमन इस तरह से चलाए जाते हैं, क्योंकि तब एक डेमॉन पर नियंत्रण पाने से उन सभी का नियंत्रण हो जाएगा। कारण यह है कि किसी के स्वामित्व वाली प्रक्रियाओं में एक-दूसरे को सिग्नल भेजने और यहां तक ​​कि एक-दूसरे को डिबग करने की क्षमता नहीं होती है, जिससे वे एक-दूसरे की मेमोरी को पढ़ या संशोधित कर सकते हैं।

Http://en.wikipedia.org/wiki/Nobody_(username) से ली गई जानकारी ।


-1: nobodyएनएफएस के लिए सख्ती से है और इसका उपयोग अन्य सेवाओं द्वारा नहीं किया जाना चाहिए और निश्चित रूप से सिस्टम प्रशासकों द्वारा नहीं किया जाना चाहिए। धन्यवाद।
दोपहर

22

उपयोगकर्ता कोई भी NFS के लिए आरक्षित नहीं है।

उपरोक्त awers बल्कि गलत हैं, क्योंकि वे मानते हैं कि nobodyयह एक "सामान्य" अनाम / अतिथि शैली उपयोगकर्ता आईडी है।

UNIX / Linux अभिगम नियंत्रण मॉडल में अनाम / अतिथि शैली उपयोगकर्ता आईडी मौजूद नहीं हैं और ये बुरे सुझाव हैं:

  • " आम के रूप में डेमॉन को चलाने के लिए nobody, विशेष रूप से सर्वर, आदेश नुकसान है कि एक दुर्भावनापूर्ण उपयोगकर्ता जो उन्हें का नियंत्रण प्राप्त द्वारा किया जा सकता है सीमित करने के लिए। " क्योंकि इस प्रकार है कि की: " हालांकि, इस तकनीक की उपयोगिता की तुलना में अधिक है, तो कम हो जाता है एक डेमॉन इस तरह से चलाया जाता है, क्योंकि तब एक डेमॉन पर नियंत्रण पाने से उन सभी का नियंत्रण मिल जाएगा
  • "इसका एक वास्तविक विश्व उदाहरण memcached(एक महत्वपूर्ण-मूल्य-इन-मेमोरी कैश / डेटाबेस / चीज़) है, जो मेरे कंप्यूटर और मेरे सर्वर पर nobodyअकाउंट के तहत चल रहा है । क्यों? क्योंकि इसे बस किसी भी अनुमति की आवश्यकता नहीं है और इसे देने के लिए? एक खाता जिसने फाइलों तक पहुंच लिखी है वह सिर्फ एक अनावश्यक जोखिम होगा। "

nobodyप्रयोक्ता आईडी 65534 के साथ उपयोगकर्ता नाम बनाया गया था और एक विशिष्ट प्रयोजन के लिए आरक्षित है और केवल उस उद्देश्य के लिए इस्तेमाल किया जाना चाहिए: "तुच्छ" एनएफएस पेड़ निर्यात में उपयोगकर्ताओं और उपयोगकर्ता आईडी के लिए एक प्लेसहोल्डर के रूप में।

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

इसलिए यह एक बहुत बुरा विचार का उपयोग करना है nobodyके लिए किसी भी वजह से अपने उद्देश्य है कि किसी को सुलभ नहीं होना चाहिए फ़ाइलों के लिए एक उपयोगकर्ता नाम / उपयोगकर्ता आईडी हो रहा है, अन्य उद्देश्य।

विकी की एंट्री भी बहुत गलत है।

UNIX / Linux अभ्यास प्रत्येक "एप्लिकेशन" या एप्लिकेशन क्षेत्र के लिए एक नया खाता बनाने के लिए है जिसे एक अलग एक्सेस कंट्रोल डोमेन की आवश्यकता होती है, और एनएफएस के बाहर पुन: उपयोग नहीं करना हैnobody


इस उत्तर किसी भी स्रोत का हवाला देते नहीं है, और स्पष्ट रूप से अन्य उत्तर, जिनमें से कई के विपरीत करना सूत्रों का हवाला देते हैं। वर्तमान इनाम यह संकेत देता है कि यह उत्तर विशेष रूप से अच्छा है, इस मामले में इसे कुछ स्रोतों का हवाला देना चाहिए , या सूची में कुछ तर्क करना चाहिए।
विदरालो


@ mook765 वह हिस्सा ठीक है। एनएफएस के बारे में पैराग्राफ, हालांकि, मैं नहीं झुकता। उदाहरण के लिए root_squash, rootउपयोगकर्ता के लिए मैप किया जाता है nobody, इसलिए स्वामी होने वाली फ़ाइलों का nobodyबिल्कुल कोई मतलब नहीं होगा। इस कथन के अलावा कि किसी के स्वामित्व वाली फाइलें किसी के लिए अप्राप्य नहीं हैं, इसका कोई मतलब नहीं है, क्योंकि फ़ाइल अनुमतियाँ UNIX में स्वामित्व से अलग हैं। मैं यह नहीं कह रहा हूं कि उत्तर में सब कुछ गलत है, बस इसके तत्व मेरे लिए बहुत कम या कोई मतलब नहीं रखते :)
vidarlo

1
@vidarlo, यह उत्तर यह सुझाव नहीं दे रहा है कि आपके पास स्वामित्व के लिए फ़ाइलें सेट होनी चाहिए nobody। यह आपको बता रहा है कि nobodyअनुमतियाँ मैप करते समय NFS का उपयोग करना है, और यह मेरे लिए सबसे महत्वपूर्ण बिंदु है। एनएफएस कैसे उपयोग करता nobodyहै, इस तथ्य से कम दिलचस्प नहीं है कि यह उपयोग करता है nobody। धन्यवाद।
दोपहर

@ मेरी राय में इस मामले में जवाब अभी भी स्पष्ट गलत है। यदि कोई उपयोगकर्ता उत्तर पढ़ता है और man exports, वह बहुत भ्रमित हो सकता है।
विदरालो

17

nobodyउपयोगकर्ता डिफ़ॉल्ट रूप से एक नए सिरे से स्थापित (उबंटू डेस्कटॉप 13.04 पर जाँच) पर बनाया जाता है।

कई * निक्स वेरिएंट में, nobodyएक उपयोगकर्ता खाते का पारंपरिक नाम है, जिसके पास कोई फाइल नहीं है, कोई विशेषाधिकार प्राप्त समूहों में नहीं है, और इसमें कोई योग्यता नहीं है सिवाय इसके कि हर दूसरे उपयोगकर्ता के पास ( nobodyउपयोगकर्ता और समूह के पास /etc/sudoersफ़ाइल में कोई प्रविष्टि नहीं है ) ।

एक दुर्भावनापूर्ण उपयोगकर्ता द्वारा किए गए नुकसान को सीमित करने के लिए, विशेष रूप से सर्वर के रूप में डेमॉन को चलाना आम बात है nobody, जिन्होंने उनका नियंत्रण प्राप्त किया। हालाँकि, इस तकनीक की उपयोगिता कम हो जाती है यदि एक से अधिक डेमन इस तरह से चलाए जाते हैं, क्योंकि तब एक डेमॉन पर नियंत्रण पाने से उन सभी का नियंत्रण हो जाएगा। कारण यह है कि nobodyप्रसिद्ध प्रक्रियाओं में एक-दूसरे को संकेत भेजने और यहां तक ​​कि एक-दूसरे को डीबग करने की क्षमता होती है, जिससे वे एक-दूसरे की स्मृति को पढ़ने या संशोधित करने की अनुमति देते हैं।

स्रोत : विकिपीडिया - कोई नहीं (उपयोगकर्ता नाम)


nobodyस्वामित्व वाली प्रक्रियाओं को एक दूसरे को संकेत भेजने के लिए और यहां तक कि, लिनक्स में एक दूसरे ptrace जिसका अर्थ है कि एक कोई भी नहीं के स्वामित्व वाली प्रक्रिया पढ़ सकते हैं और एक और कोई नहीं के स्वामित्व वाली प्रक्रिया की स्मृति में लिख सकते हैं कर सकते हैं।

यह फ़ाइल nobodyमें उपयोगकर्ता का एक नमूना प्रविष्टि है /etc/passwd:

alaa@aa-lu:~$ grep nobody /etc/passwd
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh

जैसा कि आप देख सकते हैं, nobodyउपयोगकर्ता के पास /bin/shएक लॉगिन शेल और /nonexistentहोम निर्देशिका के रूप में है। जैसा कि नाम से पता चलता है, /nonexistentनिर्देशिका डिफ़ॉल्ट रूप से मौजूद नहीं है।

यदि आप पागल हैं, तो आप उपयोगकर्ता के लिए ssh लॉगिन को अस्वीकार कर सकते हैं, इसलिए nobodyडिफ़ॉल्ट शेल को सेट कर सकते हैं ।/usr/sbin/nologinnobody

स्रोत : LinuxG.net - लिनक्स और यूनिक्स कोई नहीं उपयोगकर्ता


यदि विकिपीडिया से गलत पैराग्राफ हटा दिया गया था तो यह उत्तर एक +1 के लायक होगा। धन्यवाद।
sarnold

3

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


0

' उपयोगकर्ता कोई नहीं केवल NFS के लिए आरक्षित है के लिए मामूली सुधार 'जवाब दो। nobodyउपयोगकर्ता भी इस समय बाँध कीलों से आम कंटेनरों के लिए प्रयोग किया जाता है।

यह systemd-nspawn से लिया गया है, विशेष रूप से - विंड माउंट विकल्प:

ध्यान दें कि जब इस विकल्प का उपयोग -पार्टी-उपयोगकर्ताओं के साथ संयोजन में किया जाता है, तो परिणामी माउंट पॉइंट्स का स्वामित्व किसी भी उपयोगकर्ता के पास नहीं होगा। ऐसा इसलिए है क्योंकि माउंट और इसकी फाइलें और निर्देशिकाएं संबंधित होस्ट उपयोगकर्ताओं और समूहों के स्वामित्व में हैं, जो कंटेनर में मौजूद नहीं हैं, और इस तरह वाइल्डकार्ड यूआईडी 65534 (कोई नहीं) के तहत दिखाते हैं। यदि ऐसे बाइंड माउंट बनाए जाते हैं, तो उन्हें केवल -bind-ro = का उपयोग करके, केवल पढ़ने के लिए बनाने की सिफारिश की जाती है।

systemd-nspawn

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