ホームページ >運用・保守 >Linuxの運用と保守 >Linuxシェルのコマンド履歴記録機能の使い方
Linux では、history コマンドを使用して、ユーザーのすべての履歴操作を表示できます。同時に、シェル コマンドの操作記録は、デフォルトでユーザー ディレクトリの .bash_history ファイルに保存されます。このファイルを通じて、シェル コマンドの実行履歴を照会することができ、運用保守担当者がシステム監査やトラブルシューティングを行うのに役立ちます。同時に、サーバーがハッカーに攻撃された後、ハッカーによるコマンド操作の履歴を照会することもできます。サーバーにログインしています。ただし、ハッカーが侵入した後、痕跡を消去するために .bash_history ファイルを削除するため、このファイルの適切なバックアップが必要になります。
デフォルトの履歴コマンドは、ユーザーの操作履歴を表示することしかできませんが、各ユーザーがコマンドを操作した時刻を区別することはできません。これはトラブルシューティングにとって非常に不便です。解決策は、次の 4 行を /etc/bashrc ファイルに追加して、history コマンドがすべてのシェル コマンドの実行時間を自動的に記録できるようにすることです。
コードをコピーする コードは次のとおりです。
histfilesize=4000
histsize=4000
histtimeformat='%f %t'
export histtimeformat
histfilesize は、コマンドを保存するレコードの合計数を表します。 .bash_history ファイル内。デフォルト値は 1000 です。 histsize は、history コマンドによって出力されるレコードの総数を定義します。 histtimeformat は、date コマンドの後の ""%f %t"" と同じ時間表示形式を定義します。 histtimeformat は、history コマンドに値を渡すための履歴の時間変数として使用されます。
高度なヒント
上記のものは時間を記録できますが、監査目的には使用できず、ハッカーによって簡単に改ざんされたり紛失したりする可能性があります。次の方法では、システムにログインしているユーザー、IP アドレス、シェル コマンド、および詳細な操作時間を詳細に記録します。そして、システムの監査やトラブルシューティングのために、この情報をファイルの形式で安全な場所に保存します。
上記の機能を実現するには、/etc/profile ファイルに次のコードを記述します。
コードをコピーします。コードは次のとおりです。
#レコード履歴操作
user_ip=`who -u am i 2>/dev/null |awk '{print $ nf}' |sed -e 's/[()]//g'`
logname=`誰 -u am i |awk '{print $1}'`
histdir=/user/share/。履歴
if [ -z $user_ip]
then
user_ip=`ホスト名`
fi
if [ ! -d $histdir]
then
mkdir - p $histdir
chmod 777 $histdir
fi
if [! -d $histdir/${logname}]
then
mkdir -p $histdir/${logname}
chmod 300 $histdir/${logname}
fi
export histsize=4000
dt=`日付 "%y%m%d_%h%m%s" `
export histfile="$histdir/${logname}/${user_ip}.history.$dt"
export histtimeformat="[%y.%m.%d %h:%m:%s ]"
chmod 600 $histdir/${logname}/*.history* 2>/dev/null
以上がLinuxシェルのコマンド履歴記録機能の使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。