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


16

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

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

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


2
ああすごい。私はこの同じ質問を投稿しようとしていましたが、あなたが持っていると思います。私には理にかなっていますが、Linuxには存在しません。私の場合、Samsung Galaxy TabデバイスにAndroid OSを搭載したLinuxの投獄されたフォームがあり、Web開発のために/ 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、それが動作します。
ノアSussman

回避策のためのより良いアプローチは~/.ssh/config、行を追加する場所にエントリを置くことです:Host my-hostおよびHostname 10.0.0.xxx<-マシンのIP。良い点は、ユーザー名、ポート、使用するキーなどを指定できることです。
CiprianTomoiagă18年

回答:


8

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

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


/ etc / avahi / hostsではなくローカルファイル(ユーザーごと)でHOSTNAMES.localを指定する方法はありますか?
mrucci

Teddyは、各マシンにAvahiが発見する名前があることを意味すると思います。マシンから名前へのマッピングは実際にユーザーごとに異なるべきですか?
pjc50 2009年

いいえ、ユーザーごとに変わるべきではありません。ping hostnameAliasルート権限なしでホストエイリアスを(私ができるように)共有する方法が必要です。マシン$ HOSTNAMEをエイリアスとして使用できるため、Avahiはほぼ正しい仕事をします。好奇心のために:このマッピングはどこで行われますか?
mrucci

3

正確に求めることを行う方法については、https://github.com/figiel/hostsを参照してください

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


2

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

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

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

例えば

ただし、これはやるべき奇妙な非標準的なことです。



0

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

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


-1

どのホストが起動しているかを調べ、次のrsyncコマンドのホスト名を設定するスクリプトを書く方がはるかに簡単に思えます。このようなもの

#!/ usr / bin / sh

HOST = "none"
TESTFILE = / tmp / testfile。$$
$ TESTFILEをタッチします
hosta hostb hostc oliviaのi
行う
    scp $ TESTFILE $ i:/ tmp
    if [$?-eq 0]
    それから
        HOST = $ i
    fi
やった
rm $ TESTFILE

if [$ HOST!= "none"]
それから
    echo $ HOSTが起動しています
    rsync -av --rsh = ssh files $ HOST:/ dest
そうしないと
    echo "ホストが見つかりません"
    1番出口
fi

これはテストされておらず、仮定があるため、それに合わせて変更する必要があります。


私は書くことができるように、ユーザーのホームフォルダにどのようにホスト名のリストを保存し、共有するために(ギボウシHOSTB HOSTCオリビア):答えてくれてありがとうしかし、私は別の問題を解決しようとしていたrsync src olivia:/dst
mrucci
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.