我正在努力设置我们的 Linux(如果可能的话,最终还会设置 Windows)系统,以便我们可以监控管理更改并拥有可供参考的历史记录。目前,我已经使用 etckeeper、logwatch 和 mercurial 进行了很好的设置。
我希望通过在管理员注销时向他们发送一条消息来询问他们是否要为刚刚在服务器上所做的操作创建更改日志,从而使此功能更加可靠。如果回答“否”,则将继续注销过程;如果回答“是”,则将他们带到他们使用的任何编辑器,他们可以在其中输入他们想要的有关刚刚在系统上所做的更改的任何内容。然后,更改日志助手会为他们输入的内容添加一些标准格式(添加日期/时间、用户名、缩进、重新换行到每行 70 个字符等),并将其添加到系统上某个文件的前面。然后,我会将该更改日志包含在我已经拥有的监控设置中,这将导致对其进行版本控制并发送到集中位置。
我设想的一些东西看起来和工作方式与 mercurial/git/svn 中的提交/评论功能非常相似,只是评论的格式不同并保存到本地文件中。如果有一些提交前/提交后钩子或能够自定义它,那就更好了。
谢谢。
答案1
我想到两个简单的想法:
利用“logger”命令让管理员将一行代码发送到 syslog。由于包含用户名,因此可以轻松编写脚本报告。如果您登录到中央主机,这些更改也会被集中记录。
只需将所有更改附加到 /etc/motd,不仅记录更改,而且还在每个人登录时向他们显示这些更改。
这两种方法都非常适合由忠实的管理员手动或通过脚本来完成。
答案2
从未听说过这样的工具。
但我想可以做以下事情
管理员将会把修改的文件的名称以及相应的描述写在某个文本文件中。
然后,这些文件将与某个远程服务器同步,或者可能位于同一系统上的某个文件夹中,并附加时间戳。此备份还将包含管理员用来记录修改的文件。
管理员写入更改的文本文件将具有一些标准格式,用于写下文件名和相应的描述,这些格式将在执行 rsync 之前由某些 bash / python / perl 脚本读取。
可以使用其他备份工具(如 rdiff 或 rsnapshot)代替 rsync。
答案3
如果“他们使用的编辑器”恰好是Emacs,那么你可以利用它的更改日志编辑命令最简单的情况是,这可以像运行以下命令一样简单
emacs -f add-change-log-entry
它将提示更改日志文件位置,并自动创建一个包含姓名、电子邮件地址和日期的新条目,以供编辑。
答案4
我不是 Linux 专家,但在我看来你需要挂接系统来捕获管理员可能注销系统的任何方式。例如,如果有人exit
在控制台上键入注销,则需要让 shell 执行与其正常响应完全不同的操作exit
,否则用户将被注销。
这可能吗?也许吧,但这意味着要自定义 shell。当然,我可能错了,如果我不知道的话,已经有一种方便的方法来挂接内置命令位。
当然,如果相关用户远程访问系统(例如通过 SSH),上述任何方法都无济于事。