ไฟล์โฮสต์ต่อผู้ใช้


16

มีวิธีการกำหนดชื่อแทนโฮสต์ (เช่นใน/etc/hosts) บนพื้นฐานต่อผู้ใช้เช่นในไฟล์/home/user/.hostsหรือไม่?

วัตถุประสงค์หลักของฉันคือการแบ่งปันนามแฝงของโฮสต์ผ่าน rsync ระหว่างเครื่องใน lan ขนาดเล็กของฉันได้อย่างง่ายดาย เนื่องจากไม่มีเครื่องที่จะเชื่อมต่อที่เชื่อถือได้เสมอเซิร์ฟเวอร์ DNS จึงไม่ใช่ตัวเลือก (ใช่ไหม)

ขอขอบคุณ.


2
โอ้ว้าว. ฉันกำลังจะโพสต์คำถามเดียวกันนี้ แต่ฉันเห็นคุณมี มันสมเหตุสมผลสำหรับฉัน แต่ก็แปลกที่ไม่มีใน Linux ในกรณีของฉันฉันมีรูปแบบ Linux ของระบบปฏิบัติการ Android บนอุปกรณ์ Samsung Galaxy Tab ของฉันและเนื่องจากการพัฒนาเว็บไซต์ของฉันฉันมักจะต้องแก้ไข / etc / hosts ใน Linux ที่ถูกจำคุกคุณจะไม่สามารถแก้ไข / etc / hosts ได้ ดังนั้น ~ / .hosts จะเจ๋งจริงๆที่จะมีแน่นอน!
ServerChecker

คุณพบทางออกในที่สุด?
quamis

แต่น่าเสียดายที่ไม่ได้. อาจเป็นไปไม่ได้เพราะเป็นภัยคุกคามความปลอดภัย
mrucci

1
สำหรับ SSH คุณสามารถใช้นามแฝงเป็นวิธีแก้ปัญหาบางส่วน ใส่alias ssh="ssh "ใน. bashrc ของคุณ (สังเกตช่องว่างท้ายท้ายนามแฝง) พร้อมด้วยalias myhost="me@real-name-of-my-host.com"จากนั้นคุณสามารถพูดssh myhostและมันจะทำงาน
Noah Sussman

วิธีที่ดีกว่าสำหรับการแก้ปัญหาคือการใส่ข้อมูลลงใน~/.ssh/configตำแหน่งที่คุณเพิ่มบรรทัด: Host my-hostและHostname 10.0.0.xxx<- IP ของเครื่อง สิ่งที่ดีคือมันยังช่วยให้คุณสามารถระบุชื่อผู้ใช้, พอร์ต, คีย์ที่ใช้ ฯลฯ
Ciprian Tomoiagă

คำตอบ:


8

ทางออกที่ดีกว่าคือการติดตั้ง Avahi และ libnss-mdns จากนั้นใช้HOSTNAME.localที่อยู่

ชื่อเหล่านี้จะไม่ต่อผู้ใช้ แต่จะแก้ไขวัตถุประสงค์ที่ระบุไว้ของคุณในการมีชื่อสามัญสำหรับเครื่องทั้งหมดใน LAN


มีวิธีการระบุ HOSTNAMES.local ในไฟล์โลคัล (ต่อผู้ใช้) มากกว่าใน / etc / avahi / hosts หรือไม่?
mrucci

ฉันคิดว่าเท็ดดี้หมายความว่าเครื่องแต่ละเครื่องจะมีชื่อที่ Avahi จะค้นพบ ควรการจับคู่ระหว่างเครื่องกับชื่อควรแตกต่างกันไปตามแต่ละผู้ใช้หรือไม่?
pjc50

ไม่ไม่ควรแตกต่างกันไปสำหรับแต่ละผู้ใช้ ฉันต้องการวิธีการแชร์นามแฝงโฮสต์ (ในวิธีที่ทำให้ฉันสามารถทำได้ping hostnameAlias) โดยไม่ต้องใช้สิทธิ์รูท Avahi ทำงานได้ถูกต้องเกือบเพราะฉันสามารถใช้เครื่อง $ HOSTNAME เป็นนามแฝงได้ สำหรับความอยากรู้: ทำแผนที่นี้ที่ไหน?
mrucci

3

ดูhttps://github.com/figiel/hostsสำหรับวิธีการทำสิ่งที่คุณขอ

นั่นคือไลบรารีขนาดเล็กโหลดผ่าน LD_PRELOAD และแทนที่ gethostbyname () และฟังก์ชั่นที่เกี่ยวข้องหลายอย่างที่โปรแกรมใช้สำหรับการแก้ปัญหา DNS มันทำงานได้ดีสำหรับฉัน ข้อแม้เดียวที่ฉันพบคือเว็บเบราว์เซอร์ Chrome ไม่ได้ใช้การแก้ไข DNS ดั้งเดิม แต่ใช้ไคลเอ็นต์ DNS ของตัวเองแทน เพื่อแก้ปัญหาที่คุณต้องไคลเอ็นต์ DNS ปิดการใช้งานของ Chrome


2

การติดตั้ง Linux 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 )

ใช้ BIND กับมันเพื่อใช้งาน DNS ของคุณเสมอ


0

ตามที่คำตอบอื่น ๆ ในหน้านี้อธิบายมีวิธีที่จะทำให้เกิดการทำงานที่คล้ายกัน แต่:

ไม่ไม่มีไฟล์ "ต่อผู้ใช้" ที่เหมือน/etc/hostsหรือวิธีอื่นใดในการแทนที่การแก้ไขชื่อเริ่มต้นในฐานะผู้ใช้ที่ไม่มีสิทธิพิเศษใน GNU / Linux


-1

ดูเหมือนจะง่ายกว่ามากในการเขียนสคริปต์ที่ใช้งานได้ว่าโฮสต์ใดบ้างแล้วตั้งชื่อโฮสต์สำหรับคำสั่ง rsync ต่อไปนี้ บางสิ่งเช่นนี้

#! / usr / bin / ดวลจุดโทษ

HOST = "ไม่มี"
TESTFILE = / tmp / testfile. $$
แตะที่ $ TESTFILE
สำหรับฉันใน hosta hostb olivia
ทำ
    scp $ TESTFILE $ i: / tmp
    ถ้า [$? -eq 0]
    แล้วก็
        HOST = $ i
    Fi
เสร็จแล้ว
rm $ TESTFILE

ถ้า [$ HOST! = "none"]
แล้วก็
    echo $ HOST ใกล้หมดแล้ว
    rsync -av --rsh = ssh ไฟล์ $ HOST: / dest
อื่น
    echo "ไม่พบโฮสต์"
    ทางออก 1
Fi

สิ่งนี้ยังไม่ได้ทดสอบและมีสมมติฐานดังนั้นคุณจะต้องแก้ไขให้เหมาะสม


ขอบคุณสำหรับคำตอบ แต่ฉันพยายามแก้ไขปัญหาอื่น: วิธีการจัดเก็บและแบ่งปันรายชื่อโฮสต์ (hosta hostb hostc olivia) ในโฟลเดอร์หน้าแรกของผู้ใช้เช่นที่ฉันสามารถเขียนrsync src olivia:/dst
mrucci
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.