उपयोगकर्ता और सेवा खाते के बीच अंतर क्या है?


17

मैं उपयोगकर्ता और सेवा खाते के बीच अंतर जानना चाहूंगा।

मुझे पता है कि उदाहरण के Jenkinsलिए ubuntu में स्थापित उपयोगकर्ता नहीं है, बल्कि सेवा खाता है

  1. सेवा खाते का उपयोग क्या है?
  2. जब हमें उनकी आवश्यकता है?
  3. मैं सेवा खाता कैसे बना सकता हूं?

जवाबों:


19

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

सेवा खातों को सामान्य उपयोगकर्ता खातों (जैसे का उपयोग करके useradd) की तरह बनाया जा सकता है । हालाँकि, सेवा खाते आमतौर पर सेवा सॉफ्टवेयर की स्थापना पर पैकेज प्रबंधक द्वारा बनाए और कॉन्फ़िगर किए जाते हैं। इसलिए, यहां तक ​​कि एक व्यवस्थापक के रूप में आपको सेवा खातों के निर्माण से शायद ही कभी संबंधित होना चाहिए।

अच्छे कारण के लिए: उपयोगकर्ता खातों के विपरीत, सेवा खातों में अक्सर "उचित" लॉगिन शेल नहीं होता है, अर्थात उनके पास /usr/sbin/nologinलॉगिन शेल (या पुराने दिनों में वापस /bin/false) के रूप में होता है। इसके अलावा, सेवा खातों को आमतौर पर बंद कर दिया जाता है, अर्थात यह लॉगिन करने के लिए संभव नहीं है (पारंपरिक के लिए /etc/passwdऔर /etc/shadowयह पासवर्ड हैश को मनमाने मूल्यों जैसे *या पर सेट करके प्राप्त किया जा सकता है x)। यह दुरुपयोग ( रक्षा में गहराई ) के खिलाफ सेवा खातों को सख्त करना है ।

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


5

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

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

