2016-08-25 7 views
1

私の履歴コマンドにコマンドを実行したタイムスタンプとユーザを追加します。これも可能ですか? 〜/ .bashrcのに次の行を追加することでタイムスタンプとユーザをbash履歴に追加する

、あなたはhistoryコマンドにタイムスタンプを追加することができます:

HISTTIMEFORMAT="[ %Y/%m/%d %T ] " 

これは歴史を実行することにより、このようなものになり

 1841 [ 2016/08/25 10:57:54 ] ls 
    1842 [ 2016/08/25 10:57:56 ] who 
    1843 [ 2016/08/25 10:57:59 ] last 
    1844 [ 2016/08/25 10:58:10 ] uptime 
    1845 [ 2016/08/25 10:58:13 ] history 

ここで、追加情報が必要です。どの実ユーザがこれらのコマンドを実行しましたか?

はい、履歴は保存され、個々のユーザーごとに$ HISTFILE(〜/ .bash_history)に書き込まれますが、通常はすべてのユーザーに "firstname-name"などのユーザー自身のログインがあります。

「max-mustermann」と呼ばれるユーザーの例は、SSH経由でログインし、たとえば「root」というユーザーに切り替えます。ユーザー "max-mustermann"は現在 "root"として動作しています。

「実際の」ユーザー(この場合は「max-mustermann」)と使用されたIPアドレスなどの追加情報を記録して、「uptime」というコマンドを実行したユーザーを識別できます"ルート"。私は解決策を見つけましたが、実際には機能しませんでした。それをテストするためにあなたの〜/ .bashrcに以下の行を追加します。

TTY_CON=$(tty | cut -d '/' -f 3-); 
    HIST_WHO_INFO=$(who | grep "${TTY_CON}" | cut -d ' ' -f 1,12); 
    HISTTIMEFORMAT="[ %Y/%m/%d %T by ${HIST_WHO_INFO} ] " 

これは、このような何かを返します。完璧だ

 1848 [ 2016/08/25 11:06:47 by max-mustermann (10.50.1.42:S.0) ] ls 
    1849 [ 2016/08/25 11:06:48 by max-mustermann (10.50.1.42:S.0) ] who 
    1850 [ 2016/08/25 11:06:49 by max-mustermann (10.50.1.42:S.0) ] last 
    1851 [ 2016/08/25 11:06:51 by max-mustermann (10.50.1.42:S.0) ] uptime 
    1852 [ 2016/08/25 11:06:52 by max-mustermann (10.50.1.42:S.0) ] history 

を、残念ながら、それは実際のユーザーを保存/保持しません歴史と一緒に。

 1848 [ 2016/08/25 11:06:47 by somebody-else (10.50.1.18) ] ls 
    1849 [ 2016/08/25 11:06:48 by somebody-else (10.50.1.18) ] who 
    1850 [ 2016/08/25 11:06:49 by somebody-else (10.50.1.18) ] last 
    1851 [ 2016/08/25 11:06:51 by somebody-else (10.50.1.18) ] uptime 
    1852 [ 2016/08/25 11:06:52 by somebody-else (10.50.1.18) ] history 
    1853 [ 2016/08/25 11:08:13 by somebody-else (10.50.1.18) ] history 

がどのように私はこの問題を解決することができます誰かがログインすると、この例では、ユーザ「MAX-mustermann」として実行されたすべてのコマンドは、ログインした新しいユーザーに更新されますでしょうか?

答えて

0

これは、サーバーの構成やユーザーの動作によっては必ずしも可能ではありませんが、ユーザーを適切に教育している場合にはそうである可能性があります。あなたがこの情報を得ることができる2つの方法(私が知っている)があります。

  1. 実際に必要なときにだけsudoを使用してください。 rootに "切り替え"てコマンドを実行しないでください。 rootアクセスが必要なときはいつでも、sudo接頭辞を付けて別々のコマンドを実行してください。そうすれば、履歴はユーザーごとに保存されます(そして、ほとんどのシステムでは、sudoログは/var/log/auth.logファイルに書き込まれます)。

  2. sudo su -彼らはsudo suを使用してrootに切り替えてくださいとない-は、その環境変数をリセットします。しかし、-を省略すると、ルート環境変数には、アカウントに切り替えたユーザーを保持する変数SUDO_USERが必要です。たとえば、次のように

    [email protected]:~$ sudo su 
    [email protected]:/home/oldskool# echo $SUDO_USER 
    oldskool 
    

あなたの履歴TIMEFORMATにそのSUDO_USERを使用することができます。

+0

ヒントはありがたいですが、残念ながら、2番目のヒントでも同じ結果になります。 "sudo su"の代わりに "sudo -i"を使うこともできますが、同じことが起こります。最初の解決策は私のための選択肢ではありませんが、実際の解決策かもしれません。 – Sebbo

関連する問題