कई खाते क्यों हैं? मैं केवल उपयोगकर्ता हूँ


13

मैं एक Ubuntu 12.04 डेस्कटॉप सिस्टम चला रहा हूं। अब तक मैंने केवल कुछ कार्यक्रम स्थापित किए हैं (मेरे पास सूडो अधिकार हैं)।

  1. जब मैं सिस्टम पर उपयोगकर्ताओं की सूची की जांच करता हूं, तो मुझे एक लंबी सूची दिखाई देती है, जैसे 20 से अधिक उपयोगकर्ता- ये उपयोगकर्ता कब बनाए गए थे (जैसे डेमॉन, एसआईएस, सिंक, गेम्स, पल्स, आदि)। इन नए कार्यक्रमों को कैसे स्थापित किया जा रहा है?

  2. अगर मैं अपने सिस्टम पर कोई प्रोग्राम चलाता हूं, तो उसे मेरे यूआईडी के साथ चलना चाहिए। लेकिन एक पीएस करने पर , मैं कई अन्य कार्यक्रमों को अलग-अलग यूआईडी (जैसे रूट, डेमॉन, अवही, सिसलॉग, कोलोर्ड इत्यादि) के साथ चला रहा हूं - ये कार्यक्रम अलग-अलग यूआईडी के साथ कैसे शुरू हुए?


3
इसके बारे में दूसरे तरीके से सोचें: जब कंप्यूटर पहले बूट करता है तो आप अभी तक लॉग इन नहीं हुए हैं, और प्रोग्राम को किसी के रूप में चलाना है । वे सभी मूल के रूप में चल सकते हैं, लेकिन यह असुरक्षित है, क्योंकि इनमें से अधिकांश कार्यक्रम केवल कंप्यूटर के संचालन के एक छोटे हिस्से के लिए जिम्मेदार हैं। आपके द्वारा लॉग इन करने के बाद, आपके द्वारा सीधे चलाए जाने वाले अधिकांश प्रोग्राम आपके जैसे ही चलाए जाएंगे।
dimo414

अंततः, यह एक हैक है। एक व्यापक रूप से इस्तेमाल किया, लेकिन फिर भी एक हैक। UNIX वितरण एक पुराने और अधूरे सुरक्षा मॉडल के आसपास काम करने के लिए "उपयोगकर्ता" अवधारणा का दुरुपयोग करता है।
फेडरिको पोलोनी

जवाबों:


24

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

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

उबंटू के तहत, 0–99 की रेंज में यूजर आईडी सिस्टम इंस्टालेशन पर बनाए जाते हैं। 0 जड़ है; 1–99 की सीमा में कई लोग केवल ऐतिहासिक कारणों से मौजूद हैं और उन्हें केवल कुछ स्थानीय प्रतिष्ठानों के साथ पिछड़ी संगतता के लिए रखा जाता है जो उनका उपयोग करते हैं (कुछ अतिरिक्त प्रविष्टियाँ चोट नहीं पहुँचाती हैं)। 100-999 की रेंज में यूजर आईडी गतिशील रूप से बनाई और हटा दी जाती है जब एक समर्पित उपयोगकर्ता आईडी की आवश्यकता वाली सेवाओं को स्थापित या हटा दिया जाता है। 1000 के बाद की सीमा मानव उपयोगकर्ताओं या सिस्टम व्यवस्थापक द्वारा बनाए गए किसी अन्य खाते के लिए है। वही समूहों के लिए जाता है।


7

मुझे लगता है कि आप जाँच करके उपयोगकर्ताओं की इस सूची को पा रहे हैं /etc/passwd? यह पूरी तरह से सामान्य है - 'उपयोगकर्ता' अनुमतियों का एक सेट ले जाने के लिए सेवा करते हैं, न केवल 'वास्तविक उपयोगकर्ताओं' को बंद करने के लिए उपयोगी होते हैं, बल्कि आपके सिस्टम के कुछ क्षेत्रों के लिए भी प्रोग्राम करते हैं और ट्रैक करते हैं कि वे क्या बदल गए हैं (समूहों के साथ एक ही अवधारणा)।

मैंने /etc/passwdआपके संदर्भ के लिए नीचे अपनी रास्पबेरी पाई फ़ाइलों में से एक डाला है ; आप ntopप्रोग्राम ntop(नेटवर्क निगरानी) द्वारा बनाए गए इस फ़ाइल के निचले भाग के उपयोगकर्ता को देखेंगे । इसी तरह sshd, gnatsबग रिपोर्टिंग आदि।

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
pi:x:1000:1000:,,,:/home/pi:/bin/bash
sshd:x:101:65534::/var/run/sshd:/usr/sbin/nologin
ntp:x:102:104::/home/ntp:/bin/false
statd:x:103:65534::/var/lib/nfs:/bin/false
messagebus:x:104:106::/var/run/dbus:/bin/false
usbmux:x:105:46:usbmux daemon,,,:/home/usbmux:/bin/false
lightdm:x:106:109:Light Display Manager:/var/lib/lightdm:/bin/false
smmta:x:107:110:Mail Transfer Agent,,,:/var/lib/sendmail:/bin/false
smmsp:x:108:111:Mail Submission Program,,,:/var/lib/sendmail:/bin/false
Debian-exim:x:109:113::/var/spool/exim4:/bin/false
ntop:x:110:115::/var/lib/ntop:/bin/false

