文档首页> 技术教程> /tmp 目录的安全挂载选项与清理

/tmp 目录的安全挂载选项与清理

发布时间:2025-11-05 12:35        更新时间:2025-11-05 17:54
/tmp 谁都能写,程序拿它放临时文件,攻击者也爱拿它落地恶意脚本——所以这个目录值得单独做两项加固:挂载选项收紧,过期文件自动清理。 挂载选项的意义 给 /tmp 加 noexec,nosuid 两个选项:noexec 让目录下的文件无法直接执行,即使恶意脚本被写进来也跑不起来;nosuid 忽略 setuid 位,防止借特权程序提权。顺带解释 /tmp 权限里常见的 t 位(1777 的那个 1):粘滞位保证用户只能删自己的文件,它和 noexec 是两道独立的锁,各管各的。独立分区的机器在 /etc/fstab 里这样写: ``` tmpfs /tmp tmpfs defaults,noexec,nosuid,nodev,size=2G 0 0 ``` 没有独立分区的可以用 tmpfs 直接挂,注意 tmpfs 占用内存,用 size 参数设上限;改完 `mount -o remount /tmp` 生效,再用 `findmnt /tmp` 对照检查每个选项是否真的挂上了。验证方法很直接:往 /tmp 放个小脚本执行,报 Permission denied 才算成功。 清理的三种姿势 systemd 系统用自带机制,/usr/lib/tmpfiles.d/tmp.conf 控制自动清理,默认保留 10 天,`systemd-tmpfiles --clean` 可手动触发一次,不必等定时器;老系统用 tmpwatch(Debian 系叫 tmpreaper)配 cron 定期删;手写一行 `find /tmp -mtime +7 -type f -delete` 也行,但要先跑不带 -delete 的版本,确认会命中哪些文件再动手。 误删的风险 正在使用的临时文件被删,轻则程序报错,重则占用着该文件的守护进程异常。清理策略要避开运行中的会话文件和程序锁,只删超过足够天数、属主进程早已消失的陈旧文件最稳妥。生产机上第一次启用自动清理,先观察一周日志再放开,出问题能立刻定位到策略本身。另外别把 /var/tmp 与 /tmp 混为一谈,前者设计上保留更久,系统更新包的临时文件常落在那里,清理策略要分开定。 还有一个反向问题:个别应用确实需要在 /tmp 里执行文件(某些安装程序),正确做法是给它们单独设置 TMPDIR 环境变量指向普通目录,而不是为个别应用放开整个 /tmp 的 noexec。顺云云服务器用户如果对 /tmp 加固没有把握,通过官网工单或在线客服确认当前镜像的默认挂载配置,再决定是否调整。