क्यों एक उपयोगकर्ता syslog है?


15

जब मैं जांच करता /var/logहूं, तो मुझे कुछ बहुत अजीब लगता है

me@me:~$ ls -lt /var/log |head -6 '
total 160368
-rw-r-----  1 syslog            adm              19919118 Jan 15 16:55 auth.log
-rw-r-----  1 syslog            adm             139702302 Jan 15 16:55 syslog
-rw-r-----  1 syslog            adm                191122 Jan 15 16:55 mail.log
-rw-r-----  1 syslog            adm               2210432 Jan 15 16:32 kern.log
-rw-r--r--  1 root              root              1741863 Jan 15 14:22 dpkg.log

ध्यान दें कि पहले चार लॉग फ़ाइल का स्वामी है syslog। यह अजीब है, क्योंकि मेरे सिस्टम पर केवल एक उपयोगकर्ता है:

me@me~$ users
me

syslogउपयोगकर्ता नाम एक फ़ाइल नाम क्यों हो सकता है ?


6
मैं आपको विश्वास दिलाता हूं कि आपके सिस्टम पर एक से अधिक उपयोगकर्ता हैं। मुझे पता है कि आपका मतलब "खाता और घर की निर्देशिका से जुड़ा मानव उपयोगकर्ता" है, लेकिन सभी प्रणालियों के लिए "उपयोगकर्ता" की धारणा इससे कहीं अधिक व्यापक है।

कुछ देर में देख लें /etc/passwd। मैं रूट को छोड़कर, 36 भूमिका उपयोगकर्ता गिनता हूं। इसके अलावा, कोशिश करें - man usersआप मान रहे हैं (गलत तरीके से) कमांड क्या करता है।
चिरलीस-स्ट्राइक-

जवाबों:


26

यह आपके सिस्टम तक पहुँचने पर सुरक्षा और अनुमतियों के साथ करना है।

और नहीं, आपके पास अपने स्वयं के उपयोगकर्ता की तुलना में बहुत अधिक उपयोगकर्ता हैं। "रूट", "डेमॉन", "बिन", "गेम", "कोई नहीं" और "सूची" है।

एक है more /etc/passwdआपके सिस्टम पर उपयोगकर्ताओं की सूची के लिए। आपको "/ usr / sbin / nologin" के साथ बहुत सारी लाइनें दिखाई देंगी। इसका मतलब है कि उन लोगों को एक सामान्य उपयोगकर्ता के रूप में उपयोग नहीं किया जा सकता है जैसे आपके स्वयं के उपयोगकर्ता लॉगिन के साथ। तीसरा कॉलम यूजर आईडी है। 1000 से नीचे के सभी उपयोगकर्ता आईडी छद्म उपयोगकर्ता हैं। आपका पहला sudo उपयोगकर्ता (सिस्टम को स्थापित करने वाला) डिफ़ॉल्ट रूप से 1000 है।

मूल रूप से उपयोगकर्ता syslog को /var/log/निर्देशिका का उपयोग करने की अनुमति है जो रूट के स्वामित्व वाली निर्देशिका के रूप में सेट है । निर्देशिका पर अनुमतियों से समझौता न करने के लिए (यानी, अनुमतियों को कम करें ताकि अन्य उपयोगकर्ता इसका उपयोग कर सकें), यह उपयोगकर्ता बनाया गया था।

ऐसा ही Apache और MySQL के लिए उपयोगकर्ता के साथ किया जाता है (जब आप इन्हें स्थापित करते हैं तो www-data उपयोगकर्ता और समूह और एक MySQL उपयोगकर्ता और समूह देखेंगे), लेकिन इसका उपयोग चीजों के भार के लिए किया जाता है। एक समूह "डायलआउट" है जिसका उपयोग उपकरणों को बाह्य उपकरणों तक पहुंचने के लिए किया जाता है। उपयोगकर्ताओं को इस समूह में जोड़ा जाता है ताकि उपयोगकर्ता इन उपकरणों का उपयोग कर सके। अन्यथा आपको अनुमति अस्वीकृत त्रुटि मिल जाएगी। यह दो तरीके से काम करता है: उपयोगकर्ता पहुंच से इनकार करना मतलब समूह को हटाना।


हालांकि यह संख्या हमेशा 1000 नहीं रही है। मैं सिस्टम जो एक लंबे पर्याप्त इतिहास था कि वास्तविक उपयोगकर्ताओं की आईडी से 20. शुरू कर दिया पर काम किया है
kasperd

1
मुझे पता है लेकिन उबंटू हमेशा 1000 पर शुरू होता है। उदाहरण के लिए
रेडहैट

हां, लेकिन उपयोगकर्ता आवश्यक रूप से स्थानीय रूप से निर्मित नहीं हैं। मेरे मामले में वे एनआईएस से अधिक प्राप्त हुए थे, इन दिनों यह संभवतया एलडीएपी था।
कैस्परर्ड

20 से शुरू होने वाले वास्तविक उपयोगकर्ता गंभीरता से एक डेबियन-आधारित डिस्ट्रो को तोड़ देंगे। डेबियन आधारित प्रणालियों पर यूआईडी 0-99 विशेष रूप से विशिष्ट उपयोगों के लिए डेबियन परियोजना द्वारा आवंटित किए जाते हैं।
पीटर ग्रीन

1
@PaddyLandau / bin / false सूचित किए बिना लॉगिन से बाहर निकल जाएगा। nologin को एक संदेश दिखाना चाहिए "यह खाता वर्तमान में उपलब्ध नहीं है।" (/etc/nologin.txt इस नोटिस रखती है)
Rinzwind

8

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

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

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

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

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


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


7

क्योंकि syslog एक फ़ाइल नहीं है; यह सिस्टम डेमॉन और एप्लीकेशन मैसेज (डिबग, एरर, वार्न और इंफो) को फाइलों में स्टोर करने के लिए सिस्टम द्वारा उपयोग किया जाने वाला एक डेमन है।

सिसलॉग के संक्षिप्त इतिहास के लिए यहां पढ़ें ।

अन्य वितरणों में, उदाहरण के लिए, Red Hat Linux पर आधारित, सिस्टम के लिए syslog आउटपुट को फाइल में संग्रहीत किया जाता है /var/log/messages। यह कॉन्फ़िगरेशन पर निर्भर करता है।

जैसा कि रिन्जविंड कहता है, सुरक्षा कारणों से ऑपरेटिंग सिस्टम में विभिन्न घटक एक विशिष्ट उपयोगकर्ता के साथ चलते हैं, और प्रत्येक उपयोगकर्ता के अपने अधिकार हैं। उदाहरण के लिए, syslog में कम से कम /var/logफ़ोल्डर पर अनुमति है ।

एक प्रणाली में कई सेवाएं होती हैं, और आमतौर पर प्रत्येक सेवा के लिए या सेवाओं के एक छोटे समूह के लिए उपयोगकर्ता होते हैं। उदाहरण के लिए, apache get www-data|httpd|apache। आम तौर पर इन डेमॉन उपयोगकर्ताओं को सुरक्षा लीक से बचने के लिए बैश का उपयोग नहीं मिलता है।

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