在 debian linux 上使 /var/log 目录只读安全吗?

在 debian linux 上使 /var/log 目录只读安全吗?

我正在安装一个非常小的服务器,其中有 512mb CF 汽车作为高清。我不仅没有足够的空间,而且我想尽量减少对磁盘的写入。

我想完全清除 /var/log 目录并使其只读(写保护)。

如果我这样做,系统会挂起吗?

答案1

我不会将其设置为只读,而是将其创建/var/log为 tempfs。并定期修剪。当然,只有当您有足够的备用 RAM 时,这才有效。

您可以对其他可能的非必要目录执行相同的操作,例如/var/tmp

我的条目/etc/fstab(现已注释掉):

tmpfs   /var/tmp   tmpfs   defaults,noatime,mode=1777,size=128M   0  0
tmpfs   /var/log   tmpfs   defaults,noatime,mode=0755,size=128M   0  0

答案2

根据Debian FHS(文件系统层次结构标准),/var/log 必须可写。启动时,系统本身必须能够写入该目录中的日志。您可以将 /usr 设置为只读,但 /var 应该安装为可写。

要回答您在文章中提出的问题,是的,系统将在启动时挂起。内核将尝试写入 dmesg,如果无法写入,则会挂起。

答案3

如果您打算将其设置为只读,那么它就毫无价值。您应该控制记录的方式和内容。

如果空间不足,您可能需要一个单独的、大小合理的 /var 分区,并选择一个可以处理大量小文件的文件系统,例如 ReiserFS 等。

答案4

正如我在评论中所述,可写性/var/log很重要,但您可以采取一些措施来确保保存尽可能少的内容。例如,您可以配置logrotate为根据日志文件的大小轮换日志文件,压缩旧文件。您还可以配置syslog为仅将CRIT和 以上写入日志(其余的将被丢弃)

logrotate例子:

   compress

   /var/log/messages {
       rotate 5
       size 100k
       postrotate
           /usr/bin/killall -HUP syslogd
       endscript
   }

(您还需要配置logrotate /etc/logrotate.conf为在 cronjob 中运行)。

rsyslog.conf例子:

$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog   # provides kernel logging support (previously done by rklogd)

$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

$IncludeConfig /etc/rsyslog.d/*.conf

*.crit                                                  /var/log/messages
*.emerg                                                 *

这可能是最好的中间立场,因为几乎没有记录任何内容,但您仍然会收到重要事件的通知。如果日志保留很重要,您还可以考虑将远程系统日志配置到具有更大存储空间的服务器。

相关内容