清理服务器历史记录时删除 /var/log 中的所有文件是否安全?

清理服务器历史记录时删除 /var/log 中的所有文件是否安全?

我需要从主要运行 Apache 的 Debian 机器中删除所有系统日志等。

/var/log删除所有文件而不重新创建(通过触摸?)任何文件是否安全?也就是说,如果所有标准进程突然发现日志文件不见了,它们是否会自动重新创建日志文件,包括使用正确的默认所有者和权限?

答案1

不,不是真的。有些日志文件不会被写入它们的进程重新创建。你最好清空日志文件,例如 cat /dev/null > /var/log/

答案2

有些守护进程直到你让它们知道它们的日志文件已经改变才会高兴kill -HUP(特别是当它是 时mv)。在执行此操作之前,你应该知道它们的行为是什么。

您应该考虑使用mvkill -HUP然后shred使用移动的文件(而不是cpecho)。

此外,您可能还想阅读man 8 logrotate更多信息。

答案3

声誉太低,无法发表评论,因此我将其放在答案中:

要清空 /var/log/ 中的每个文件(包括子目录),您可以发出

find /var/log/ -type f -exec cp /dev/null {} \;

(当然这还没有经过测试)

我认为是的,清空它们是安全的。但是,如果不检查其中的日志文件列表或创建它们的应用程序,没有人能够确定。Debian 政策表明这应该是安全的,但可能没有人尝试过。

如果我是你,我会保留目录的副本,然后检查系统的功能。并且不要忘记删除备份 :)

答案4

通常最好将它们归零,例如:

cp /dev/null /var/log/logname

这样,如果任何正在运行的进程有 logname 的打开文件句柄,它将能够继续写入文件,完全不知道发生了什么。

相关内容