我偶然发现了这个页面:http ://www.wlug.org.nz/PerUserTempDirs
建议创建/替换一些脚本;最新的步骤更令人困惑:
现在,一旦你有了它,调用以下脚本而不是 login(1):
#!/bin/sh
mkdir -m 700 /tmp-safe/user/"$1" /tmp/"$1"
chown "$1": /tmp-safe/user/"$1" /tmp/"$1"
mount --bind /tmp-safe/user/"$1" /tmp/"$1" || exit 1
exec /bin/login "$@"
由于用户使用 ssh 登录,我“认为” /bin/login 永远不会执行。我应该修改什么脚本才能为用户重新挂载 /tmp ?
更好的方法是使用pam_mktemp。当用户通过任何 pam 服务登录并更新 TMP 和 TMPDIR 以使用该目录时,这将在 /tmp 下创建一个每个用户的目录。这确实依赖于编写的程序不假定 /tmp。
pam_mktemp 的问题是,有很多带有硬编码的软件
/tmp
,它们不支持 TMPDIR 变量。最新内核中的“命名空间”功能可用于此目的,正如Gentoo 开发人员在博客文章中所解释的那样。