在Linux上处理/ tmp和磁盘配额的最有效的方法是什么?

我正在运行一个Web服务器(Apache + PHP),数据库(MySQL)和SMTP服务器(Exim)的VPS。 操作系统:Debian Lenny。 内存:512MB。 使用(配额)( http://packages.debian.org/lenny/quota )。

目前,我已经将/tmp挂载为tmpfs。 这并不理想,因为我只有512MB RAM,因此/tmp只有256MB。 我决定在/var/tmpdisk上创build一个1GB的ext3分区文件(或者其他名称)。 (关于使用ext3的决定是在阅读Askubuntu.com之后做出的:用于/ tmp的好文件系统? )

为了在运行时保持/ tmp干净,我find了tmpreaper: serverfault.com:清除/ tmp

什么build议快速擦除/var/tmpdisk ,同时保留配额设置?

目前,我正在考虑在启动时执行以下操作( /etc/rc.local ?):

  1. 检查/var/tmpdisk的存在。 如果不存在,则运行dd if=/dev/zero of=/var/tmpdisk bs=1K count=1000000
  2. /var/tmpdisk创buildext3文件系统。 这是我清除“磁盘”最快的方法。 命令: mkfs.ext3 -F /var/tmpdisk
  3. 挂载在/tmpmount -t ext3 -o loop,rw,nodev,noexec,nosuid,quota /var/tmpdisk /tmp

在这个草案中,我没有添加保留配额设置的方法。 有任何想法吗?

我的大多数需求已经在Debian中可用。

默认情况下, /etc/default/rcS设置环境variablesTMPTIME=0

$ man rcS

TMPTIME

启动时,如果修改时间超过TMPTIME天数,/ tmp中的文件将被删除。 值为0表示无论年龄大小,文件都被删除 。 如果您不希望系统清除/ tmp,则将TMPTIME设置为负值(例如-1)或无限字。

查看/lib/init/bootclean.sh ,我发现配额文件'./aquota.user (owned by root) is excluded from removing. Conclusion: quota settings will persist during reboots and (owned by root) is excluded from removing. Conclusion: quota settings will persist during reboots and不变, (owned by root) is excluded from removing. Conclusion: quota settings will persist during reboots and can safely be set in / etc / default / rcS中can safely be set in TMPTIME = 0。

为了在运行时保持/tmp清洁,我安装了tmpreaper 。 要激活它,应该评论SHOWWARNING=true 。 此外, TMPREAPER_TIME=7d应该取消注释,以清理超过7天的文件。

一个1GB的临时磁盘被创build并格式化为ext3:

 # dd if=/dev/zero of=/var/tmpdisk bs=1K count=1000000 # mkfs.ext3 -F /var/tmpdisk 

在引导时安装它需要更改/etc/fstab

 # /var/tmpdisk /tmp ext3 loop,rw,nosuid,noexec,nodev,quota 0 0 

由于/var/tmpdisk不是一个真正的设备,因此它应该被挂载为循环设备,因此loopnosuid,noexec,nodev已被添加为一层安全防止常见的漏洞利用工具包滥用/tmp 。 最后, quota启用磁盘的配额。

修改/etc/fstab ,我运行mount -a来挂载新的/tmp磁盘。 由于/tmp应该是全局可写的,并且用户不应该能够删除它们不拥有的文件,所以目录权限也应该被改变:

 # chmod 1777 /tmp 

激活配额:

 # quotacheck /tmp # quotaon /tmp 

现在/tmp完全适合我的需要,配额激活和自动清理垃圾文件。 我唯一要做的是通过运行edquota username每个用户添加配额。