Bashrc

如何格式化歷史文件以包含使用者名?

  • January 15, 2019
tail -2 /root/.bashrc
export HISTTIMEFORMAT="%d/%m/%y %T "
export PROMPT_COMMAND='builtin history 1 >> /var/log/root.log' 

有了這個,所有的命令都可以被記錄下來(即使是那些在“ sudo su - ”中的命令)。

我的問題:如何將使用者名資訊放在歷史文件中,這樣不僅會記錄時間,而且會記錄“sudo su -”使用者名的原始使用者也在歷史文件中(或從它的外殼處理 PID ,或任何唯一標識符)?

當您以or或( 提供的登錄 shell 為) or啟動root bashshell時,原始使用者可用作.sudo -i``sudo -s``sudo su``root``bash``sudo bash``$SUDO_USER

但是當啟動時sudo su -,環境被清除su,所以你必須找到另一種方法來找到原始使用者。

一種方法,如果你有pstree命令可能是:

original_user=${SUDO_USER:-$(pstree -Alsu "$$" |
 sed -n "s/.*(\([^)]*\)).*($USER)[^(]*$/\1/p")}
export HISTTIMEFORMAT="<%F %T> (${original_user:-$USER}) [$$] "
export PROMPT_COMMAND='builtin history 1 >> /var/log/root.log'

解析其輸出的想法pstree -Alsu "$$"如下:

init---xterm(user)---zsh---sudo(root)---su---bash---pstree

要提取user.

引用自:https://unix.stackexchange.com/questions/110276