我想为我管理的系统上的所有用户修改历史记录设置。我希望它包含来自连接终端的信息,例如来自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
开销,如果必须添加,则需要很小。
我确实相信我的用户(如果发生了什么),我希望看到说使用相同的user:password登录系统的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=
以追加数据?这会有点骇人听闻,但应该做好。