Tệp lưu trữ trên mỗi người dùng


16

Có cách nào để xác định bí danh máy chủ (như trong /etc/hosts) trên cơ sở mỗi người dùng, tức là trong một tệp /home/user/.hostskhông?

Mục tiêu chính của tôi là dễ dàng chia sẻ bí danh máy chủ thông qua rsync giữa các máy trong lan nhỏ của tôi. Vì không có máy nào luôn luôn được kết nối một cách đáng tin cậy, nên máy chủ DNS không phải là một tùy chọn (phải không?).

Cảm ơn bạn.


2
Tuyệt vời. Tôi đã định đăng câu hỏi tương tự, nhưng tôi thấy bạn có. Nó có ý nghĩa với tôi, nhưng kỳ lạ là nó không tồn tại trên Linux. Trong trường hợp của tôi, tôi có một dạng Linux bị bỏ tù với HĐH Android trên thiết bị Samsung Galaxy Tab của mình và vì sự phát triển web của tôi, tôi thường cần phải chỉnh sửa / etc / hosts. Trong một Linux bị bỏ tù, bạn không thể chỉnh sửa / etc / hosts. Vì vậy, một ~ / .hosts sẽ thực sự tuyệt vời để có, chắc chắn!
ServerChecker

bạn đã tìm thấy bất kỳ giải pháp cuối cùng?
quamis

Không may măn. Có lẽ điều đó là không thể bởi vì đó là một mối đe dọa an ninh.
mrucci

1
Đối với SSH, bạn có thể sử dụng bí danh như một cách giải quyết một phần. Đặt alias ssh="ssh "trong .bashrc của bạn (lưu ý khoảng trắng ở cuối bí danh) cùng với alias myhost="me@real-name-of-my-host.com"và sau đó bạn có thể nói ssh myhostvà nó sẽ hoạt động.

Một cách tiếp cận tốt hơn cho cách giải quyết sẽ là đặt một mục nhập vào ~/.ssh/confignơi bạn thêm các dòng: Host my-hostHostname 10.0.0.xxx<- IP của máy. Điều thú vị là nó cũng cho phép bạn chỉ định tên người dùng, cổng, sử dụng khóa nào, v.v.
Ciprian Tomoiagă

Câu trả lời:


8

Một giải pháp tốt hơn sẽ là cài đặt Avahi và libnss-mdns, sau đó sử dụng HOSTNAME.localđịa chỉ.

Những tên này sẽ không phải là mỗi người dùng, nhưng sẽ giải quyết mục tiêu đã nêu của bạn là có tên chung cho tất cả các máy trên mạng LAN.


Có cách nào để chỉ định HOSTNAMES.local trong tệp cục bộ (theo người dùng) thay vì trong / etc / avahi / hosts không?
mrucci

Tôi nghĩ Teddy có nghĩa là mỗi máy sẽ có một cái tên mà Avahi sẽ khám phá. Ánh xạ tên máy có thực sự khác nhau trên cơ sở mỗi người dùng không?
pjc50

không, nó không nên thay đổi trên cơ sở mỗi người dùng. Tôi chỉ cần một phương pháp để chia sẻ bí danh máy chủ (theo cách cho phép tôi làm ping hostnameAlias) mà không cần quyền root. Avahi gần như làm đúng công việc, vì tôi có thể sử dụng máy $ HOSTNAME làm bí danh. Chỉ vì tò mò: nơi ánh xạ này được thực hiện?
mrucci

3

Xem https://github.com/figiel/hosts để biết cách thực hiện chính xác những gì bạn yêu cầu.

Đó là một thư viện nhỏ, được tải thông qua LD_PRELOAD và ghi đè gethostbyname () và một số chức năng liên quan mà các chương trình sử dụng để phân giải DNS. Nó hoạt động tốt cho tôi. Nhắc nhở duy nhất mà tôi tìm thấy là trình duyệt web Chrome không sử dụng độ phân giải DNS gốc mà thay vào đó thực hiện ứng dụng khách DNS của chính nó. Để giải quyết vấn đề đó, bạn cần phải tắt ứng dụng khách DNS của Chrome .


2

Việc triển khai glibc Linux không thể làm điều đó.

Nhưng bạn có thể mở rộng nó với một thư viện nss có thể. Điều này sẽ dễ viết vì bạn có thể tách ra phần có liên quan của libc trong thư mục nss_files trong

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

Ví dụ

Tuy nhiên, điều này sẽ là một điều không tiêu chuẩn khá kỳ lạ để làm.



0

Như các câu trả lời khác trên trang này mô tả, có nhiều cách để đạt được chức năng tương tự, nhưng:

Không, không có tệp "theo người dùng" như /etc/hostshoặc bất kỳ cách nào khác để ghi đè độ phân giải tên mặc định là người dùng không có đặc quyền trong GNU / Linux.


-1

Có vẻ dễ dàng hơn nhiều để viết một tập lệnh tìm ra máy chủ nào đang hoạt động, sau đó đặt tên máy chủ cho lệnh rsync sau. Một cái gì đó như thế này

#! / usr / bin / sh

HOST = "không"
TESTFILE = / tmp / testfile. $$
chạm vào $ KIỂM TRA
cho tôi trong hosta hostb hostc olivia
làm
    scp $ KIỂM TRA $ i: / tmp
    nếu [$? -eq 0]
    sau đó
        GIỜ = $ i
    fi
làm xong
rm $ KIỂM TRA

nếu [$ HOST! = "không"]
sau đó
    echo $ HOST đã hết
    rsync -av --rsh = ssh tệp $ HOST: / mệnh
khác
    echo "Không tìm thấy máy chủ"
    thoát 1
fi

Điều này chưa được kiểm tra và có các giả định, vì vậy bạn sẽ phải sửa đổi nó cho phù hợp.


Cảm ơn bạn đã trả lời nhưng tôi đã cố gắng giải quyết một vấn đề khác: làm thế nào để lưu trữ và chia sẻ danh sách tên máy chủ (hosta hostb hostc olivia) trong một thư mục nhà người dùng, để tôi có thể viếtrsync src olivia:/dst
mrucci
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.