ubuntu – Linux综合命令行历史

我有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’的输出,而不会影响文件本身的内容).

相关文章

ubuntu退出redis的示例:指定配置文件方式启动源码redis:roo...
ubuntu中mysql改密码忘了的解决方法:1.在终端中切换到root权...
ubuntu安装mysql失败的解决方法原因:可能是原有的MySQL还有...
使用centos和ubuntu建站的区别有以下几点1.CentOS是Linux发行...
ubuntu图形界面和字符界面切换的方法:可以通过快捷键CTRL+A...
ubuntu中重启mysql失败的解决方法1.首先,在ubuntu命令行中,...