シェルコマンドは、ログアウトして再度ログインするまで、/ etc / hostsへの変更を認識しません。

シェルコマンドは、ログアウトして再度ログインするまで、/ etc / hostsへの変更を認識しません。

今日私のサーバーでこの動作を見つけて、何が起こっているのかをもっと詳しく知りたいです。

SSH経由でRHEL 6サーバーに接続している間にコマンドを実行すると、wFROMフィールドにSSHクライアントのIPの代わりにホスト名を印刷しようとします。たとえば、ping私は8.8.8.8をDNSとして使用し、google.comの確認はうまくいきます。

したがって、クライアントのエントリを含めるようにSSHサーバーで/ etc / hostsを編集しました。ホスト名でクライアントをpingすると正常に動作しますが、wFROMフィールドにはまだIPアドレスが表示されます。

ログアウトして再度ログインしてw再発行すると、FROMフィールドに/ etc / hostsで設定したホスト名でSSHクライアントが一覧表示されます。

私の質問はなぜログアウト/ログインするのですか?再度ログインした後、どのような変更や更新が発生しましたか?

私はRHEL 6ベースの最新バージョン、bash-4.1.2-33.el6_7.1を使用しています。

ベストアンサー1

w/var/run/utmp誰がログインしているのか、どこでログインしたのかを知るには読んでください。utmpユーザーがログインまたはログアウトすると、履歴が更新されます。

/etc/hostsDNSまたはIPエントリがない場合ユーザーがログインしたときその後、ログインプロセス(この場合はsshd)はホスト名フィールドを空白のままにしますutmp

ログアウトして/etc/hostsエントリを追加して再度ログインすると、sshdIPを検索して今回ホスト名を見つけたため、Hostnameフィールドに正しいデータが追加されましたutmp

man 5 utmpファイル形式の詳細については、次を参照してください。/var/run/utmp

おすすめ記事