जब मैं ubuntu पर एक नया कार्यक्रम स्थापित करता हूं, तो क्या यह एक नया उपयोगकर्ता बनाता है? यदि नहीं, तो कैसे कई कार्यक्रम मेरे से अलग यूआईडी के साथ चल रहे हैं? मेरा मतलब है कि इन कार्यक्रमों को अलग यूआईडी के साथ कैसे चलाया जाता है?
जेक

आप इसे पसंद कर सकते हैं dpkg --get-selections | grep -v deinstallऔर अपने / etc / passwd फ़ाइल सूची की तुलना कर सकते हैं। जैसा कि आपके प्रश्न के लिए: "... ये प्रोग्राम अलग-अलग यूआईडी के साथ कैसे चल रहे हैं", आप इसे स्वयं आज़मा सकते हैं। एक यादृच्छिक बैश स्क्रिप्ट लिखें test_fileजिसमें कुछ अहानिकर ( echo "Test") हो। तब sudo chmod 755 test_file(इसलिए यह किसी के द्वारा पठनीय और निष्पादन योग्य है और स्वामी द्वारा पठनीय, पठनीय और निष्पादन योग्य है) sudo chown nobodyजो तब इसे उपयोगकर्ता को सौंपेगा nobody। फिर इसे चलाएं। 'कार्यक्रम' test_fileसिर्फ यूआईडी के साथ चला nobody
टॉक्सिफा

2
@ py4on काफी नहीं ... यह nobodyUID वाली फ़ाइल से चला , लेकिन यह आपके UID के साथ चला; आपको ऐसा करने के लिए एक SUID फ़ाइल बनाने की आवश्यकता होगी, लेकिन फ़ाइल को दुभाषिए के साथ चलाने पर SUID बिट गिरा दी जाती है।
रेकिंग

ठीक है, क्योंकि मैं अपनी टिप्पणी को ऊपर संपादित नहीं कर सकता, लेकिन dpkgबिट अभी भी उपयोगी है (उम्मीद है) कृपया इसे स्वयं के रूप में चलाने के बारे में अवहेलना करें! या तो एसयूआईडी के साथ जाएं या अर्थ के लिए एक अलग उपयोगकर्ता के रूप में लॉगिन करें
टॉक्सिफा

3

ये उपयोगकर्ता कब बनाए गए थे?

जिन मामलों का आपने उल्लेख किया है, उनके मामलों में वे सिस्टम इंस्टालेशन में बनाए गए थे। ये उपयोगकर्ता खाते पारंपरिक हैं, कुछ वापस दशकों से। वे भी मानकीकृत हैं। लिनक्स मानक बेस उन्हें में विभाजित करता है:

  • आवश्यक मानक उपयोगकर्ता, खातों root, binऔर daemon; तथा
  • वैकल्पिक मानक उपयोगकर्ता खाता adm, lp, sync, shutdown, halt, mail, news, uucp, operator, man, औरnobody

अन्य उपयोगकर्ता खातों को यहाँ उल्लेख कर रहे हैं - pulse, avahi, colord, और Debian-exim(py4on का पासवर्ड फ़ाइल से एक चुनने) - अपने अगले प्रश्न के लिए हमें लाने के लिए।

इन नए कार्यक्रमों को कैसे स्थापित किया जा रहा है?

गैर-मानक उपयोगकर्ता खाते विभिन्न पैकेजों के लिए "अनुचर लिपियों" द्वारा बनाए और नष्ट किए जाते हैं, क्योंकि उन पैकेजों को स्थापित और शुद्ध किया जाता है। एक उपयोगकर्ता खाता पैकेज की तथाकथित postinstअनुचर स्क्रिप्ट द्वारा बनाया जाएगा , जो getentयह देखने के लिए चलता है कि क्या उपयोगकर्ता खाता पहले से मौजूद है, और useraddयदि ऐसा नहीं है। सिद्धांत रूप में इसे पैकेज की तथाकथित postrmअनुचर स्क्रिप्ट द्वारा हटा दिया जाएगा , चल रहा है userdel

