प्रति उपयोगकर्ता होस्ट फ़ाइल


16

क्या /etc/hostsउपयोगकर्ता के आधार पर, एक फ़ाइल में होस्ट अलायसेस (जैसे ) को परिभाषित करने का कोई तरीका है /home/user/.hosts?

मेरा प्राथमिक उद्देश्य अपने छोटे से लैन में मशीनों के बीच rsync के माध्यम से आसानी से मेजबान उपनाम साझा करना है। चूंकि ऐसी कोई मशीन नहीं है जो मज़बूती से हमेशा जुड़ी रहेगी, इसलिए DNS सर्वर एक विकल्प नहीं है (दाएं?)।

धन्यवाद।


2
ओह वाह। मैं इसी प्रश्न को पोस्ट करने वाला था, लेकिन मुझे लगता है कि आपके पास है। यह मेरे लिए समझ में आता है, लेकिन अजीब तरह से यह लिनक्स पर मौजूद नहीं है। मेरे मामले में मेरे पास अपने सैमसंग गैलेक्सी टैब डिवाइस पर एंड्रॉइड ओएस के साथ लिनक्स का एक जेल रूप है, और मेरे वेब विकास के कारण मुझे अक्सर / आदि / मेजबानों को संपादित करने की आवश्यकता होती है। एक जेल लिनक्स में, आप / etc / मेजबान को संपादित नहीं कर सकते। तो, एक ~ / .hosts वास्तव में निश्चित रूप से अच्छा होगा!
सर्वर चेक

क्या आपको अंत में कोई समाधान मिला?
क्वासिस

दुर्भाग्य से नहीं। शायद यह संभव नहीं है क्योंकि यह सुरक्षा के लिए खतरा है।
mrucci

1
SSH के लिए, आप एक आंशिक समाधान के रूप में उपनाम का उपयोग कर सकते हैं। रखो alias ssh="ssh "अपने .bashrc (ध्यान दें उर्फ के अंत में पिछली श्वेत रिक्ति) के साथ में alias myhost="me@real-name-of-my-host.com"और उसके बाद आप कह सकते हैं ssh myhostऔर यह काम करेंगे।
नूह सूसमान

वर्कअराउंड के लिए एक बेहतर तरीका यह होगा ~/.ssh/configकि आप अपनी पंक्तियों में एक प्रविष्टि डालें जहाँ आप मशीन को जोड़ते हैं: Host my-hostऔर Hostname 10.0.0.xxx<- IP। अच्छी बात यह है कि यह आपको उपयोगकर्ता नाम, पोर्ट, जो कुंजी आदि का उपयोग करने के लिए निर्दिष्ट करने की अनुमति देता है
Ciprian Tomoiagă

जवाबों:


8

एक बेहतर उपाय यह होगा कि अवही और लिबास-एमडीएन को स्थापित किया जाए और फिर HOSTNAME.localपते का उपयोग किया जाए।

ये नाम प्रति उपयोगकर्ता नहीं होंगे, लेकिन एक LAN में सभी मशीनों के लिए सामान्य नाम होने के आपके घोषित उद्देश्य को हल करेंगे।


क्या HOSTNAMES.local को स्थानीय फ़ाइल (प्रति-उपयोगकर्ता) के बजाय / etc / avahi / होस्ट में निर्दिष्ट करने का कोई तरीका है?
mrucci

मुझे लगता है कि टेडी का मतलब है कि प्रत्येक मशीन में एक नाम होगा जो अवही को पता चलेगा। क्या मशीन-से-नाम मैपिंग वास्तव में प्रति उपयोगकर्ता के आधार पर अलग-अलग होनी चाहिए?
11:50

नहीं, यह प्रति-उपयोगकर्ता के आधार पर भिन्न नहीं होना चाहिए। मुझे सिर्फ ping hostnameAliasरूट एलिजिबिलिटी के बिना होस्ट अलायस (एक तरह से जो मुझे करने की अनुमति देता है ) को साझा करने के लिए एक विधि की आवश्यकता है । अवही लगभग सही काम करते हैं, क्योंकि मैं मशीन को HOSTNAME के ​​रूप में उपयोग कर सकता हूं। बस जिज्ञासा के लिए: यह मैपिंग कहां की जाती है?
mrucci

3

एक तरीका देखने के लिए https://github.com/figiel/hosts देखें जो आप पूछते हैं।

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


2

लिनक्स glibc कार्यान्वयन ऐसा नहीं कर सकता है।

लेकिन आप इसे एक nss लाइब्रेरी के साथ बढ़ा सकते हैं जो कर सकती थी। यह लिखना आसान होगा क्योंकि आप libc के संबंधित भाग को काट सकते हैं जो nss_files निर्देशिका में है

http://ftp.gnu.org/gnu/glibc/glibc-2.5.tar.bz2

उदाहरण के लिए

हालाँकि, ऐसा करना अजीब अजीब बात होगी।


0

यदि आपके पास दो मशीनें थीं जो अधिकांश समय आप उनमें से प्रत्येक पर BIND खड़ी कर सकती थीं और उन्हें DNS सर्वर बना सकती थीं..या इनमें से एक को प्राप्त करें ( http://www.marvell.com/products/embedded_processors/ डेवलपर / kirkwood / sheevaplug.jsp )।

DNS पर अपने हमेशा की सेवा के लिए उस पर BIND का उपयोग करें।


0

जैसा कि इस पृष्ठ पर अन्य उत्तरों का वर्णन है, समान कार्यक्षमता प्राप्त करने के तरीके हैं, लेकिन:

नहीं, /etc/hostsजीएनयू / लिनक्स में एक गैर-विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में डिफ़ॉल्ट नाम रिज़ॉल्यूशन को ओवरराइड करने के लिए कोई "प्रति-उपयोगकर्ता" जैसी या कोई अन्य तरीका नहीं है।


-1

एक स्क्रिप्ट लिखना बहुत आसान प्रतीत होता है जो वर्कआउट करता है कि मेजबान कौन हैं, और फिर निम्नलिखित rsync कमांड के लिए hostname सेट करता है। कुछ इस तरह

#! / Usr / bin / श

होस्ट = "कोई नहीं"
Testfile = / tmp / testfile। $$
$ TESTFILE को स्पर्श करें
मैं के लिए में hosta hostb ओलिविया hostb
कर
    scp $ TESTFILE $ i: / tmp
    अगर [$? -एक ०]
    फिर
        होस्ट = $ मैं
    फाई
किया हुआ
rm $ टेस्टीमर

अगर [$ HOST! = "कोई नहीं"]
फिर
    इको $ HOST ऊपर है
    rsync -av --rsh = ssh फाइलें $ HOST: / dest
अन्य
    गूंज "कोई मेजबान नहीं मिला"
    बाहर निकलें 1
फाई

यह अप्रयुक्त है, और धारणाएं हैं, इसलिए आपको इसे सूट करने के लिए संशोधित करना होगा।


उत्तर के लिए धन्यवाद, लेकिन मैं एक और समस्या को हल करने की कोशिश कर रहा था: उपयोगकर्ता होम फ़ोल्डर में होस्ट नाम (होस्ट होस्ट होस्ट ओलिविया) की सूची को कैसे स्टोर और साझा करना है, जैसे कि मैं लिख सकता हूंrsync src olivia:/dst
mrucci
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.