我想添加時間戳和用戶,誰執行命令到我的歷史命令。這甚至有可能嗎?添加時間戳和用戶到bash歷史
中添加這一行到〜/ .bashrc中,你能時間戳添加到歷史命令:
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」現在充當「根」。
我想記錄「真實」用戶(在這種情況下是「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
這是完美的,但不幸的是,它不保留/保存真實用戶與歷史。如果別人登錄,所有的命令,這是在這個例子作爲用戶執行「MAX-mustermann」將更新爲新的用戶,誰已經登錄:
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
我怎樣才能解決這個問題?
感謝您的提示,但不幸的是,您的第二個提示是一樣的結果。而不是「sudo su」,你也可以使用「sudo -i」,但是會發生同樣的情況。第一個解決方案對我來說沒有選擇,但可能是一個可行的解決方案。 – Sebbo