
लिनक्स सिसएडमिन परीक्षण प्रश्नों और उत्तरों का एक संग्रह। इन प्रश्नोत्तरों के साथ विभिन्न क्षेत्रों में अपने ज्ञान और कौशल का परीक्षण करें।
:star:
"एक महान एडमिन को सब कुछ जानने की ज़रूरत नहीं है, लेकिन उन्हें असंभव प्रोजेक्ट के लिए अद्भुत समाधान देने में सक्षम होना चाहिए।" - cwheeler33 (ServerFault)
:star:
"मेरा कौशल चीजों को काम करने में है, अरबों तथ्यों को जानने में नहीं। [...] अगर मुझे किसी सिस्टम को ठीक करना है, तो मैं समस्या की पहचान करूँगा, लॉग जांचूँगा और एरर देखूँगा। अगर मुझे कोई समाधान लागू करना है, तो मैं सही समाधान पर शोध करूँगा, उसे लागू और दस्तावेज़ित करूँगा, बाद में केवल सामान्य समझ रहूंगा कि यह कैसे काम करता है जब तक कि मैं इसके साथ बार-बार इंटरैक्ट न करूँ... यही कारण है कि इसे दस्तावेज़ित किया गया है।" - Sparcrypt (Reddit)
ℹ️ इस प्रोजेक्ट में 284 परीक्षण प्रश्न और उत्तर शामिल हैं जिनका उपयोग आपके ज्ञान का परीक्षण करने या Linux (*nix) System Administrator जैसे पद के लिए साक्षात्कार/परीक्षा के दौरान किया जा सकता है।
✔️ उत्तर केवल उदाहरण हैं और पूरे विषय को समाप्त नहीं करते हैं। उनमें से अधिकांश में गहरी समझ के लिए उपयोगी संसाधन शामिल हैं।
⚠️ *** से चिह्नित प्रश्नों का अभी तक उत्तर नहीं है या उत्तर अधूरा है - इन्हें जोड़ने के लिए pull request बनाएँ!
🚥 अगर आपको कुछ ऐसा लगता है जो समझ में नहीं आता, या कुछ सही नहीं लगता, तो कृपया pull request बनाएँ और अपने बदलावों या टिप्पणियों के बारे में वैध और अच्छी तरह से समझाए गए स्पष्टीकरण जोड़ें।
📚 अपने ज्ञान/कौशल को बेहतर बनाने के लिए कृपया devops-interview-questions देखें। यह वास्तव में दिलचस्प लगता है।
» All suggestions are welcome «
मेरा पसंदीदा Linux वितरण:
उपयोगी संसाधन:
GNU वास्तव में एक OS नहीं है। यह स्वतंत्र सॉफ़्टवेयर को नियंत्रित करने वाले नियमों या दर्शन का एक सेट है, जिसने साथ ही एक OS बनाने की कोशिश करते हुए कई टूल्स को जन्म दिया। इसलिए GNU टूल्स मूल रूप से उन टूल्स के ओपन संस्करण हैं जो पहले से मौजूद थे, लेकिन ओपन सॉफ़्टवेयर के सिद्धांतों के अनुरूप फिर से लागू किए गए। GNU/Linux उन टूल्स और Linux कर्नेल का एक मिश्रण है जो एक पूर्ण OS बनाता है, लेकिन अन्य GNU भी हैं, जैसे GNU/Hurd।
Unix और BSD POSIX के "पुराने" कार्यान्वयन हैं जो विभिन्न स्तरों पर "बंद स्रोत" हैं। Unix आमतौर पर पूरी तरह से बंद स्रोत है, लेकिन Unix की उतनी ही किस्में हैं जितनी Linux (यदि अधिक नहीं)। BSD को आमतौर पर "ओपन" नहीं माना जाता था, लेकिन इसे अपनी रिलीज़ के समय बहुत खुला माना जाता था। इसके लाइसेंसिंग ने उस समय के अधिक "ओपन" लाइसेंसों की तुलना में बहुत कम प्रतिबंधों के साथ व्यावसायिक उपयोग की अनुमति दी।
Linux इनमें से सबसे नया है। कड़ाई से बोलते हुए, यह "सिर्फ एक कर्नेल" है; हालांकि, सामान्य तौर पर, जब GNU टूल्स और कई अन्य कोर घटकों के साथ जोड़ा जाता है तो इसे एक पूर्ण OS माना जाता है।
इनके बीच मुख्य शासन अंतर उनके आदर्श हैं। Unix, Linux और BSD के अलग-अलग आदर्श हैं जिन्हें वे लागू करते हैं। वे सभी POSIX हैं, और सभी मूल रूप से विनिमेय हैं। वे कुछ समान समस्याओं को अलग-अलग तरीकों से हल करते हैं। इसलिए आदर्शों और वे POSIX मानकों को कैसे लागू करना चुनते हैं, इसके अलावा बहुत कम अंतर है।
अधिक जानकारी के लिए मैं GNU, OSS, Linux, BSD और UNIX के निर्माण पर एक संक्षिप्त लेख पढ़ने का सुझाव देता हूँ। वे अपने व्यक्तिगत विचारों की ओर झुके होंगे, लेकिन उन लेखों से आपको अंतरों की बेहतर समझ मिलनी चाहिए।
उपयोगी संसाधन:
CLI Command Line Interface या Command Language Interpreter का संक्षिप्त रूप है। कमांड लाइन आपके सिस्टम/कंप्यूटर को नियंत्रित करने के सबसे शक्तिशाली तरीकों में से एक है।
यूनिक्स जैसी प्रणालियों में, CLI वह इंटरफ़ेस है जिसके द्वारा उपयोगकर्ता सिस्टम को निष्पादित करने के लिए कमांड टाइप कर सकता है। CLI बहुत शक्तिशाली है, लेकिन त्रुटि-सहनशील नहीं है।
CLI आपको अपने सिस्टम के आंतरिक भागों और कोड के साथ अधिक सूक्ष्म तरीके से हेरफेर करने की अनुमति देता है। यह GUI की तुलना में अधिक लचीलापन और नियंत्रण प्रदान करता है, चाहे कोई भी OS उपयोग किया जाए। कई प्रोग्राम जिन्हें आप अपने सॉफ़्टवेयर में उपयोग करना चाहते हैं, जो कहते हैं Github पर होस्ट किए गए हैं, उन्हें चलाने के लिए CLI पर कुछ कमांड चलाने की भी आवश्यकता होती है।
मेरे पसंदीदा टूल्स
screen - मुफ़्त टर्मिनल मल्टीप्लेक्सर, मैं एक सत्र शुरू कर सकता हूँ और मेरे टर्मिनल सेव हो जाएंगे भले ही आपका कनेक्शन टूट जाए, ताकि आप बाद में या घर से फिर से शुरू कर सकेंssh - सीखने के लिए सबसे मूल्यवान समग्र कमांड, मैं इसका उपयोग कुछ अद्भुत काम करने के लिए कर सकता हूँ:
sshfs के साथ इंटरनेट पर एक फ़ाइल सिस्टम माउंट करनाrsync सर्वर के खिलाफ चलता है बिना rsync डेमॉन के, ssh के माध्यम से स्वयं एक शुरू करकेvi/vim - सबसे लोकप्रिय और शक्तिशाली टेक्स्ट एडिटर है, यह सार्वभौमिक है, यह बहुत तेज़ काम करता है, बड़ी फ़ाइलों पर भीbash-completion - शेल के लिए कई पूर्वनिर्धारित पूर्णता नियम शामिल हैंBASH मेरा पसंदीदा है। यह वास्तव में एक प्राथमिकता की तरह है, जहाँ मुझे इसकी सिंटैक्स पसंद है और यह मेरे लिए "क्लिक" करता है। इनपुट/आउटपुट रीडायरेक्शन सिंटैक्स (>>, << 2>&1, 2>, 1>, आदि) C++ के समान है जो इसे पहचानने में मेरे लिए आसान बनाता है।
मुझे ZSH शेल भी पसंद है, क्योंकि यह BASH की तुलना में अधिक अनुकूलन योग्य है। इसमें Oh-My-Zsh फ्रेमवर्क, शक्तिशाली संदर्भ-आधारित टैब पूर्णता, स्टेरॉयड पर पैटर्न मैचिंग/ग्लोबिंग, लोड करने योग्य मॉड्यूल और बहुत कुछ है।
उपयोगी संसाधन:
man [commandname] का उपयोग किसी कमांड का विवरण देखने के लिए किया जा सकता है (उदा.: man less, man cat)
-h या --help कुछ प्रोग्राम इस पैरामीटर को पास करने पर निर्देश प्रिंट करना लागू करेंगे (उदा.: python -h और python --help)
w - सर्वर अपटाइम के साथ बहुत सारी बढ़िया जानकारीtop - आप सभी चल रही प्रक्रियाओं को देख सकते हैं, फिर उन्हें CPU, मेमोरी उपयोग और अधिक के अनुसार क्रमबद्ध कर सकते हैंnetstat - यह जानने के लिए कि आपका सर्वर किस पोर्ट और IP पर सुन रहा है और कौन सी प्रक्रियाएँ उनका उपयोग कर रही हैंdf - फ़ाइल सिस्टम द्वारा उपयोग की जा रही उपलब्ध डिस्क स्थान की रिपोर्ट करता हैhistory - आपको बताता है कि आप वर्तमान में जिस उपयोगकर्ता से जुड़े हैं, उसके द्वारा पहले क्या चलाया गया थाउपयोगी संसाधन:
ls -al आउटपुट में फ़ील्ड का क्या मतलब है?आउटपुट के क्रम में:```bash -rwxrw-r-- 1 root root 2048 Jan 13 07:11 db.dump
- फ़ाइल अनुमतियाँ,
- लिंकों की संख्या,
- स्वामी का नाम,
- स्वामी समूह,
- फ़ाइल आकार,
- अंतिम संशोधन का समय,
- फ़ाइल/निर्देशिका नाम
फ़ाइल अनुमतियाँ इस प्रकार प्रदर्शित की जाती हैं:
- पहला अक्षर `-` या `l` या `d` होता है, `d` एक निर्देशिका को इंगित करता है, एक `-` एक फ़ाइल को दर्शाता है, `l` एक सिमलिंक (या सॉफ्ट लिंक) है - एक विशेष प्रकार की फ़ाइल
- तीन सेट वर्ण, तीन बार, जो स्वामी, समूह और अन्य के लिए अनुमतियाँ इंगित करते हैं:
- `r` = पढ़ने योग्य
- `w` = लिखने योग्य
- `x` = निष्पादन योग्य
आपके उदाहरण `-rwxrw-r--` में, इसका मतलब है कि प्रदर्शित पंक्ति है:
- एक नियमित फ़ाइल (`-` के रूप में प्रदर्शित)
- स्वामी द्वारा पढ़ने, लिखने और निष्पादन योग्य (`rwx`)
- समूह द्वारा पढ़ने, लिखने योग्य, लेकिन निष्पादन योग्य नहीं (`rw-`)
- अन्य द्वारा पढ़ने योग्य, लेकिन लिखने या निष्पादन योग्य नहीं (`r--`)
उपयोगी संसाधन:
- [ls -al आउटपुट में फ़ील्ड का क्या अर्थ है? (मूल)](https://unix.stackexchange.com/questions/103114/what-do-the-fields-in-ls-al-output-mean)
</details>
<details>
<summary><b>आप लॉग-इन उपयोगकर्ताओं की सूची कैसे प्राप्त करते हैं?</b></summary><br>
लॉग-इन उपयोगकर्ताओं का सारांश प्राप्त करने के लिए, जिसमें उपयोगकर्ता नाम का प्रत्येक लॉगिन, जिन टर्मिनलों से उपयोगकर्ता जुड़े हैं, वे दिनांक/समय जब वे लॉग इन हुए, और संभवतः वह कंप्यूटर जिससे वे कनेक्शन बना रहे हैं, शामिल हो, दर्ज करें:```bash
# It uses /var/run/utmp and /var/log/wtmp files to get the details.
who
पृष्ठभूमि में चल रही प्रक्रिया को निष्पादित करने का सबसे महत्वपूर्ण लाभ यह है कि आप पृष्ठभूमि में अन्य प्रक्रियाओं के चलने के दौरान एक साथ कोई अन्य कार्य कर सकते हैं। इसलिए, अलग-अलग प्रक्रियाओं पर काम करते हुए पृष्ठभूमि में अधिक प्रक्रियाएं पूरी की जा सकती हैं। इसे कमांड के अंत में एक विशेष वर्ण & जोड़कर प्राप्त किया जा सकता है।
आम तौर पर वे एप्लिकेशन जिन्हें निष्पादित होने में बहुत अधिक समय लगता है और जिन्हें उपयोगकर्ता की सहभागिता की आवश्यकता नहीं होती, उन्हें पृष्ठभूमि में भेज दिया जाता है ताकि हम टर्मिनल पर अपना काम जारी रख सकें।
उदाहरण के लिए यदि आप पृष्ठभूमि में कुछ डाउनलोड करना चाहते हैं, तो आप कर सकते हैं:```bash wget https://url-to-download.com/download.tar.gz &
जब आप उपरोक्त कमांड चलाते हैं तो आपको निम्न आउटपुट मिलता है:```bash
[1] 2203
यहाँ 1 कार्य का क्रमांक है और 2203 उस कार्य का PID है।
आप निम्न कमांड का उपयोग करके पृष्ठभूमि में चल रहे कार्यों को देख सकते हैं:```bash jobs
जब आप पृष्ठभूमि में जॉब निष्पादित करते हैं तो यह आपको जॉब का PID देता है, आप निम्नलिखित कमांड का उपयोग करके पृष्ठभूमि में चल रहे जॉब को समाप्त कर सकते हैं:```bash
kill PID
PID को जॉब के PID से बदलें। यदि आपके पास केवल एक जॉब चल रहा है तो आप इसे फोरग्राउंड में ला सकते हैं:```bash fg
यदि आपके पास बैकग्राउंड में कई जॉब चल रहे हैं, तो आप फोरग्राउंड में किसी भी जॉब को ला सकते हैं:```bash
fg %#
# को नौकरी के क्रमांक से बदलें।
उपयोगी संसाधन:
पूरा किया जाना है।
(सब कुछ) रूट के रूप में चलाना बुरा है क्योंकि:
मूर्खता: कोई भी चीज़ आपको लापरवाही से गलती करने से नहीं रोकती। यदि आप सिस्टम को किसी भी संभावित हानिकारक तरीके से बदलने का प्रयास करते हैं, तो आपको sudo का उपयोग करना होगा, जो एक विराम (पासवर्ड दर्ज करते समय) सुनिश्चित करता है ताकि आप यह सुनिश्चित कर सकें कि आप गलती करने वाले नहीं हैं।
सुरक्षा: यदि आप व्यवस्थापक उपयोगकर्ता का लॉगिन खाता नहीं जानते हैं तो हैक करना कठिन है। रूट का मतलब है कि आपके पास पहले से ही व्यवस्थापक क्रेडेंशियल्स के एक कार्यशील सेट का आधा हिस्सा है।
आपको वास्तव में इसकी आवश्यकता नहीं है: यदि आपको रूट के रूप में कई कमांड चलाने की आवश्यकता है, और जब sudo समाप्त हो गया है तो कई बार अपना पासवर्ड दर्ज करने से नाराज़ हैं, तो आपको बस sudo -i करने की आवश्यकता है और अब आप रूट हैं। पाइप का उपयोग करके कुछ कमांड चलाना चाहते हैं? तो sudo sh -c "command1 | command2" का उपयोग करें।
आप इसका उपयोग हमेशा रिकवरी कंसोल में कर सकते हैं: रिकवरी कंसोल आपको किसी बड़ी गलती से उबरने, या किसी ऐप के कारण हुई समस्या को ठीक करने की अनुमति देता है (जिसे आपको अभी भी sudo के रूप में चलाना था)। इस मामले में उबंटू के पास रूट खाते के लिए कोई पासवर्ड नहीं है, लेकिन आप इसे बदलने के लिए ऑनलाइन खोज सकते हैं - इससे किसी भी व्यक्ति के लिए जिसकी आपके बॉक्स तक भौतिक पहुंच है, नुकसान पहुंचाना कठिन हो जाएगा।
उपयोगी संसाधन:
आप दोनों के लिए top/htop का उपयोग करेंगे। free और vmstat कमांड का उपयोग करके हम क्रमशः भौतिक और वर्चुअल मेमोरी आँकड़े प्रदर्शित कर सकते हैं। sar कमांड की मदद से हम CPU उपयोग और अन्य आँकड़े देख सकते हैं (लेकिन अधिकांश सिस्टम में sar स्थापित भी नहीं है)।
उपयोगी संसाधन:
लिनक्स लोड एवरेज "सिस्टम लोड एवरेज" हैं जो चल रहे थ्रेड (कार्य) की मांग को एक औसत संख्या के रूप में दिखाते हैं जो चल रहे और प्रतीक्षा कर रहे थ्रेड की संख्या है। यह मांग को मापता है, जो सिस्टम वर्तमान में प्रोसेस कर रहा है उससे अधिक हो सकती है। अधिकांश उपकरण 1, 5 और 15 मिनट के लिए तीन औसत दिखाते हैं।
ये 3 संख्याएँ विभिन्न CPU के लिए संख्याएँ नहीं हैं। ये संख्याएँ एक निश्चित समय अवधि (पिछले 1, 5 और 15 मिनट) के लिए लोड संख्या के माध्य मान हैं।
लोड एवरेज को आमतौर पर "रन कतार की औसत लंबाई" के रूप में वर्णित किया जाता है। इसलिए कुछ CPU-खपत प्रक्रियाएँ या थ्रेड लोड एवरेज को 1 से ऊपर बढ़ा सकते हैं। यदि लोड एवरेज CPU कोर की कुल संख्या से कम है तो कोई समस्या नहीं है। लेकिन अगर यह CPU की संख्या से अधिक हो जाता है, तो इसका मतलब है कि कुछ थ्रेड/प्रक्रियाएँ कतार में रहेंगी, चलने के लिए तैयार, लेकिन मुफ्त CPU की प्रतीक्षा कर रही हैं।
इसका उद्देश्य आपको सिस्टम की स्थिति का एक विचार देना है, जो कई समय अवधियों में औसत है। चूंकि यह औसत है, इसलिए सिस्टम पर भारी लोड डालने के बाद 0 पर वापस जाने में समय लगता है।
कुछ व्याख्याएँ:
उपयोगी संसाधन:
पासवर्ड सिस्टम पर कहीं भी संग्रहीत नहीं होते हैं। /etc/shadow में जो संग्रहीत है वे पासवर्ड के तथाकथित हैश हैं।
किसी टेक्स्ट का हैश टेक्स्ट (पासवर्ड) पर तथाकथित एकतरफा फ़ंक्शन करके बनाया जाता है, इस प्रकार जाँच करने के लिए एक स्ट्रिंग बनाई जाती है। डिज़ाइन के अनुसार उस प्रक्रिया को उलटना "असंभव" (कम्प्यूटेशनल रूप से अव्यावहारिक) है।
पुराने यूनिक्स वेरिएंट एन्क्रिप्टेड पासवर्ड को /etc/passwd में प्रत्येक खाते के बारे में अन्य जानकारी के साथ संग्रहीत करते थे।
नए वेरिएंट केवल /etc/passwd में प्रासंगिक फ़ील्ड में * रखते हैं और पासवर्ड को संग्रहीत करने के लिए /etc/shadow का उपयोग करते हैं, आंशिक रूप से यह सुनिश्चित करने के लिए कि जब उन्हें केवल अन्य सामग्री की आवश्यकता हो तो किसी को पासवर्ड तक पढ़ने की पहुँच न मिले (shadow आमतौर पर passwd की तुलना में अधिक मजबूती से सुरक्षित होता है)।
अधिक जानकारी के लिए man crypt, man shadow, man passwd देखें।
उपयोगी संसाधन:
सभी निर्देशिकाओं को बदलने के लिए उदाहरण के लिए 755 (drwxr-xr-x):```bash
find /opt/data -type d -exec chmod 755 {} ;
सभी फ़ाइलों को बदलने के लिए, उदाहरण के लिए **644** (`-rw-r--r--`):```bash
find /opt/data -type f -exec chmod 644 {} \;
उपयोगी संसाधन:
ऐसा लगता है कि किसी बिंदु पर डिफ़ॉल्ट PATH पर्यावरण चर को ओवरराइट किया जा रहा है। आपके पास जिस प्रकार की त्रुटियां हैं, वह इंगित करता है कि PATH में उदाहरण के लिए /bin शामिल नहीं है, जहां कमांड (बैश सहित) स्थित हैं।
आपकी bash स्क्रिप्ट या कमांड को डिबग करना शुरू करने का एक तरीका -x विकल्प के साथ एक सबशेल शुरू करना होगा:```bash
bash --login -x
यह आपको प्रत्येक कमांड और उसके तर्क दिखाएगा, जो उस शेल को शुरू करने पर निष्पादित होते हैं।
साथ ही `PATH` वेरिएबल मान दिखाना बहुत उपयोगी है:```bash
echo $PATH
यदि आप इसे चलाते हैं:```bash PATH=/bin:/sbin:/usr/bin:/usr/sbin
अधिकांश कमांड काम करने लगेंगे - और फिर आप `~/.bash_profile` को `~/.bashrc` के बजाय संपादित कर सकते हैं और वहां `PATH` को रीसेट करने वाली किसी भी चीज़ को ठीक कर सकते हैं। **रूट** और अन्य उपयोगकर्ताओं के लिए डिफ़ॉल्ट `PATH` वेरिएबल मान `/etc/profile` फ़ाइल में हैं।
उपयोगी संसाधन:
- [PATH में पथ को सही तरीके से कैसे जोड़ें?](https://unix.stackexchange.com/questions/26047/how-to-correctly-add-a-path-to-path)
</details>
<details>
<summary><b>आप `CTRL + C` टाइप कर रहे हैं लेकिन आपकी स्क्रिप्ट अभी भी चल रही है। इसे कैसे रोकें? </b></summary><br>
अधिकांश मामलों में, आप `CTRL + C` कीबोर्ड संयोजन का उपयोग करके चल रही स्क्रिप्ट को रोक सकते हैं। यह स्क्रिप्ट को एक इंटरप्ट सिग्नल (SIGINT) भेजता है, जो इसके निष्पादन को समाप्त कर देता है। यदि यह काम नहीं करता है और स्क्रिप्ट अभी भी चल रही है, तो आप `CTRL + \` संयोजन का उपयोग करने का प्रयास कर सकते हैं, जो स्क्रिप्ट को एक क्विट सिग्नल (SIGQUIT) भेजता है, जो इसे तुरंत समाप्त कर सकता है।
वैकल्पिक रूप से, यदि आप टर्मिनल या कमांड लाइन इंटरफ़ेस का उपयोग कर रहे हैं, तो आप स्क्रिप्ट प्रक्रिया को सिग्नल भेजने के लिए `kill` कमांड का उपयोग करने का प्रयास कर सकते हैं। आप `ps` या `top` कमांड का उपयोग करके स्क्रिप्ट की प्रोसेस आईडी (PID) पा सकते हैं, और फिर स्क्रिप्ट को रोकने के लिए PID के साथ `kill` का उपयोग करें।
कुछ मामलों में, आपको स्क्रिप्ट को रोकने के लिए `kill -9` कमांड का उपयोग करने की आवश्यकता हो सकती है, क्योंकि यदि स्क्रिप्ट अटक गई है या प्रतिक्रिया नहीं दे रही है तो सामान्य kill कमांड काम नहीं कर सकता है। `-9` विकल्प SIGKILL सिग्नल भेजता है, जो प्रक्रिया को तुरंत रोकने के लिए मजबूर करता है।
</details>
<details>
<summary><b>`grep` कमांड क्या है? एक ही लाइन में कई स्ट्रिंग्स का मिलान कैसे करें?</b></summary><br>
`grep` उपयोगिताएँ Unix टूल का एक परिवार हैं, जिनमें `egrep` और `fgrep` शामिल हैं।
`grep` फ़ाइल पैटर्न खोजता है। यदि आप किसी अन्य कमांड के आउटपुट में किसी विशिष्ट पैटर्न की तलाश कर रहे हैं, तो `grep` प्रासंगिक लाइनों को हाइलाइट करता है। लॉग फ़ाइलों, विशिष्ट प्रक्रियाओं और अधिक की खोज के लिए इस grep कमांड का उपयोग करें।
एकाधिक स्ट्रिंग्स के मिलान के लिए:```bash
grep -E "string1|string2" filename
यदि आप प्रत्येक कमांड को तभी निष्पादित करना चाहते हैं जब पिछला सफल हुआ हो, तो उन्हें && ऑपरेटर का उपयोग करके जोड़ें:```bash
cd /my_folder && rm *.jar && svn co path to repo && mvn compile package install
यदि कमांड में से कोई एक विफल हो जाता है, तो उसके बाद के सभी अन्य कमांड निष्पादित नहीं होंगे।
यदि आप सभी कमांड को पिछले वाले के विफल होने या न होने की परवाह किए बिना निष्पादित करना चाहते हैं, तो उन्हें अर्धविराम से अलग करें:```bash
cd /my_folder; rm *.jar; svn co path to repo; mvn compile package install
आपके मामले में, मुझे लगता है कि आप पहली स्थिति चाहते हैं जहाँ अगले कमांड का निष्पादन पिछले कमांड की सफलता पर निर्भर करता है।
आप सभी कमांड को एक स्क्रिप्ट में रख सकते हैं और उसके बजाय उसे निष्पादित कर सकते हैं:```bash
#! /bin/sh
cd /my_folder
&& rm *.jar
&& svn co path to repo
&& mvn compile package install
उपयोगी संसाधन:
- [एक पंक्ति में कई linux कमांड को एक साथ निष्पादित करें (मूल)](https://stackoverflow.com/questions/13077241/execute-combine-multiple-linux-commands-in-one-line)
</details>
<details>
<summary><b>आप सभी उपयोगकर्ताओं को एक फ़ाइल पर निष्पादन पहुँच देने के लिए <code>chmod</code> को कौन सा प्रतीकात्मक निरूपण पास कर सकते हैं, बिना अन्य अनुमतियों को प्रभावित किए?</b></summary><br>```bash
chmod a+x /path/to/file
a - सभी उपयोगकर्ताओं के लिएx - निष्पादन अनुमति के लिएएक ही सिस्टम पर dir1 की सामग्री को dir2 में सिंक करने के लिए, टाइप करें:
rsync -a /path/to/dir1/ /path/to/dir2```bash rsync -av --progress --delete dir1/ dir2
- `-a`, `--archive` - संग्रह मोड
- `--delete` - गंतव्य निर्देशिकाओं से अनावश्यक फ़ाइलें हटाएं
- `-v`, `--verbose` - वर्बोज़ मोड (विस्तार बढ़ाएं)
- `--progress` - स्थानांतरण के दौरान प्रगति दिखाएं
उपयोगी संसाधन:
- [मैं दो स्थानीय निर्देशिकाओं को कैसे सिंक कर सकता हूँ? (मूल](https://unix.stackexchange.com/questions/392536/how-can-i-sync-two-local-directories)
- [rsync के साथ फ़ोल्डर्स को सिंक्रोनाइज़ करना](https://www.jveweb.net/en/archives/2010/11/synchronizing-folders-with-rsync.html)
</details>
<details>
<summary><b>कई बुनियादी रखरखाव कार्यों के लिए आपको कॉन्फ़िग फ़ाइलों को संपादित करने की आवश्यकता होती है। आपके द्वारा किए गए परिवर्तनों को पूर्ववत करने के तरीकों की व्याख्या करें।</b></summary><br>
- फ़ाइल को संपादित करने से पहले मैन्युअल रूप से बैकअप लेना (इस तरह ब्रेस विस्तार के साथ: `cp filename{,.orig}`)
- फ़ाइल जहाँ संग्रहीत है उस निर्देशिका संरचना की मैन्युअल प्रतिलिपि (जैसे `cp`, `rsync` या `tar`)
- अपने संपादक में मूल फ़ाइल का बैकअप लें (जैसे अपने संपादक कॉन्फ़िगरेशन फ़ाइल में नियम सेट करें)
- सबसे अच्छा समाधान `git` (या कोई अन्य संस्करण नियंत्रण) का उपयोग करना है ताकि कॉन्फ़िगरेशन फ़ाइलों का ट्रैक रखा जा सके (जैसे `/etc` निर्देशिका के लिए `etckeeper`)
उपयोगी संसाधन:
- [.bak एक्सटेंशन के साथ फ़ाइल का बैकअप लेना](https://unix.stackexchange.com/questions/66376/backup-file-with-bak-before-filename-extension)
- [क्या कॉन्फ़िगरेशन फ़ाइल संस्करण नियंत्रण के लिए git का उपयोग करना एक अच्छा विचार है?](https://superuser.com/questions/1037211/is-it-a-good-idea-to-use-git-for-configuration-file-version-controlling)
</details>
<details>
<summary><b>आपको 20MB से बड़ी सभी फ़ाइलें ढूंढनी हैं। आप यह कैसे करेंगे?</b></summary><br>```bash
find / -type f -size +20M
| अध्याय का प्रकार | प्रश्नों की संख्या | संक्षिप्त विवरण |
|---|
| परिचय | ||
| 🔸 सरल प्रश्न | 14 प्रश्न | आरामदेह, मजेदार और सरल - शुरुआत करने के लिए बढ़िया हैं। |
| सामान्य ज्ञान | ||
| 🔸 जूनियर sysadmin | 65 प्रश्न | काफी सरल और सीधे बुनियादी ज्ञान पर आधारित। |
| 🔸 रेगुलर sysadmin | 94 प्रश्न | प्रश्नों का मध्य स्तर यदि आपके पास अच्छा ज्ञान है। |
| 🔸 सीनियर sysadmin | 99 प्रश्न | कठिन प्रश्न और पहेलियाँ। इसे देखें यदि आप अच्छे बनना चाहते हैं। |
| गुप्त ज्ञान | ||
| 🔸 गुरु sysadmin | 12 प्रश्न | वास्तव में गहरे प्रश्न जो गुरु sysadmin को जानने के लिए हैं। |
टिप्स और हैक्स
CTRL + R से कमांड इतिहास खोजेंpopd/pushd और अन्य शेल बिल्टइन जो आपको डायरेक्टरी स्टैक में हेरफेर करने की अनुमति देते हैंCTRL + U, CTRL + E!* - पिछले कमांड के सभी आर्गुमेंट!! - पिछले कमांड का पूरा!ssh - ssh से शुरू होने वाला पिछला कमांडउपयोगी संसाधन:
विस्तृत जानकारी के लिए, जिसमें username, terminal, स्रोत कंप्यूटर का IP number, लॉगिन शुरू होने का समय, कोई idle time, process CPU cycles, job CPU cycles, और वर्तमान में चल रहे command शामिल हैं, enter:```bash
w
अंतिम लॉग इन किए गए उपयोगकर्ताओं की सूची प्रदर्शित करने के लिए भी महत्वपूर्ण है, दर्ज करें:```bash
# It uses /var/log/wtmp.
last
उपयोगी संसाधन:
या```bash grep -e "string1" -e "string2" filename
उपयोगी संसाधन:
- [grep क्या है और इसका उपयोग कैसे करें? (मूल)](https://kb.iu.edu/d/afiy)
</details>
<details>
<summary><b>फ़ाइल सामग्री कमांड को उनके विवरण के साथ समझाएं।</b></summary><br>
- `head`: किसी फ़ाइल की शुरुआत की जाँच करने के लिए।
- `tail`: फ़ाइल के अंत की जाँच करने के लिए। यह head कमांड का विपरीत है।
- `cat`: फ़ाइलों को देखने, बनाने, जोड़ने के लिए उपयोग किया जाता है।
- `more`: टर्मिनल विंडो में टेक्स्ट को पेजर रूप में प्रदर्शित करने के लिए उपयोग किया जाता है।
- `less`: टेक्स्ट को पिछली दिशा में देखने के लिए उपयोग किया जाता है और एकल पंक्ति आंदोलन प्रदान करता है।
उपयोगी संसाधन:
- [शेल प्रॉम्प्ट से टेक्स्ट फ़ाइलें देखना](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/Step_by_Step_Guide/s1-viewingtext-terminal.html)
</details>
<details>
<summary><b>SIGHUP, SIGINT, SIGKILL, और SIGTERM POSIX सिग्नल। समझाएं।</b></summary><br>
- **SIGHUP** - किसी प्रक्रिया को तब भेजा जाता है जब उसका नियंत्रण टर्मिनल बंद हो जाता है। मूल रूप से इसे प्रक्रिया को सीरियल लाइन ड्रॉप (हैंगअप) की सूचना देने के लिए डिज़ाइन किया गया था। कई डेमॉन इस सिग्नल को प्राप्त करने पर बाहर निकलने के बजाय अपनी कॉन्फ़िगरेशन फ़ाइलों को पुनः लोड करेंगे और अपनी लॉगफ़ाइलों को फिर से खोलेंगे।
- **SIGINT** - किसी प्रक्रिया को उसके नियंत्रण टर्मिनल द्वारा तब भेजा जाता है जब उपयोगकर्ता प्रक्रिया को बाधित करना चाहता है। यह सामान्यतः `Ctrl+C` दबाकर शुरू किया जाता है, लेकिन कुछ सिस्टम पर "डिलीट" कैरेक्टर या "ब्रेक" कुंजी का उपयोग किया जा सकता है।
- **SIGKILL** - किसी प्रक्रिया को तुरंत समाप्त करने (किल) के लिए भेजा जाता है। **SIGTERM** और **SIGINT** के विपरीत, इस सिग्नल को पकड़ा या अनदेखा नहीं किया जा सकता है, और प्राप्त करने वाली प्रक्रिया इस सिग्नल को प्राप्त करने पर कोई सफाई नहीं कर सकती है।
- **SIGTERM** - किसी प्रक्रिया को उसके समाप्ति का अनुरोध करने के लिए भेजा जाता है। **SIGKILL** सिग्नल के विपरीत, इसे प्रक्रिया द्वारा पकड़ा और व्याख्या या अनदेखा किया जा सकता है। यह प्रक्रिया को संसाधनों को मुक्त करने और यदि उपयुक्त हो तो स्थिति सहेजने की अनुमति देता है। **SIGINT** लगभग **SIGTERM** के समान है।
उपयोगी संसाधन:
- [POSIX सिग्नल](https://dsa.cs.tsinghua.edu.cn/oj/static/unix_signal.html)
- [यूनिक्स सिग्नल प्रोग्रामिंग का परिचय](http://titania.ctie.monash.edu.au/signals/)
</details>
<details>
<summary><b>`kill` कमांड क्या करता है?</b></summary><br>
यूनिक्स और यूनिक्स-जैसे ऑपरेटिंग सिस्टम में, `kill` एक कमांड है जिसका उपयोग किसी प्रक्रिया को सिग्नल भेजने के लिए किया जाता है। डिफ़ॉल्ट रूप से, भेजा गया संदेश समाप्ति सिग्नल होता है, जो प्रक्रिया से बाहर निकलने का अनुरोध करता है। लेकिन `kill` कुछ हद तक गलत नाम है; भेजा गया सिग्नल प्रक्रिया को मारने से कोई संबंध नहीं रखता हो सकता है।
उपयोगी संसाधन:
- [लिनक्स में "किल" कमांड में महारत हासिल करना](https://www.maketecheasier.com/kill-command-in-linux/)
</details>
<details>
<summary><b>`rm` और `rm -rf` में क्या अंतर है?</b></summary><br>
`rm` केवल नामित फ़ाइलों को हटाता है (और निर्देशिकाओं को नहीं)। `-rf` के साथ जैसा कि आप कहते हैं:
- `-r`, `-R`, `--recursive` किसी निर्देशिका की सामग्री को पुनरावर्ती रूप से हटाता है, जिसमें छिपी हुई फ़ाइलें और उपनिर्देशिकाएँ शामिल हैं
- `-f`, `--force` अस्तित्वहीन फ़ाइलों को अनदेखा करता है, कभी संकेत नहीं देता
उपयोगी संसाधन:
- [`rm -r` और `rm -f` में क्या अंतर है?](https://superuser.com/questions/1126206/what-is-the-difference-between-rm-r-and-rm-f)
</details>
<details>
<summary><b>मैं `grep` को रिकर्सिवली कैसे उपयोग करूं? कई उदाहरणों पर समझाएं। ***</b></summary>
पूरा किया जाना है।
</details>
<details>
<summary><b>`archive.tgz` लगभग 30 GB का है। आप इसकी सामग्री कैसे सूचीबद्ध करेंगे और केवल एक फ़ाइल निकालेंगे?</b></summary><br>```bash
# list of content
tar tf archive.tgz
# extract file
tar xf archive.tgz filename
उपयोगी संसाधन:
r - पढ़ने की अनुमति के लिएw - लिखने की अनुमति के लिएउपयोगी संसाधन:
So translation for that summary: "पिछले 60 मिनट में आपके सिस्टम पर संशोधित फाइलें कैसे खोजें?"
Now, we need to ensure we preserve all markdown, including the <details> and <summary> tags and <b> tags.
The output should be raw markdown, no extra markers.
Let's compile the translation.
Note: The first line "Useful resources:" appears twice in the chunk. That's fine.
Also note: The chunk starts with "Useful resources:" after the
Final translation.उपयोगी संसाधन:
sudo su - का उपयोग क्यों करते हैं और केवल sudo su का नहीं?sudo अधिकांश आधुनिक Linux वितरणों में होता है जहाँ (लेकिन हमेशा नहीं) रूट उपयोगकर्ता अक्षम होता है और उसका कोई पासवर्ड सेट नहीं होता। इसलिए आप su के साथ रूट उपयोगकर्ता पर स्विच नहीं कर सकते (आप कोशिश कर सकते हैं)। आपको रूट विशेषाधिकारों के साथ sudo कॉल करना होता है: sudo su।
su केवल उपयोगकर्ता को स्विच करता है, एक सामान्य शेल प्रदान करता है जिसका वातावरण पुराने उपयोगकर्ता के समान ही होता है।
su - उपयोगकर्ता को स्विच करने के बाद एक लॉगिन शेल लॉन्च करता है। लॉगिन शेल अधिकांश पर्यावरण चर रीसेट करता है, एक साफ आधार प्रदान करता है।
उपयोगी संसाधन:
सिस्टम पर समस्याओं की जांच करने के लिए ये आवश्यक हैं। लॉग प्रबंधन आईटी सुरक्षा के लिए बिल्कुल महत्वपूर्ण है।
सर्वर, फ़ायरवॉल और अन्य आईटी उपकरण लॉग फ़ाइलें रखते हैं जो महत्वपूर्ण घटनाओं और लेन-देन को रिकॉर्ड करती हैं। यह जानकारी आपके नेटवर्क को अंदर और बाहर से प्रभावित करने वाली शत्रुतापूर्ण गतिविधि के बारे में महत्वपूर्ण सुराग प्रदान कर सकती है। लॉग डेटा कॉन्फ़िगरेशन समस्याओं और हार्डवेयर विफलता सहित उपकरण समस्याओं की पहचान और समस्या निवारण के लिए भी जानकारी प्रदान कर सकता है।
यह आपके सर्वर का रिकॉर्ड है कि कौन आपकी साइट पर आया, कब, और उन्होंने वास्तव में क्या देखा। यह अविश्वसनीय रूप से विस्तृत है, जो दर्शाता है:
विचार करने योग्य कारक:
लॉग एकत्र करके और उनका विश्लेषण करके, आप समझ सकते हैं कि आपके नेटवर्क में क्या होता है। प्रत्येक लॉग फ़ाइल में बहुत सी जानकारी होती है जो अमूल्य हो सकती है, खासकर यदि आप उन्हें पढ़ना और उनका विश्लेषण करना जानते हैं।
उपयोगी संसाधन:
इंक्रीमेंटल बैकअप एक प्रकार का बैकअप है जो केवल उन फ़ाइलों को कॉपी करता है जो पिछले बैकअप के बाद से बदल गई हैं।
उपयोगी संसाधन:
RAID (रिडंडेंट अरे ऑफ इनएक्सपेंसिव डिस्क) एक तकनीक है जिसका उपयोग डेटा स्टोरेज के प्रदर्शन और/या विश्वसनीयता को बढ़ाने के लिए किया जाता है।
उपयोगी संसाधन:
यदि निर्दिष्ट नहीं किया गया है, तो useradd का व्यवहार /etc/login.defs में निहित USERGROUPS_ENAB चर पर निर्भर करेगा। डिफ़ॉल्ट व्यवहार (USERGROUPS_ENAB yes) उपयोगकर्ता नाम के समान नाम वाला एक समूह बनाना है, जिसमें GID UID के बराबर होता है।
उपयोगी संसाधन:
पूरा किया जाना है।
उपयोगी संसाधन:
पूरा किया जाना है।
OSI (या किसी अन्य) मॉडल के बारे में समझने योग्य सबसे महत्वपूर्ण बातें हैं:
उपयोगी संसाधन:
VLANs और subnets अलग-अलग समस्याओं का समाधान करते हैं। VLANs लेयर 2 पर काम करते हैं, जिससे प्रसार डोमेन बदल जाते हैं (उदाहरण के लिए)। जबकि subnets वर्तमान संदर्भ में लेयर 3 हैं।
Subnet - यह पते के एक भाग (जिसे अक्सर नेटवर्क पता कहा जाता है) और सबनेट मास्क (नेटमास्क) द्वारा निर्धारित IP पतों की एक श्रृंखला है। उदाहरण के लिए, यदि नेटमास्क 255.255.255.0 (या संक्षेप में /24) है, और नेटवर्क पता 192.168.10.0 है, तो यह IP पतों की एक श्रृंखला 192.168.10.0 से 192.168.10.255 तक परिभाषित करता है। इसे लिखने का संक्षिप्त रूप 192.168.10.0/24 है।
VLAN - इसे समझने का एक अच्छा तरीका "स्विच विभाजन" है। मान लीजिए आपके पास एक 8 पोर्ट वाला स्विच है जो VLAN-सक्षम है। आप 4 पोर्ट को एक VLAN (जैसे VLAN 1) और 4 पोर्ट को दूसरे VLAN (जैसे VLAN 2) में असाइन कर सकते हैं। VLAN 1 VLAN 2 का कोई ट्रैफ़िक नहीं देखेगा और इसके विपरीत, तार्किक रूप से, अब आपके पास दो अलग-अलग स्विच हैं। सामान्यतः एक स्विच पर, यदि स्विच ने MAC पता नहीं देखा है तो वह ट्रैफ़िक को अन्य सभी पोर्ट पर "फ्लड" कर देगा। इसे रोकते हैं।
POP और IMAP दोनों मेल सर्वर से मेल क्लाइंट में संदेश प्राप्त करने के प्रोटोकॉल हैं।
POP (Post Office Protocol) मेल सर्वर से क्लाइंट तक एकतरफा पुश का उपयोग करता है। डिफ़ॉल्ट रूप से यह संदेशों को POP मेल क्लाइंट पर भेजेगा और उन्हें मेल सर्वर से हटा देगा, हालांकि मेल सर्वर को सभी संदेशों को बनाए रखने के लिए कॉन्फ़िगर करना संभव है। आप अपने मेल क्लाइंट में संदेश पर जो भी कार्रवाई करते हैं (लेबलिंग, हटाना, फ़ोल्डर में ले जाना) वह मेल सर्वर पर प्रतिबिंबित नहीं होगी, और इस प्रकार मेल सर्वर से खींचने वाले अन्य मेल क्लाइंट्स के लिए अप्राप्य होगी। POP मेल सर्वर पर कम स्टोरेज स्पेस का उपयोग करता है और इसे अधिक सुरक्षित माना जा सकता है क्योंकि संदेश केवल एक मेल क्लाइंट पर मौजूद होते हैं, न कि मेल सर्वर और कई क्लाइंट्स पर।
IMAP (Internet Message Access Protocol) मेल सर्वर और क्लाइंट के बीच दो-तरफा संचार का उपयोग करता है। IMAP के साथ कॉन्फ़िगर किए गए अपने मेल क्लाइंट में किसी संदेश को हटाना या लेबल करना मेल सर्वर पर भी संदेश को हटा देगा या लेबल कर देगा। IMAP विभिन्न क्लाइंट्स या उपकरणों पर मेल एक्सेस करते समय एक समान अनुभव की अनुमति देता है क्योंकि संदेश कई उपकरणों पर समान स्थिति में मौजूद रह सकते हैं। IMAP चुनिंदा रूप से संदेशों को सिंक करके, मेल क्लाइंट से पुराने संदेशों को हटाकर मेल क्लाइंट पर डिस्क स्थान भी बचा सकता है, क्योंकि यह बाद में आवश्यकतानुसार उन्हें मेल सर्वर से सिंक कर सकता है।
यदि आपको कई उपकरणों पर संदेशों तक पहुँचने की आवश्यकता है और आप अपने क्लाइंट डिवाइस पर डिस्क स्थान बचाना चाहते हैं तो IMAP चुनें। यदि आप अपने मेल सर्वर पर डिस्क स्थान बचाना चाहते हैं, केवल एक क्लाइंट डिवाइस से संदेशों तक पहुँचना चाहते हैं, और सुनिश्चित करना चाहते हैं कि संदेश कई सिस्टम पर मौजूद न हों तो POP चुनें।
netstat -nr, route -n या ip route show कमांड का उपयोग करके हम डिफ़ॉल्ट रूट और रूटिंग टेबल देख सकते हैं।
उपयोगी संसाधन:
खैर, सबसे संभावित अंतर यह है कि आपको अभी भी कहीं न कहीं localhost की वास्तविक लुकअप करनी होती है।
यदि आप 127.0.0.1 का उपयोग करते हैं, तो (बुद्धिमान) सॉफ़्टवेयर इसे सीधे IP पते में बदल देगा और इसका उपयोग करेगा। gethostbyname के कुछ कार्यान्वयन डॉटेड फ़ॉर्मेट (और संभवतः समतुल्य IPv6 फ़ॉर्मेट) का पता लगाएंगे और बिल्कुल भी लुकअप नहीं करेंगे।
अन्यथा, नाम को हल करना होगा। और इस बात की कोई गारंटी नहीं है कि आपकी hosts फ़ाइल का उपयोग उस समाधान के लिए किया जाएगा (पहले, या बिल्कुल भी) इसलिए localhost पूरी तरह से अलग IP पता बन सकता है।
मेरा मतलब है कि, कुछ सिस्टम पर, स्थानीय hosts फ़ाइल को बायपास किया जा सकता है। host.conf फ़ाइल Linux (और कई अन्य Unix) पर इसे नियंत्रित करती है।
यदि आप Unix डोमेन सॉकेट का उपयोग करते हैं तो यह TCP/IP का उपयोग करने की तुलना में थोड़ा तेज़ होगा (क्योंकि आपके पास कम ओवरहेड होता है)। Windows डिफ़ॉल्ट रूप से TCP/IP का उपयोग करता है, जबकि Linux यदि आप localhost चुनते हैं तो Unix डोमेन सॉकेट का उपयोग करने का प्रयास करता है और यदि आप 127.0.0.1 लेते हैं तो TCP/IP का उपयोग करता है।
उपयोगी संसाधन:
ping कमांड के लिए किस पोर्ट का उपयोग किया जाता है?ping, ICMP, विशेष रूप से ICMP echo request और ICMP echo reply पैकेट का उपयोग करता है। ICMP से जुड़ा कोई 'पोर्ट' नहीं है। पोर्ट दो IP ट्रांसपोर्ट लेयर प्रोटोकॉल, TCP और UDP से जुड़े होते हैं। ICMP, TCP और UDP "सहोदर" हैं; वे एक-दूसरे पर आधारित नहीं हैं, बल्कि तीन अलग-अलग प्रोटोकॉल हैं जो IP के ऊपर चलते हैं।
ICMP पैकेट्स की पहचान IP डेटाग्राम हेडर में 'प्रोटोकॉल' फ़ील्ड द्वारा की जाती है। ICMP न तो UDP और न ही TCP संचार सेवाओं का उपयोग करता है, यह कच्ची IP संचार सेवाओं का उपयोग करता है। इसका मतलब है कि ICMP संदेश सीधे IP डेटाग्राम डेटा फ़ील्ड में ले जाया जाता है। raw इस बात से आता है कि यह सॉफ़्टवेयर में कैसे लागू किया जाता है, ICMP संदेश बनाने और भेजने के लिए, कोई raw सॉकेट खोलता है, ICMP संदेश वाला एक बफ़र बनाता है, और फिर संदेश वाले बफ़र को raw सॉकेट में लिखता है।
ICMP के लिए IP प्रोटोकॉल मान 1 है। प्रोटोकॉल फ़ील्ड IP हेडर का हिस्सा है और पहचानता है कि IP डेटाग्राम के डेटा भाग में क्या है।
हालाँकि, आप यह देखने के लिए nmap का उपयोग कर सकते हैं कि पोर्ट खुले हैं या नहीं:```bash
nmap -p 80 example.com
उपयोगी संसाधन:
- [Ping पोर्ट नंबर](https://networkengineering.stackexchange.com/questions/42463/ping-port-number)
- [क्या किसी address:port को ping करना संभव है?](https://superuser.com/questions/769541/is-it-possible-to-ping-an-addressport)
</details>
<details>
<summary><b>सर्वर A, सर्वर B से बात नहीं कर सकता। कुछ चरणों में संभावित कारण बताएं।</b></summary><br>
सर्वरों के बीच संचार समस्याओं का निवारण करने के लिए, TCP/IP स्टैक का पालन करना बेहतर होता है:
1. **एप्लिकेशन लेयर**: क्या दोनों सर्वरों पर सेवाएं चालू और चल रही हैं? क्या वे सही ढंग से कॉन्फ़िगर की गई हैं (जैसे सही IP और सही पोर्ट bind करना)? क्या एप्लिकेशन और सिस्टम लॉग में सार्थक त्रुटियाँ दिखाई देती हैं?
2. **ट्रांसपोर्ट लेयर**: क्या एप्लिकेशन द्वारा उपयोग किए जाने वाले पोर्ट खुले हैं (telnet आज़माएं!)? क्या सर्वर को ping करना संभव है?
3. **नेटवर्क लेयर**: क्या नेटवर्क या OS पर फ़ायरवॉल सही ढंग से कॉन्फ़िगर किया गया है? क्या IP स्टैक सही ढंग से कॉन्फ़िगर किया गया है (IP, रूट्स, dns, आदि)? क्या स्विच और राउटर काम कर रहे हैं (ARP तालिका जांचें!)?
4. **भौतिक लेयर**: क्या सर्वर एक नेटवर्क से जुड़े हैं? क्या पैकेट खो रहे हैं?
</details>
<details>
<summary><b>आपके सर्वर पर होस्टनेम रिज़ॉल्व क्यों नहीं हो रहे हैं? इस समस्या को ठीक करें। ***</b></summary><br>
पूरा किया जाना है।
</details>
<details>
<summary><b>CLI के साथ डोमेन नाम (बाहरी DNS का उपयोग करके) कैसे रिज़ॉल्व करें? क्या IP को डोमेन नामों में रिज़ॉल्व किया जा सकता है?</b></summary><br>
IP पते को डोमेन नाम में रिज़ॉल्व करने के उदाहरण:```bash
# with host command:
host domain.com 8.8.8.8
# with dig command:
dig @9.9.9.9 google.com
# with nslookup command:
nslookup domain.com 8.8.8.8
telnet या nc के साथ पोर्ट कनेक्टिविटी का परीक्षण कैसे करें?nc -vz code42.example.com 5432
</details>
<details>
<summary><b>आपको रिमोट सिस्टम प्रशासन के लिए <code>telnet</code> से क्यों बचना चाहिए?</b></summary><br>
आधुनिक ऑपरेटिंग सिस्टम ने सभी संभावित असुरक्षित सेवाओं को डिफ़ॉल्ट रूप से बंद कर दिया है। दूसरी ओर, कुछ नेटवर्क उपकरणों के विक्रेता अभी भी telnet प्रोटोकॉल का उपयोग करके संचार स्थापित करने की अनुमति देते हैं।
**Telnet** संचार के लिए सबसे असुरक्षित विधि का उपयोग करता है। यह नेटवर्क पर डेटा को सादे पाठ प्रारूप में भेजता है और कोई भी नेटवर्क टूल का उपयोग करके आसानी से पासवर्ड पता लगा सकता है।
**Telnet** के मामले में, इसमें लॉगिन क्रेडेंशियल्स को सादे पाठ में पास करना शामिल है, जिसका अर्थ है कि आपके नेटवर्क पर स्निफर चलाने वाला कोई भी व्यक्ति **Telnet** लॉगिन सत्र की जासूसी करके कुछ सेकंड में किसी उपकरण पर नियंत्रण पाने के लिए आवश्यक जानकारी प्राप्त कर सकता है।
उपयोगी संसाधन:
- [एक सुरक्षित विकल्प के रूप में Telnet और SSH](https://www.ssh.com/ssh/telnet)
- [किसी विशिष्ट पोर्ट पर IP पते पर telnet कैसे करें?](https://superuser.com/questions/339107/how-to-telnet-to-an-ip-address-on-a-specific-port)
</details>
<details>
<summary><b><code>wget</code> और <code>curl</code> में क्या अंतर है?</b></summary><br>
मुख्य अंतर हैं: `wget` की मुख्य ताकत `curl` की तुलना में रिकर्सिव रूप से डाउनलोड करने की क्षमता है। `wget` केवल कमांड लाइन है। `curl` FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMTP, RTMP और RTSP का समर्थन करता है।
उपयोगी संसाधन:
- [curl और wget में क्या अंतर है? (मूल)](https://unix.stackexchange.com/questions/47434/what-is-the-difference-between-curl-and-wget)
</details>
<details>
<summary><b>SSH क्या है और यह कैसे काम करता है?</b></summary><br>
**SSH** का अर्थ **Secure Shell** है। यह एक प्रोटोकॉल है जो आपको सर्वर "A" से सर्वर "B" पर शेल सत्र में जाने देता है। यह आपको अपने सर्वर "B" के साथ बातचीत करने की अनुमति देता है।
**SSH** कनेक्शन स्थापित करने के लिए, रिमोट मशीन (सर्वर A) पर **SSH** डेमॉन नामक सॉफ़्टवेयर चल रहा होना चाहिए और उपयोगकर्ता के कंप्यूटर (सर्वर B) पर **SSH** क्लाइंट होना चाहिए।
**SSH** डेमॉन और **SSH** क्लाइंट एक विशिष्ट नेटवर्क पोर्ट (डिफ़ॉल्ट 22) पर कनेक्शन के लिए सुनते हैं, कनेक्शन अनुरोधों को प्रमाणित करता है, और यदि उपयोगकर्ता सही क्रेडेंशियल प्रदान करता है तो उपयुक्त वातावरण बनाता है।
उपयोगी संसाधन:
- [SSH एन्क्रिप्शन और कनेक्शन प्रक्रिया को समझना](https://www.digitalocean.com/community/tutorials/understanding-the-ssh-encryption-and-connection-process)
</details>
<details>
<summary><b>अधिकांश ट्यूटोरियल SSH कुंजी प्रमाणीकरण को पासवर्ड प्रमाणीकरण से बेहतर बताते हैं। इसे अधिक सुरक्षित क्यों माना जाता है?</b></summary><br>
**SSH कुंजी** SSH प्रोटोकॉल में एक एक्सेस क्रेडेंशियल है। इसका कार्य उपयोगकर्ता नाम और पासवर्ड के समान है, लेकिन कुंजियाँ मुख्य रूप से स्वचालित प्रक्रियाओं और सिस्टम प्रशासकों और पावर उपयोगकर्ताओं द्वारा सिंगल साइन-ऑन लागू करने के लिए उपयोग की जाती हैं।
उपयोगकर्ता के पासवर्ड की आवश्यकता के बजाय, सार्वजनिक और निजी कुंजियों के साथ असममित क्रिप्टोग्राफी एल्गोरिदम का उपयोग करके क्लाइंट की पहचान की पुष्टि करना संभव है।
यदि आपकी SSH सेवा केवल सार्वजनिक-कुंजी प्रमाणीकरण की अनुमति देती है, तो एक हमलावर को सर्वर पर संग्रहीत सार्वजनिक कुंजी से संबंधित एक निजी कुंजी की प्रतिलिपि की आवश्यकता होती है।
यदि आपकी SSH सेवा पासवर्ड-आधारित प्रमाणीकरण की अनुमति देती है, तो आपका इंटरनेट से जुड़ा SSH सर्वर बॉट-नेट द्वारा दिन-रात उपयोगकर्ता नाम और पासवर्ड का अनुमान लगाने की कोशिश करता रहेगा। बॉट नेट को किसी जानकारी की आवश्यकता नहीं है, यह केवल लोकप्रिय नामों और लोकप्रिय पासवर्डों को आज़मा सकता है। इसके अलावा, यह आपके लॉग को अवरुद्ध करता है।
उपयोगी संसाधन:
- [कुंजी-आधारित प्रमाणीकरण (सार्वजनिक कुंजी प्रमाणीकरण)](http://www.crypto-it.net/eng/tools/key-based-authentication.html)
- [SSH पासवर्ड बनाम कुंजी प्रमाणीकरण](https://security.stackexchange.com/questions/33381/ssh-password-vs-key-authentication)
</details>
<details>
<summary><b>पैकेट फ़िल्टर क्या है और यह कैसे काम करता है?</b></summary><br>
**पैकेट फ़िल्टरिंग** एक फ़ायरवॉल तकनीक है जिसका उपयोग आउटगोइंग और इनकमिंग पैकेटों की निगरानी करके और स्रोत और गंतव्य इंटरनेट प्रोटोकॉल (IP) पतों, प्रोटोकॉल और पोर्ट के आधार पर उन्हें पास या रोककर नेटवर्क एक्सेस को नियंत्रित करने के लिए किया जाता है।
पैकेट फ़िल्टरिंग वहाँ उपयुक्त है जहाँ मामूली सुरक्षा आवश्यकताएँ हों। कई संगठनों के आंतरिक (निजी) नेटवर्क अत्यधिक खंडित नहीं होते हैं। संगठन के एक हिस्से को दूसरे से अलग करने के लिए अत्यधिक परिष्कृत फ़ायरवॉल की आवश्यकता नहीं होती है।
हालांकि, एक प्रयोगशाला या प्रायोगिक नेटवर्क से उत्पादन नेटवर्क की किसी प्रकार की सुरक्षा प्रदान करना समझदारी है। एक पैकेट फ़िल्टरिंग उपकरण एक सबनेट को दूसरे से अलग करने के लिए एक बहुत ही उपयुक्त उपाय है।
TCP/IP प्रोटोकॉल स्टैक की नेटवर्क लेयर और ट्रांसपोर्ट लेयर पर काम करते हुए, प्रत्येक पैकेट की जाँच की जाती है जब वह प्रोटोकॉल स्टैक में प्रवेश करता है। निम्नलिखित जानकारी के लिए नेटवर्क और ट्रांसपोर्ट हेडर की बारीकी से जाँच की जाती है:
- **प्रोटोकॉल (IP हेडर, नेटवर्क लेयर)** - IP हेडर में, बाइट 9 (याद रखें बाइट गिनती शून्य से शुरू होती है) पैकेट के प्रोटोकॉल की पहचान करता है। अधिकांश फ़िल्टर उपकरणों में TCP, UPD और ICMP के बीच अंतर करने की क्षमता होती है।
- **स्रोत पता (IP हेडर, नेटवर्क लेयर)** - स्रोत पता उस होस्ट का 32-बिट IP पता है जिसने पैकेट बनाया है।
- **गंतव्य पता (IP हेडर, नेटवर्क लेयर)** - गंतव्य पता उस होस्ट का 32-बिट IP पता है जिसके लिए पैकेट भेजा गया है।
- **स्रोत पोर्ट (TCP या UDP हेडर, ट्रांसपोर्ट लेयर)** - TCP या UDP नेटवर्क कनेक्शन का प्रत्येक सिरा एक पोर्ट से बंधा होता है। TCP पोर्ट UDP पोर्ट से अलग और भिन्न होते हैं। 1024 से नीचे क्रमांकित पोर्ट आरक्षित हैं - उनका एक विशिष्ट उपयोग होता है। 1024 (सम्मिलित) से ऊपर क्रमांकित पोर्ट को एफ़ेमरल पोर्ट के रूप में जाना जाता है। विक्रेता जैसे चाहे उनका उपयोग कर सकता है। "ज्ञात" पोर्ट की सूची के लिए, RFP1700 देखें। स्रोत पोर्ट एक छद्म-यादृच्छिक रूप से असाइन किया गया एफ़ेमरल पोर्ट नंबर है। इस प्रकार स्रोत पोर्ट पर फ़िल्टर करना अक्सर बहुत उपयोगी नहीं होता है।
- **गंतव्य पोर्ट (TCP या UDP हेडर, ट्रांसपोर्ट लेयर)** - गंतव्य पोर्ट नंबर उस पोर्ट को इंगित करता है जिस पर पैकेट भेजा गया है। गंतव्य होस्ट पर प्रत्येक सेवा एक पोर्ट पर सुनती है। कुछ ज्ञात पोर्ट जिन्हें फ़िल्टर किया जा सकता है वे हैं 20/TCP और 21/TCP - ftp कनेक्शन/डेटा, 23/TCP - telnet, 80/TCP - http, और 53/TCP - DNS ज़ोन ट्रांसफर।
- **कनेक्शन स्थिति (TCP हेडर, ट्रांसपोर्ट लेयर)** - कनेक्शन स्थिति बताती है कि पैकेट नेटवर्क सत्र का पहला पैकेट है या नहीं। TCP हेडर में ACK बिट को "false" या 0 पर सेट किया जाता है यदि यह सत्र का पहला पैकेट है। उन पैकेटों को अस्वीकार या छोड़ कर जिनमें ACK बिट "false" या 0 पर सेट है, किसी होस्ट को कनेक्शन स्थापित करने से रोकना सरल है।
उपयोगी संसाधन:
- [बिल्डिंग इंटरनेट फ़ायरवॉल - पैकेट फ़िल्टरिंग](http://web.deu.edu.tr/static/oreily/networking/firewall/ch06_01.htm)
</details>
<details>
<summary><b>रिवर्स प्रॉक्सी सर्वर का उपयोग करने के क्या लाभ हैं?</b></summary><br>
**अपने बैक-एंड सर्वर की टोपोलॉजी और विशेषताओं को छिपाना**
**रिवर्स प्रॉक्सी सर्वर** मूल सर्वर की उपस्थिति और विशेषताओं को छिपा सकता है। यह इंटरनेट क्लाउड और वेब सर्वर के बीच एक मध्यस्थ के रूप में कार्य करता है। यह सुरक्षा कारणों से अच्छा है, खासकर जब आप वेब होस्टिंग सेवाओं का उपयोग कर रहे हैं।
**बैकएंड सर्वरों के पारदर्शी रखरखाव की अनुमति देता है**
रिवर्स प्रॉक्सी के पीछे चल रहे सर्वरों में आपके द्वारा किए गए परिवर्तन आपके अंतिम उपयोगकर्ताओं के लिए पूरी तरह से पारदर्शी होंगे।
**लोड बैलेंसिंग**
रिवर्स प्रॉक्सी तब राउंड रॉबिन, वेटेड राउंड रॉबिन, कम से कम कनेक्शन, वेटेड कम से कम कनेक्शन, या रैंडम जैसे लोड बैलेंसिंग एल्गोरिदम को लागू करेगा, ताकि क्लस्टर में सर्वरों के बीच लोड वितरित किया जा सके।
जब कोई सर्वर डाउन हो जाता है, तो सिस्टम स्वचालित रूप से अगले चालू सर्वर पर फ़ेलओवर हो जाएगा और उपयोगकर्ता अपनी सुरक्षित फ़ाइल स्थानांतरण गतिविधियों को जारी रख सकते हैं।
**SSL ऑफलोडिंग/टर्मिनेशन**
आने वाले HTTPS कनेक्शन को संभालता है, अनुरोधों को डिक्रिप्ट करता है और एन्क्रिप्टेड अनुरोधों को वेब सर्वर पर पास करता है।
**IP मास्किंग**
एकल IP लेकिन विभिन्न URL का उपयोग करके विभिन्न बैक एंड सर्वरों पर रूट करना।
उपयोगी संसाधन:
- [रिवर्स प्रॉक्सी के लाभ](https://dzone.com/articles/benefits-reverse-proxy)
</details>
<details>
<summary><b>राउटर और गेटवे में क्या अंतर है? डिफ़ॉल्ट गेटवे क्या है?</b></summary><br>
**राउटर** सामान्य तकनीकी कार्य (लेयर-3 फ़ॉरवर्डिंग) या उस उद्देश्य के लिए एक हार्डवेयर उपकरण का वर्णन करता है, जबकि गेटवे स्थानीय सेगमेंट के लिए कार्य (अन्यत्र कनेक्टिविटी प्रदान करना) का वर्णन करता है। आप यह भी कह सकते हैं कि "_आप एक राउटर को गेटवे के रूप में सेट करते हैं_"। एक अन्य शब्द हॉप है जो सबनेट के बीच फ़ॉरवर्डिंग का वर्णन करता है।
शब्द **डिफ़ॉल्ट गेटवे** का उपयोग आपके LAN पर उस राउटर को संदर्भित करने के लिए किया जाता है जिसकी जिम्मेदारी LAN के बाहर के कंप्यूटरों के लिए ट्रैफ़िक के लिए संपर्क का पहला बिंदु होना है।
यह सिर्फ परिप्रेक्ष्य का मामला है, उपकरण एक ही है।
उपयोगी संसाधन:
- [राउटर और गेटवे के बीच अंतर (मूल)](https://networkengineering.stackexchange.com/questions/51426/difference-between-router-and-gateway)
</details>
<details>
<summary><b>निम्नलिखित DNS रिकॉर्ड्स में से प्रत्येक के कार्य की व्याख्या करें: SOA, PTR, A, MX, और CNAME.</b></summary><br>
**DNS रिकॉर्ड** मूल रूप से मैपिंग फ़ाइलें हैं जो DNS सर्वर को बताती हैं कि प्रत्येक डोमेन किस IP पते से संबद्ध है, और प्रत्येक डोमेन पर भेजे गए अनुरोधों को कैसे संभालना है। कुछ **DNS रिकॉर्ड** सिंटैक्स जो लगभग सभी DNS रिकॉर्ड कॉन्फ़िगरेशन में आमतौर पर उपयोग किए जाते हैं, `A`, `AAAA`, `CNAME`, `MX`, `PTR`, `NS`, `SOA`, `SRV`, `TXT`, और `NAPTR` हैं।
- **SOA** - प्राधिकरण की शुरुआत (Start Of Authority)
- **A** - पता मैपिंग रिकॉर्ड (Address Mapping records)
- **AAAA** - IP संस्करण 6 पता रिकॉर्ड (IP Version 6 Address records)
- **CNAME** - विहित नाम रिकॉर्ड (Canonical Name records)
- **MX** - मेल एक्सचेंजर रिकॉर्ड (Mail exchanger record)
- **NS** - नाम सर्वर रिकॉर्ड (Name Server records)
- **PTR** - रिवर्स-लुकअप पॉइंटर रिकॉर्ड (Reverse-lookup Pointer records)
उपयोगी संसाधन:
- [DNS रिकॉर्ड प्रकारों की सूची](https://en.wikipedia.org/wiki/List_of_DNS_record_types)
</details>
<details>
<summary><b>नेटवर्किंग के लिए IPv4/6 के बजाय MAC पतों का उपयोग क्यों नहीं किया जा सकता?</b></summary><br>
**OSI** मॉडल बताता है कि भौतिक **लेयर 2** तंत्र के आधार पर राउटिंग, एक **लेयर 3** अवधारणा, के निर्णय लेना क्यों समझ में नहीं आता है।
आधुनिक नेटवर्किंग आपके अंत-से-अंत संचार को पूरा करने के लिए कई अलग-अलग परतों में विभाजित है। आपका नेटवर्क कार्ड (जो मैक पते - भौतिक पते द्वारा संबोधित किया जाता है) को केवल अपने भौतिक नेटवर्क पर सहकर्मियों के साथ संचार के लिए जिम्मेदार होने की आवश्यकता है।
**MAC** पते के साथ आप जो संचार प्राप्त कर सकते हैं, वह आपकी मशीन के भौतिक संपर्क में रहने वाले अन्य उपकरणों तक सीमित होगा। इंटरनेट पर, उदाहरण के लिए, आप प्रत्येक मशीन से भौतिक रूप से जुड़े नहीं हैं। यही कारण है कि जब हमें ऐसी मशीन से संचार करने की आवश्यकता होती है जिससे हम भौतिक रूप से जुड़े नहीं हैं, तो हम **TCP/IP** (एक **लेयर 3**, तार्किक पता) तंत्र का उपयोग करते हैं।
**IP** एक मनमाना नंबरिंग योजना है जो कंप्यूटरों के एक समूह पर एक पदानुक्रमित फैशन में लगाई जाती है ताकि उन्हें तार्किक रूप से एक समूह के रूप में अलग किया जा सके (यही एक सबनेट है)। उन समूहों के बीच संदेश भेजना रूटिंग तालिकाओं द्वारा किया जाता है, जो स्वयं कई स्तरों में विभाजित होती हैं ताकि हमें हर एक सबनेट पर नज़र रखने की आवश्यकता न हो।
Subnet IP पतों की एक श्रृंखला से अधिक कुछ नहीं है जो होस्ट को लेयर 2 और 3 पर संचार करने में मदद करता है। प्रत्येक सबनेट को अपने स्वयं के VLAN की आवश्यकता नहीं होती है। VLANs को अलगाव (लेयर 2 संचार के लिए सैंडबॉक्स, 2 अलग-अलग VLANs के 2 सिस्टम संचार नहीं कर सकते लेकिन यह Inter VLAN routing के माध्यम से किया जा सकता है), प्रबंधन में आसानी और सुरक्षा के लिए लागू किया जाता है।
उपयोगी संसाधन:
| सेवा | पोर्ट |
|---|---|
| SMTP | 25 |
| FTP | डेटा स्थानांतरण के लिए 20 और कनेक्शन स्थापित करने के लिए 21 |
| DNS | 53 |
| DHCP | DHCP सर्वर के लिए 67/UDP, DHCP क्लाइंट के लिए 68/UDP |
| SSH | 22 |
उपयोगी संसाधन:
आप (कभी-कभी) किसी IP Address को वापस होस्टनाम में हल कर सकते हैं। IP Address को PTR रिकॉर्ड के विरुद्ध संग्रहीत किया जा सकता है। फिर आप कर सकते हैं:```bash dig A
किसी होस्ट का IPv4 पता देखने के लिए, या:```bash
dig AAAA <hostname>
एक होस्ट के लिए IPv6 पता खोजने के लिए, या:```bash dig PTR ZZZ.YYY.XXX.WWW.in-addr.arpa.
IPv4 पते `WWW.XXX.YYY.ZZZ` के लिए होस्टनाम देखने के लिए (ध्यान दें कि ऑक्टेट उलटे हैं), या:```bash
dig PTR b.a.9.8.7.6.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa.
उपयोगी संसाधन: