ユーザーレベルで/etc/hostsファイルをオーバーライドする方法は? [コピー]

ユーザーレベルで/etc/hostsファイルをオーバーライドする方法は? [コピー]

重複の可能性:
/ etc / hostsを補完するためにユーザー固有のホストファイルを作成できますか?

簡単に言えば、私に特権アクセス権がないので、~/hostsそれを上書きできるファイルを取得できるかどうか疑問に思います。/etc/hosts

私が使用しているコンピュータには正しいDNSサーバーが設定されているようです。通常のコンピュータにpingを試みるとき名前私はそれを使用しており、失敗します。しかし、私がそれらを通してpingしようとしたときIPアドレス期待どおりに動作します。

スクリプトやその他の変更を避けたいです。マッスルメモリー手作りのコマンドライン™ 機械構成が悪いので作った。システム管理者に連絡しましたが、別のことがありました。

どのように実装できますか?

答え1

LD_PRELOADトリックに追加されます。そうでない場合は、簡単な選択肢は次のように自分の場所にnscdコピーすることです。libnss_files.so

mkdir -p -- ~/lib &&
cp /lib/x86_64-linux-gnu/libnss_files.so.2 ~/lib

コピーをバイナリ編集して、/etc/hosts同じ長さのものに置き換えます/tmp/hosts

perl -pi -e 's:/etc/hosts:/tmp/hosts:g' ~/lib/libnss_files.so.2

/tmp/hosts必須項目を追加するには編集してください。そして使用

export LD_LIBRARY_PATH=~/lib

代わりにnss_files見に来てください。/tmp/hosts/etc/hosts

代わりに/tmp/hosts、あなたはそれをすることができ、その後それを行う/dev/fd//3ことができます

exec 3< ~/hosts

たとえば、これにより、異なるコマンドで異なるファイルを使用できますhosts

$ cat hosts
1.2.3.4 asdasd
$ LD_LIBRARY_PATH=~/lib getent hosts asdasd 3< ~/hosts
1.2.3.4         asdasd

インストールして実行している場合は、nscd同じ方法で問題を解決できますが、今回はlibc.so.6nscdソケットへのパス(たとえば/var/run/nscd/socket)を存在しないパスに置き換えます。

関連情報