我可以记录 vi 活动吗?

我可以记录 vi 活动吗?

有什么方法可以记录 vi 活动?我怀疑另一个用户正在通过进入 vi 编辑器内的 shell 发出命令,显然这些命令没有记录到历史记录中。

答案1

您还可以打开流程会计(可以/应该/!)

然后您可以使用:

lastcomm(1)

查看命令的运行情况以及它们是否在 fork 之后运行(带或不带 exec)。

与基于主机的 IDS 相结合,这应该可以满足您的需要“以便国王的正义能够得到伸张”。

答案2

您现在如何记录他们的活动?最简单的方法是阻止他们从 vi 启动 shell。

# vi /home/user/.exrc
set exrc
set shell=/bin/false
# chown root:root /home/user/.exrc
# chmod 644 /home/user/.exrc
# chattr +i /home/user/.exrc

如果您使用特殊的 shell 来记录他们的命令,您可以将 vi 更改为仅使用该 shell。

答案3

您是在谈论 shell 历史记录吗?vi shell 模式(:sh)启动用户的默认 shell,如果是 bash,那么您可以通过编辑全局 /etc/bashrc 并添加以下内容来确保始终启用历史记录日志记录:

set HISTFILE=~/.bash_history
shopt -s histappend
PROMPT_COMMAND='history -a'

这将确保每个用户命令都记录到文件中,不会被覆盖,并且每次出现 shell 提示符时都会更新。

请注意,用户可以在个人场合覆盖此项~/.bashrc,因此这并不能绝对保证记录会发生。

某些版本的 vi(例如 nvi)支持禁用 shell 访问的安全模式,方法是通过以 启动 vi 来禁用 shell 访问nvi -S。您也可以设置全局别名/etc/bashrc以默认强制使用此模式。

请注意,一般来说,用户通过意外方式进入 shell 的问题是一个典型的 unix 问题。没有办法完全禁用它,您能做的最好的事情就是尝试默认限制访问。经验丰富的用户(甚至是知道如何使用 google 的用户)总是可以绕过这些限制。例如,如果用户不想记录他的 shell 历史记录,他总是可以使用他想要使用的任何选项来执行 shell 的新副本。

这是一个很棒的写上去如何强制在 bash 中记录日志以及如何规避记录日志。

最后,您是否考虑过直接与用户交谈以确定他们在做什么?99% 的情况下,简单的口头交流就可以消​​除任何疑惑。如果您因为不信任该用户而记录其活动,也许您可​​以与他们谈谈您的担忧。

相关内容