web-dev-qa-db-ja.com

ユーザーごとのホストファイル

ユーザーごとに、つまりファイル/etc/hostsでホストエイリアス(/home/user/.hostsなど)を定義する方法はありますか?

私の主な目的は、小さなLAN内のマシン間でrsyncを介してホストエイリアスを簡単に共有することです。常に確実に接続されるマシンはないので、DNSサーバーはオプションではありません(そうですか?)。

ありがとうございました。

16
mrucci

より良い解決策は、Avahiとlibnss-mdnsをインストールしてから、HOSTNAME.localアドレスを使用することです。

これらの名前はユーザーごとではありませんが、LAN上のすべてのマシンに共通の名前を付けるという指定された目的を解決します。

8
Teddy

要求どおりの操作を行う方法については、 https://github.com/figiel/hosts を参照してください。

これは、LD_PRELOADを介してロードされ、プログラムがDNS解決に使用するgethostbyname()およびいくつかの関連関数をオーバーライドする小さなライブラリーです。それは私にはうまくいきます。私が見つけた唯一の警告は、Chrome WebブラウザはネイティブDNS解決を使用せず、代わりに独自のDNSクライアントを実装することです。その問題を解決するには、 ChromeのDNSクライアントを無効にします

3
Boris Bukh

Linuxのglibc実装ではそれができません。

しかし、あなたはそれができるnssライブラリでそれを拡張することができました。のnss_filesディレクトリにあるlibcの関連部分を取り去ることができるため、これは簡単に記述できます。

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

例えば

ただし、これは標準的ではない、奇妙なことです。

2
MarkR

ほとんどの場合稼働する2台のマシンがある場合、それぞれにBINDを立ち上げてDNSサーバーにするか、またはこれらの1台を取得します( http://www.marvell.com/ products/embedded_processors/developer/kirkwood/sheevaplug.jsp )。

その上でBINDを使用して、常にDNSを提供します。

0
Thomas Denton

このページの他の回答で説明されているように、同様の機能を実現する方法はいくつかありますが、

いいえ、/etc/hostsのような「ユーザーごとの」ファイルや、GNU/Linuxの非特権ユーザーとしてデフォルトの名前解決をオーバーライドする他の方法はありません。

0
daveloyall