我有ubuntu服务器.在服务器上,允许多个用户操作.他们使用ssh.
我需要在一个地方显示所有命令行历史记录,显示时间,用户和命令.另外,我想阻止用户编辑历史文件.一般来说,我需要记录他们在服务器上执行的操作,并防止他们修改记录.
这有什么解决方案吗?
我相信它应该是可能的.我首先要为每个用户创建一个日志文件(因为我不确定共享池化历史文件的副作用).
所以为了举个例子,我要去
所以为了举个例子,我要去
mkdir /var/log/history touch /var/log/history/soneil chown root:soneil /var/log/history/soneil chmod 660 /var/log/history/soneil
所以我有一个由root拥有的历史文件,但’soneil’可以写入.
然后,有点魔术:chattr a / var / log / history / soneil
现在’soneil’只能附加到历史上,除了root之外别无其他.
所以我准备好了我的日志文件,我只需要使用它.
在/ etc / bashrc中(在Ubuntu上我注意到这是/etc/bash.bashrc):
export HISTFILE=/var/log/history/$USER readonly HISTSIZE readonly HISTFILE readonly HISTIGnorE readonly HISTCONTROL
readonly内置是相当不言自明的,我相信也可以同样适用于svenW的功能.
经测试,这与普通历史文件有同样的问题;它是在注销时编写的,并没有带时间戳.所以订购活动会很混乱.我想如果我必须自己做这件事,我会补充道
PROMPT_COMMAND="history -a;$PROMPT_COMMAND" readonly PROMPT_COMMAND
每次绘制新提示时强制将历史记录刷新到磁盘.还有一个HISTTIMEFORMAT envar会将时间戳添加到历史文件中,但是采用相当不漂亮的格式(将var设置为更漂亮的格式只会影响’history’的输出,而不会影响文件本身的内容).