#historyの上書き問題
LAN外部から踏み台サーバを経由してLAN内部にsshして入る事を考える.
[サーバA(LAN外部)] <---> [サーバB(踏み台)] <---> [サーバC(LAN内部)]
- サーバAからサーバBにログインしたときにサーバB上のhistoryの記録が開始される.
- サーバBからサーバCにログインしたときにサーバC上のhistoryの記録が開始される.
- サーバCからログアウトしたときにサーバC上のhistoryが書き込まれる.
- サーバBからログアウトしたときにサーバB上のhistoryが書き込まれる.
ここで,サーバBとサーバCがLDAPにより同じ環境をマウントしている場合を考える.
サーバBとサーバCのhistoryの書き込み先(~/.bash_history)が同じファイルなので,サーバC上のhistoryが上書きによって失われる.
#解決策
historyの書き込み先は環境変数$HISTFILEによって決定される.
デフォルトは~/.bash_historyである.
よって.bashrcでサーバごとに$HISTFILEを変更し,historyの書き込み先が被らないように設定する.
["$HOSTNAME"=="hogehoge" ] && HISTFILE=~/.bash_history_hogehoge
#結果
サーバごとに異なるhistoryを持つ.