व्यवहार में, संकुल के लिए उपयोगकर्ता खाते हटाए नहीं जाते हैं। फेडोरा विकी (qv) बताते हैं कि यह कठिनाई से भरा होगा। कार्रवाई में इस तर्क के एक उदाहरण के लिए डेबियन बग # 646175 देखें , जहां यह तय किया जाता है कि पैकेज के शुद्ध होने पर उपयोगकर्ता खाते को हटाने के लिए नहींrabbitmq , उस खाते के तत्वावधान में चल रहे एक d thatmon के साथ एक समस्या को हल करने के लिए।

इन कार्यक्रमों की शुरुआत अलग-अलग यूआईडी से कैसे की गई?

यूनिक्स और लिनक्स के तहत, सुपरयुसर के तत्वावधान में चल रही एक प्रक्रिया अपने उपयोगकर्ता खाते को कुछ और में बदल सकती है और उसी कार्यक्रम को जारी रख सकती है, लेकिन रिवर्स की अनुमति नहीं है। (एक सेट-यूआईडी तंत्र का उपयोग करना चाहिए।)

D Themon प्रबंधन प्रणाली सुपरयुसर के रूप में चलती है। इसका कॉन्फ़िगरेशन डेटा निर्दिष्ट करता है कि विशेष उपयोगकर्ता खातों के तत्वावधान में चलने वाले विशेष डीमॉन:

  • सिस्टम 5 rcके साथ स्क्रिप्ट /etc/init.dसहायक उपकरण जैसे कि start-stop-daemonऔर इसके --chuidविकल्प का उपयोग करती है।
  • एक daemontools परिवार सेवा प्रबंधक के साथ, runस्क्रिप्ट कॉल setuidgid, s6-setuidgid, chpst, या runuidउपयोगकर्ता खाते के नाम के साथ। Https://unix.stackexchange.com/a/179798/5132 में इसके उदाहरण हैं जो nagiosउपयोगकर्ता खाता सेट करते हैं।
  • अपस्टार्ट के साथ setuidएक जॉब फ़ाइल में एक श्लोक है, जो उपयोगकर्ता खाते को निर्दिष्ट करता है। यह विशेष रूप से ठीक नहीं है, और कभी-कभी कोई भी /superuser//a/723333/38062 पर वर्णित है जो चाहता है ।
  • Systemd के साथ User=सेवा इकाई फ़ाइल में एक सेटिंग होती है, जो उपयोगकर्ता खाते को निर्दिष्ट करती है।

जब d bemon प्रबंधन प्रणाली d thesemon होने के लिए एक प्रक्रिया पैदा करती है, तो ये तंत्र सुपरसुसर विशेषाधिकारों को छोड़ देते हैं ताकि d tomon प्रक्रिया अनपेक्षित उपयोगकर्ता खाते के तत्वावधान में चलती रहे।

वहाँ एक काफी लंबी व्याख्या है कि क्यों अच्छा प्रबंधन इस तरह से किया जाता है। लेकिन आपने यह क्यों नहीं पूछा; केवल कब, कैसे, और कहां। Very एक बहुत संक्षिप्त précis, इसलिए:

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

आगे की पढाई


1

लिनक्स पर जब हम एक सेवा स्थापित करते हैं तो यह अपने सेवा नाम का उपयोगकर्ता बनाता है या उसके समान होता है ताकि वह दूसरों की फाइलों तक पहुंच न बना सके।


1
यह एक सम्मेलन है, लेकिन सभी आवश्यक नहीं है और निश्चित रूप से सार्वभौमिक नहीं है। वास्तव में, यह वास्तव में नहीं है कि आम अब ...
HalosGhost

1
@HalosGhost उह? नहीं, यह एक बहुत ही सामान्य सम्मेलन है, फिर भी मजबूत हो रहा है। यह उत्तर अधूरा है लेकिन पूरी तरह से सही है।
गिल्स एसओ- बुराई को रोकना '

1
@ दोस्तों, मैंने यह नहीं कहा (या यहां तक ​​कि) कि यह गलत था। लेकिन यह ज्यादातर पुराना है। इन दिनों सेवाओं का एक बड़ा हिस्सा (सिस्टमड के आगमन के साथ) सिर्फ सेवा फाइलें हैं। अब यह कहना नहीं है कि प्रति-सेवा उपयोगकर्ता खाते अब मौजूद नहीं हैं; वे निश्चित रूप से करते हैं। लेकिन, उदाहरण के लिए, मेरे पूरे सिस्टम पर केवल 24 खाते हैं जहां मेरे पास बहुत अधिक सेवाएं हैं।
हालोसगॉस्ट

@ गिल्स में मुझे हेलोसॉस्ट जैसी ही स्थिति है - खातों से अधिक सेवाएं। तो क्या इसका मतलब यह है कि वे सभी जड़ के रूप में चलते हैं?
लोनिक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.