मानव बनाम प्रणाली / सेवा खाते की कोई औपचारिक परिभाषा नहीं है। कर्नेल परवाह नहीं करता है (यूआईडी 0 के साथ उपयोगकर्ता को कई विशेषाधिकार देने के अलावा)। ज्यादातर प्रशासन आदेशों की परवाह नहीं करते हैं। कुछ विशिष्ट अंतर हैं:

  • एक मानव उपयोगकर्ता का वास्तविक नाम "जॉन डो" है, जबकि एक सिस्टम उपयोगकर्ता का वर्णनात्मक नाम "नसल डेमन" या कोई भी नहीं है।
  • एक मानव उपयोगकर्ता के पास एक वास्तविक लॉगिन शेल है (उदाहरण के लिए /bin/shया /bin/bashया /bin/csh। कुछ सिस्टम उपयोगकर्ताओं के पास एक शेल (लगभग हमेशा /bin/sh) होता है, अन्य नहीं करते हैं, इस पर निर्भर करता है कि उनका उपयोग कैसे किया जाता है (उदाहरण के su fooलिए fooशेल की आवश्यकता होती है)।
  • एक मानव उपयोगकर्ता के पास अक्सर एक पासवर्ड होता है - लेकिन ऐसा हमेशा नहीं होता है, उदाहरण के लिए रिमोट-ओनली उपयोगकर्ता के पास केवल SSH कुंजी हो सकती है। ध्यान दें कि आधुनिक यूनियनों पर, पासवर्ड /etc/passwdकुछ अन्य फ़ाइल में नहीं है , जैसे कि /etc/shadow
  • एक मानव उपयोगकर्ता की होम निर्देशिका आमतौर पर /home(या कुछ साइट-विशिष्ट स्थान) के अंतर्गत होती है, जबकि एक सिस्टम उपयोगकर्ता की होम निर्देशिका आमतौर पर अंडर /homeनहीं होती है और मौजूद नहीं हो सकती है (लेकिन अपवाद हैं)।
  • अधिकांश साइटें सिस्टम उपयोगकर्ताओं के लिए उपयोगकर्ता आईडी की एक श्रेणी और मानव उपयोगकर्ताओं के लिए एक असहमति श्रेणी निर्दिष्ट करती हैं। 100-65533 या 500-65533 या 1000-65533 का उपयोग करना विशिष्ट है, और अधिकांश वितरण 500 या 1000 से वास्तविक उपयोगकर्ता आईडी आवंटित करने के लिए स्थापित किए जाते हैं।

उन साइटों पर जहां खातों को कई मशीनों में साझा किया जाता है, आमतौर पर एक केंद्रीय सर्वर होता है जिसमें उपयोगकर्ता सूची होती है, जो NIS या LDAP के माध्यम से सुलभ होती है । passwdमें प्रवेश /etc/nsswitch.confनिर्दिष्ट जहाँ उपयोगकर्ता जानकारी प्राप्त करने के। /etc/passwdनेटवर्क-वाइड डेटाबेस से स्थानीय और वास्तविक उपयोगकर्ताओं में सिस्टम उपयोगकर्ता होना आम है , लेकिन कभी-कभी नेटवर्क-वाइड डेटाबेस में सिस्टम उपयोगकर्ता होते हैं (लगातार यूआईडी को लागू करने के लिए, जो सर्वर और डेटा प्रतिकृति की सुविधा देता है), और कभी-कभी होते हैं। स्थानीय फ़ाइल में मानव उपयोगकर्ता (नेटवर्क चालू होने पर भी उन्हें लॉग इन करने के लिए)।

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

सेवा खातों और मानव खातों को एक ही कमांड द्वारा प्रबंधित किया जाता है और एक ही फाइलों में दर्ज किया जाता है। खाता निर्माण कमांड में मानव बनाम सेवा उपयोगकर्ताओं के लिए उचित चूक सेट करने के लिए विकल्प हो सकते हैं, उदाहरण के लिए उचित रेंज में उपयोगकर्ता आईडी लेने के लिए, और एक मानव के लिए पासवर्ड के लिए संकेत देने और सेवा के लिए पासवर्ड प्रमाणीकरण अक्षम करने के लिए। उदाहरण के लिए, लिनक्स पर adduserबनाम adduser --systemया useraddबनाम useradd -r


3
    1. एक सेवा खाता, उर्फ ​​तकनीकी खाता एक ऐसा खाता है जो केवल एक सेवा / अनुप्रयोग द्वारा उपयोग किया जाता है, न कि एक नियमित उपयोगकर्ता द्वारा।
    1. एप्लिकेशन और सेवा डेवलपर्स चाहते हैं कि ये खाते अपनी प्रक्रियाओं को रूट के रूप में चलाने के बजाय संबद्ध प्रक्रियाओं के अधिकारों और विशेषाधिकारों को प्रतिबंधित करें। सेवाओं के रूप में init, systemdया समान, जो रूट के रूप में चलते हैं, जोखिमों को सीमित करने के लिए सेवा खाते में जल्दी से डाउनग्रेड करते हैं। उपयोग किए गए ओएस के आधार पर, आवेदन खातों को नियमित खातों की तुलना में अधिक विशेषाधिकार दिए जा सकते हैं, उदाहरण के लिए विशेषाधिकार प्राप्त टीसीपी पोर्ट से बांधने का अधिकार, या इसके विपरीत एक नियमित उपयोगकर्ता की तुलना में उनके विशेषाधिकार कम हो गए हैं, उदाहरण के लिए सेवा प्रक्रियाओं से इनकार करना कॉल करें fork/ exec। ऐसे मामले में, सेवाओं को सेवा खाते में अपग्रेड करने की आवश्यकता नहीं है, उन्हें इसके साथ शुरू किया जा सकता है।
    1. आपको जरूरत नहीं है, लेकिन बस एक उपयोग करने योग्य पासवर्ड के बिना और एक गैर-कार्यशील शेल (जैसे /bin/false) के साथ एक खाता बनाना चाहिए और यह एक नियमित उपयोगकर्ता द्वारा उपयोग करने योग्य नहीं होगा, अर्थात स्थानीय या दूरस्थ रूप से लॉग इन करने का कोई तरीका नहीं होगा (जैसे के माध्यम से ssh) खाता नाम का उपयोग। अधिकांश सीमाओं की तरह, रूट खाते का उपयोग करना या sudoइसे दूर करने की अनुमति देना।

1

एक सेवा खाते में उदाहरण के लिए शेल का उपयोग करने की क्षमता नहीं हो सकती है। इसका उपयोग प्रतिबंधित दायरे और विशेषाधिकार के साथ सेवाओं (डेमन) को निष्पादित करने के लिए किया जाता है। मेरी राय है कि आप इसे एक नियमित उपयोगकर्ता के रूप में बना सकते हैं, बस अधिकारों और समूह सदस्यता से सावधान रहें। हालाँकि, अधिकांश समय आप क्योंकि प्रोग्राम स्वचालित रूप से स्थापना के दौरान उन्हें नहीं बनाते हैं। देख लेना/etc/passwd root:x:0:0:root:/root:/bin/bash

0 यूआईडी है, यह उपयोगकर्ता के स्थान में खाते के पदानुक्रम की विशेषता है, रूट हर किसी से ऊपर है, फिर आपके पास समूह की सदस्यता :rootहै घर की निर्देशिका /rootअंत में खाते द्वारा उपयोग किए जाने वाले शेल /bin/bashको 'लॉग इन' सिस्टम में उपयोग करना है।

आप /usr/sbin/nologinउस खाते के लिए उपयोग कर सकते हैं जिसे आप लॉगिन विशेषाधिकार नहीं चाहते हैं।

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