GNU/Linux >> Linux の 問題 >  >> Linux

Linux で選択したユーザーのコマンド履歴を保存する方法

Bash の非常に強力でクールなコマンドは歴史にあります。簡単に言えば、デフォルトでは、Bash は入力したすべてのコマンドの履歴を保存します。 HISTSIZE 変数の値によって、セッション中に履歴リストに保持されるイベントの数が決まります。 HISTSIZE のデフォルト値は 500 ですが、10000 などのより便利な値に設定することもできます。シェルを終了すると、最近実行されたコマンドが HISTFILE 変数で指定されたファイルに保存されます (デフォルトはホーム ディレクトリの .bash_history です)。この投稿では、Linux で特定のユーザーのコマンド履歴を保存する手順の概要を説明します。

1. 新しいグループ モニターを作成します。監視する必要があるユーザーをセカンダリ グループとして追加します。

# groupadd monitor
# usermod -a -G monitor [user] 

例:

# usermod -a -G monitor opc
# id opc
uid=1000(opc) gid=1000(opc) groups=1000(opc),1002(admins),1003(monitor) 

2. シェル履歴が保存されるディレクトリ /var/log/shelllogs を作成します。

# mkdir /var/log/shelllogs
# chown root:monitor /var/log/shelllogs
# chmod 770 /var/log/shelllogs
# chmod +t /var/log/shelllogs

3. /etc/profile.d にスクリプトを作成し、履歴形式を微調整して、ユーザーがログインするたびにエクスポートされるようにします。

# cat /etc/profile.d/history.sh
export HISTSIZE=10000
export HISTTIMEFORMAT='%F %T '
export HISTFILE=/var/log/shelllogs/$(who am i | awk '{print $1}';exit)-as-$(whoami)-$(date +%F-%T)
export PROMPT_COMMAND='history -a'

4. /etc/bashrc を編集します ファイルの末尾に次の行を追加します。

test "$(ps -ocommand= -p $PPID | awk '{print $1}')" == 'script' || (script -f /var/log/shelllogs/$(who am i | awk '{print $1}';exit)-as-$(whoami)-$(date +%F-%T)_console.log)

別の ssh/putty セッションを介して同じサーバーにログインし、ファイルが作成されていることを確認します。


Linux
  1. Linuxでhistoryコマンドを使用する方法

  2. LinuxでSuコマンドを使用する方法

  3. LinuxでBashの履歴から特定のコマンドをクリアする方法

  1. Linuxでコマンド出力をファイルに保存する方法

  2. LinuxでBASHコマンドライン履歴をクリアする方法

  3. Linux履歴コマンド

  1. Linuxの履歴コマンドの使用方法

  2. LinuxでBashの履歴をクリアする方法

  3. Linuxのコマンド履歴を管理する方法