我正在运行一个 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
?):
- 检查是否存在
/var/tmpdisk
。如果不存在,则运行dd if=/dev/zero of=/var/tmpdisk bs=1K count=1000000
- 在 中创建 ext3 文件系统
/var/tmpdisk
。这对我来说是清除“磁盘”的最快方法。命令:mkfs.ext3 -F /var/tmpdisk
- 将其安装于
/tmp
:mount -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 and
TMPTIME=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
不是真实设备,因此应将其安装为循环设备,因此loop
已nosuid,noexec,nodev
添加作为一层安全保护,以防止常见的漏洞利用工具包滥用/tmp
。最后,quota
启用磁盘配额。
修改后/etc/fstab
,我运行mount -a
挂载新/tmp
磁盘。由于/tmp
应该是全球可写的,并且用户不应该能够删除他们不拥有的文件,所以目录权限也应该更改:
# chmod 1777 /tmp
激活配额:
# quotacheck /tmp
# quotaon /tmp
现在/tmp
完全满足我的需求,激活配额并自动清理垃圾文件。我唯一要做的就是通过运行为每个用户添加配额edquota username
。