有什么方法可以记录 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% 的情况下,简单的口头交流就可以消除任何疑惑。如果您因为不信任该用户而记录其活动,也许您可以与他们谈谈您的担忧。