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

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

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

目前,我已将/tmp其挂载为 tmpfs。这并不理想,因为我只有 512MB RAM,因此/tmp只有 256MB。我决定在 上创建一个 1GB 的 ext3 分区文件(或任何名称)/var/tmpdisk。(使用 ext3 的决定是在阅读Askubuntu.com:/tmp 的文件系统是否合适?

为了在运行时保持 /tmp 清洁,我发现了 tmpreaper:serverfault.com:清理 /tmp

有什么建议可以快速擦除/var/tmpdisk并保留配额设置?

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

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

在此草案中,我尚未添加保留配额设置的方法。有什么想法吗?

答案1

我的大部分需求已经在 Debian 中实现。

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

$ man rcS

时间

启动时,如果 /tmp 中的文件的修改时间超过 TMPTIME 天,则将被删除。 值为 0 表示无论文件存续多久都会被删除如果您不想让系统清理 /tmp,则将 TMPTIME 设置为负值(例如 -1)或单词 infinite。

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

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

创建了一个 1GB 的临时磁盘,并将其格式化为 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

相关内容