管理しているシステムのすべてのユーザーの履歴設定を変更したいと思います。以下のような接続端末からの情報を含めたいwho
sysadmin:/ # who
sysadmin pts/0 Mar 26 07:11 (sysadmin.doofus.local)
現在、以下の方法で履歴を変更しています。これらの設定の多くがここで何度か取り上げられていることは知っています。ただし、私はこのコードを「Linuxシステム管理レシピ:Juliet Kemp」から抜粋してずっと前に作成しました。
shopt -s histappend
PROMPT_COMMAND='history -n;history -a'
HISTSIZE=100000
HISTFILESIZE=100000
HISTTIMEFORMAT="%m/%d/%y %T "
shopt -s histappend
複数の端末を開いているときの問題が修正され、情報が失われる場合があります。
PROMPT_COMMAND='history -n;history -a'
複数の端末間で履歴にリアルタイムで追加できるように拡張されています。
HISTSIZE=100000
HISTFILESIZE=100000
history
保存
期間を延長します
HISTTIMEFORMAT="%m/%d/%y %T
"履歴の各行の前にタイムスタンプを付けます
通常得られるもの history
835 ls
836 cd ..
私が変更した現在のhistory
結果
5853 03/26/12 07:16:49 ls
5854 03/26/12 07:16:50 ll
history
見たいからの帰り
5853 03/26/12 07:16:49 sysadmin.doofus.local ls
5854 03/26/12 07:16:50 sysadmin.doofus.local ll
001 03/26/12 05:11:29 demo_user.doofus.local cd
002 03/26/12 05:11:30 demo_user.doofus.local ll
私はそのDNS
名前を見て「結婚」していません。それがそこからプルしwho
たり、他の場所からプルしたりする場合にのみ、それを必要とするでしょう。ルックアップやクエリを実行する必要はありません。IPアドレスでよかったです。
002 03/26/12 05:11:30 192.168.0.2 ll
どうして?私は、同じグループの複数のユーザーが毎日のタスクを実行するために共有するユーザーIDを持つ複数のシステムを管理しています。これにより、組織内の実際の場所と実際のユーザーを、彼らが履歴で行ったことと関連付けることができます。
これは最適ではないので変更したいと思いますが、船に乗っているときはクルーズライナーのサイズなので、ヘアピンを回転させようとはしません。(注:乗客が船外で投げようとした場合)
とにかく、それらをより良いソリューションに移行できるようになるまで、この追跡機能を使用したいと考えています。
また、私のhistory
変更に現在使用しているものについて推奨事項がある場合は、ぜひお聞かせください。
おかげで、
編集:1
他のプログラムを実行したり、「理由の範囲内」で追加の設定をしたりしたくありません。
0
オーバーヘッドを追加したいのですが、追加する必要がある場合は、それを小さくする必要があります。
同じユーザー:パスワードでシステムにログインした10人のユーザーのうちどれがそれを実行したかを確認したい(何かが発生した場合)自分のユーザーを信頼します。または、ユーザーではなかったかもしれませんが、cron
何かをするためにユーザーとして接続を実行するシステムで忘れられた可能性があります。または、アプリケーションEx:BMC Control-M
接続しssh
てタスクを実行します。最小限の労力でそれを追跡できるので、「悪意のあるユーザー」を見つけることではありません。
編集2:
システムはSLESおよびRHELを実行している
/proc
/dev
、などの/home
ディレクトリやユーザーディレクトリを除外することをお勧めします。これはオーバーヘッドを追加します。一方でhistory
「静的」という方法や、変数やファイル入力に保存されている設定することができ、この情報はすでに利用可能でない場合は...既に記録されており、その接続情報は、IPなどを接続するシステムに知られているhistory
レコードとパフォーマンスヒットを非常に小さい、または0になります
auditd
。そのログで十分な情報が得られるかどうかはわかりません。あなたが望むものの難しさは、正確に共有アカウントがとても非難されている理由です。
auditd
があるのとよく似inotify
ています。個々のファイル、ディレクトリなど。そのレベルの構成には行きたくありません。実際(私はそうします)が、本質的にはあまり気にしません。私はそれpuppet
を処理しなければなりません。auditd
には、追加の負荷とセットアップ時間も付属しています。アカウントが何かを変更している場合、私はまだ履歴を振り返って、誰が何をログインして試行しているかを確認したいと思います。
PROMPT_COMMAND=
次のプロンプトの前に通常のコマンドを実行するだけなので、履歴ファイルの最終行で情報を追加するsed / awkを呼び出す関数を作成できませんでした。次に、その関数を呼び出してPROMPT_COMMAND=
データを追加しますか?それはハッキーですが、仕事をする必要があります。