मैं उपयोगकर्ता और सेवा खाते के बीच अंतर जानना चाहूंगा।
मुझे पता है कि उदाहरण के Jenkins
लिए ubuntu में स्थापित उपयोगकर्ता नहीं है, बल्कि सेवा खाता है ।
- सेवा खाते का उपयोग क्या है?
- जब हमें उनकी आवश्यकता है?
- मैं सेवा खाता कैसे बना सकता हूं?
मैं उपयोगकर्ता और सेवा खाते के बीच अंतर जानना चाहूंगा।
मुझे पता है कि उदाहरण के Jenkins
लिए ubuntu में स्थापित उपयोगकर्ता नहीं है, बल्कि सेवा खाता है ।
जवाबों:
उपयोगकर्ता खातों का उपयोग वास्तविक उपयोगकर्ताओं द्वारा किया जाता है, सेवा खातों का उपयोग सिस्टम सेवाओं जैसे वेब सर्वर, मेल ट्रांसपोर्ट एजेंट, डेटाबेस आदि द्वारा किया जाता है। । UID 0 को छोड़कर, सेवा खातों में कोई विशेष विशेषाधिकार नहीं हैं। सेवा खाते - और आमतौर पर कर सकते हैं - स्वयं के विशिष्ट संसाधन, यहां तक कि विशेष फ़ाइलों को भी उपकरण, लेकिन उनके पास सुपरसुसर जैसे विशेषाधिकार नहीं हैं।
सेवा खातों को सामान्य उपयोगकर्ता खातों (जैसे का उपयोग करके useradd
) की तरह बनाया जा सकता है । हालाँकि, सेवा खाते आमतौर पर सेवा सॉफ्टवेयर की स्थापना पर पैकेज प्रबंधक द्वारा बनाए और कॉन्फ़िगर किए जाते हैं। इसलिए, यहां तक कि एक व्यवस्थापक के रूप में आपको सेवा खातों के निर्माण से शायद ही कभी संबंधित होना चाहिए।
अच्छे कारण के लिए: उपयोगकर्ता खातों के विपरीत, सेवा खातों में अक्सर "उचित" लॉगिन शेल नहीं होता है, अर्थात उनके पास /usr/sbin/nologin
लॉगिन शेल (या पुराने दिनों में वापस /bin/false
) के रूप में होता है। इसके अलावा, सेवा खातों को आमतौर पर बंद कर दिया जाता है, अर्थात यह लॉगिन करने के लिए संभव नहीं है (पारंपरिक के लिए /etc/passwd
और /etc/shadow
यह पासवर्ड हैश को मनमाने मूल्यों जैसे *
या पर सेट करके प्राप्त किया जा सकता है x
)। यह दुरुपयोग ( रक्षा में गहराई ) के खिलाफ सेवा खातों को सख्त करना है ।
प्रत्येक सेवा के लिए अलग-अलग सेवा खाते होने से दो मुख्य उद्देश्य होते हैं: यह एक सेवा ( कंपार्टमेंटलाइज़ेशन ) के साथ एक घटना के मामले में प्रभाव को कम करने के लिए एक सुरक्षा उपाय है , और यह प्रशासन को सरल बनाता है क्योंकि यह ट्रैक करना आसान हो जाता है कि संसाधन किस सेवा से संबंधित हैं । देखें इस या इस अधिक जानकारी के लिए संबंधित प्रश्नों पर जवाब।
मूल रूप से, उपयोगकर्ताओं को सिस्टम का उपयोग करके मानव के अनुरूप बनाने का इरादा था, इसलिए नाम। प्रत्येक प्रक्रिया एक विशेष उपयोगकर्ता के रूप में चलती है, और प्रत्येक फ़ाइल किसी विशेष उपयोगकर्ता के स्वामित्व में है। एक विशेष उपयोगकर्ता, जिसे रूट कहा जाता है, उन चीजों के लिए उपयोग किया जाता है जो किसी विशेष मानव उपयोगकर्ता से संबंधित नहीं हैं, अर्थात ऑपरेटिंग सिस्टम। चूंकि जड़ ऑपरेटिंग सिस्टम से मेल खाती है, इसलिए इसमें सभी विशेषाधिकार हैं।
जल्द ही लोगों ने पाया कि व्यापक विशेषाधिकार के बिना, कई सिस्टम उपयोगकर्ता बनाना सुविधाजनक था। यह एक मशीन पर चलने वाली विभिन्न सेवाओं को अलग करने की अनुमति देता है, ताकि वे एक-दूसरे के पैर की उंगलियों पर न चलें। एक सेवा खाता (या "सिस्टम खाता", ये दो शब्द समानार्थक हैं) वह है जो सिस्टम का उपयोग करने वाले किसी व्यक्ति के बजाय सिस्टम पर चलने वाली सेवा से मेल खाता है। आपके पास आमतौर पर सिस्टम पर चलने वाले प्रत्येक कार्य के लिए एक सेवा खाता होता है, जिसमें विशेषाधिकारों का अपना सेट होता है (जैसे कि इसकी अपनी फ़ाइलें, अपने नेटवर्क पोर्ट्स, आदि)।
मानव बनाम प्रणाली / सेवा खाते की कोई औपचारिक परिभाषा नहीं है। कर्नेल परवाह नहीं करता है (यूआईडी 0 के साथ उपयोगकर्ता को कई विशेषाधिकार देने के अलावा)। ज्यादातर प्रशासन आदेशों की परवाह नहीं करते हैं। कुछ विशिष्ट अंतर हैं:
/bin/sh
या /bin/bash
या /bin/csh
। कुछ सिस्टम उपयोगकर्ताओं के पास एक शेल (लगभग हमेशा /bin/sh
) होता है, अन्य नहीं करते हैं, इस पर निर्भर करता है कि उनका उपयोग कैसे किया जाता है (उदाहरण के su foo
लिए foo
शेल की आवश्यकता होती है)।/etc/passwd
कुछ अन्य फ़ाइल में नहीं है , जैसे कि /etc/shadow
।/home
(या कुछ साइट-विशिष्ट स्थान) के अंतर्गत होती है, जबकि एक सिस्टम उपयोगकर्ता की होम निर्देशिका आमतौर पर अंडर /home
नहीं होती है और मौजूद नहीं हो सकती है (लेकिन अपवाद हैं)।उन साइटों पर जहां खातों को कई मशीनों में साझा किया जाता है, आमतौर पर एक केंद्रीय सर्वर होता है जिसमें उपयोगकर्ता सूची होती है, जो NIS या LDAP के माध्यम से सुलभ होती है । passwd
में प्रवेश /etc/nsswitch.conf
निर्दिष्ट जहाँ उपयोगकर्ता जानकारी प्राप्त करने के। /etc/passwd
नेटवर्क-वाइड डेटाबेस से स्थानीय और वास्तविक उपयोगकर्ताओं में सिस्टम उपयोगकर्ता होना आम है , लेकिन कभी-कभी नेटवर्क-वाइड डेटाबेस में सिस्टम उपयोगकर्ता होते हैं (लगातार यूआईडी को लागू करने के लिए, जो सर्वर और डेटा प्रतिकृति की सुविधा देता है), और कभी-कभी होते हैं। स्थानीय फ़ाइल में मानव उपयोगकर्ता (नेटवर्क चालू होने पर भी उन्हें लॉग इन करने के लिए)।
सिस्टम उपयोगकर्ता के रूप में प्रच्छन्न एक मानव-सुलभ खाता आमतौर पर एक वास्तविक नाम नहीं होता है, लेकिन एक लॉगिन शेल होता है, और सिस्टम रेंज में एक उपयोगकर्ता आईडी होने के दौरान एक पासवर्ड सेट या एक एसएसएच कुंजी होता है। वास्तव में, एक वास्तविक प्रणाली खाते का उपयोग करना बेहतर होगा, जिसके निष्कासन से कुछ सेवा काम करना बंद कर देगी। लेकिन संभावित हमलों का पता लगाने के लिए आपके पास कोई कठिन और तेज़ नियम नहीं हो सकते हैं: परिभाषा के अनुसार, हमलावर नियमों का पालन नहीं करते हैं।
सेवा खातों और मानव खातों को एक ही कमांड द्वारा प्रबंधित किया जाता है और एक ही फाइलों में दर्ज किया जाता है। खाता निर्माण कमांड में मानव बनाम सेवा उपयोगकर्ताओं के लिए उचित चूक सेट करने के लिए विकल्प हो सकते हैं, उदाहरण के लिए उचित रेंज में उपयोगकर्ता आईडी लेने के लिए, और एक मानव के लिए पासवर्ड के लिए संकेत देने और सेवा के लिए पासवर्ड प्रमाणीकरण अक्षम करने के लिए। उदाहरण के लिए, लिनक्स पर adduser
बनाम adduser --system
या useradd
बनाम useradd -r
।
init
, systemd
या समान, जो रूट के रूप में चलते हैं, जोखिमों को सीमित करने के लिए सेवा खाते में जल्दी से डाउनग्रेड करते हैं। उपयोग किए गए ओएस के आधार पर, आवेदन खातों को नियमित खातों की तुलना में अधिक विशेषाधिकार दिए जा सकते हैं, उदाहरण के लिए विशेषाधिकार प्राप्त टीसीपी पोर्ट से बांधने का अधिकार, या इसके विपरीत एक नियमित उपयोगकर्ता की तुलना में उनके विशेषाधिकार कम हो गए हैं, उदाहरण के लिए सेवा प्रक्रियाओं से इनकार करना कॉल करें fork
/ exec
। ऐसे मामले में, सेवाओं को सेवा खाते में अपग्रेड करने की आवश्यकता नहीं है, उन्हें इसके साथ शुरू किया जा सकता है।/bin/false
) के साथ एक खाता बनाना चाहिए और यह एक नियमित उपयोगकर्ता द्वारा उपयोग करने योग्य नहीं होगा, अर्थात स्थानीय या दूरस्थ रूप से लॉग इन करने का कोई तरीका नहीं होगा (जैसे के माध्यम से ssh
) खाता नाम का उपयोग। अधिकांश सीमाओं की तरह, रूट खाते का उपयोग करना या sudo
इसे दूर करने की अनुमति देना।एक सेवा खाते में उदाहरण के लिए शेल का उपयोग करने की क्षमता नहीं हो सकती है। इसका उपयोग प्रतिबंधित दायरे और विशेषाधिकार के साथ सेवाओं (डेमन) को निष्पादित करने के लिए किया जाता है। मेरी राय है कि आप इसे एक नियमित उपयोगकर्ता के रूप में बना सकते हैं, बस अधिकारों और समूह सदस्यता से सावधान रहें। हालाँकि, अधिकांश समय आप क्योंकि प्रोग्राम स्वचालित रूप से स्थापना के दौरान उन्हें नहीं बनाते हैं। देख लेना/etc/passwd
root:x:0:0:root:/root:/bin/bash
0 यूआईडी है, यह उपयोगकर्ता के स्थान में खाते के पदानुक्रम की विशेषता है, रूट हर किसी से ऊपर है, फिर आपके पास समूह की सदस्यता :root
है घर की निर्देशिका /root
अंत में खाते द्वारा उपयोग किए जाने वाले शेल /bin/bash
को 'लॉग इन' सिस्टम में उपयोग करना है।
आप /usr/sbin/nologin
उस खाते के लिए उपयोग कर सकते हैं जिसे आप लॉगिन विशेषाधिकार नहीं चाहते हैं।