web-dev-qa-db-ja.com

Linuxで使用されたコマンドのログはどこにありますか?

Linuxでは、一般的に多くのコマンドを使用しており、それらすべてを覚えることは困難です。

 history

commandは、以前に使用したコマンドのリストを提供しますが、その制限はより少なくなっています。新しいコマンドは古いコマンドで上書きされ、古いコマンドが失われます。コマンドのログがシステムのどこかに保存されていると思います。

そのログは開いて読むことができますか?可能であれば、処理できるログの最大サイズを変更できますか?

historyコマンドの出力はログインユーザーに依存していますか?

5
Abdul Gafoor

ファイル ~/.bash_historyは、実行されたコマンドのリストを保存します。少なくともCentOSにはこのファイルが存在しますが、他のディストリビューションに存在するかどうかはわかりません。

6
migrc

単純な解決策は、historyによって保存および返されるコマンドの数を増やすことです。 bashを使用する場合は、次の行を~/.profileに追加します。

export HISTSIZE=100000
export HISTFILESIZE=999999

man bashから:

   HISTFILESIZE
          The maximum number of lines contained in the history file.  When
          this  variable  is  assigned  a value, the history file is trun‐
          cated, if necessary, to contain no  more  than  that  number  of
          lines  by removing the oldest entries.  The history file is also
          truncated to this size after writing it when a Shell exits.   If
          the  value  is  0,  the  history file is truncated to zero size.
          Non-numeric values and numeric values  less  than  zero  inhibit
          truncation.   The  Shell  sets the default value to the value of
          HISTSIZE after reading any startup files.
   HISTSIZE
          The number of commands to remember in the command  history  (see
          HISTORY  below).   If  the value is 0, commands are not saved in
          the history list.  Numeric values less than zero result in every
          command  being  saved  on  the history list (there is no limit).
          The Shell sets the  default  value  to  500  after  reading  any
          startup files.
14
terdon

少なくともデフォルトでは、そのようなログはありません。

システムで実行されたすべてのプログラムを追跡できるacct(「プロセスおよびログインアカウンティング用のGNUアカウンティングユーティリティ」)などのインストールできるツールがあります。

acctは、ほとんどの(おそらくtiny-distros以外のすべての)Linuxディストリビューション用にパッケージ化されています。ホームページは http://www.gnu.org/software/acct/ にあります。

acctは次のコマンドを提供します。lastcommはおそらくあなたが望んでいることを行います:

acは、ユーザーの接続時間に関する統計を出力します。 acは、特定のユーザーまたはユーザーのグループがシステムに接続されていた時間を示し、日別またはwtmpファイルのすべてのエントリの合計を出力します。

acctonはアカウンティングをオンまたはオフにします。

lastcommは、システムで実行されたコマンドを最新のものから順にリストし、各コマンドの実行状態を示します。最後に、特定のユーザー、端末、またはコマンドのacctファイルを検索できます。

saは、acctファイルの情報をsavacctおよびusracctファイルに要約します。また、コマンドに関するレポートを生成し、呼び出しの数、使用されたCPU時間、平均コア使用率などを提供します。

dump-acct dump-utmpは、人間が読める形式でacctファイルとutmpファイルを表示します。

6
cas

私はあなたの質問に答えるために別のアプローチをとります。 ~/.bash_historyログは、コマンド、スクリプト、ワンライナーなどをログに記録しますが、履歴についてユーザーは完全に制御できます

SAの観点からは、おそらくこれは望まないでしょう。代わりに、システムで何が実行されるかauditしたいでしょうか?

これを行う方法はauditdを使用することです。 /etc/auditd/auditd.rulesのルールの例を以下に示します:-w /sbin/mkfs -p x -k sbin_mkfs -w /sbin/mke2fs -p x -k sbin_mke2fs -w /sbin/mkswap -p x -k sbin_mkswap -w /sbin/mkinitrd -p x -k sbin_mkinitrd -w /sbin/modinfo -p x -k sbin_modinfo -w /sbin/modprobe -p x -k sbin_modprobe

auditdは、上記のコマンドのいずれかが実行されると/var/log/audit/にログを記録し(-p x)、システムで実行されたすべてのコマンドとその実行者を表示できます。サイズを指定するbufferがあり、auditdを設定して古いログなどを上書きできます。

これはあなたが望んでいるようです?

2
user26053

bashを使用しない場合、[しない]~/.bash_historyに含まれますが、~/.<Shell name>_historyは含まれます。たとえば、私はzshを使用し、私のログは~/.zsh_historyにあります。

0
Octavia Togami