每用户 tmpfs 目录

每用户 tmpfs 目录

众所周知,当使用可预测的文件名时,使用共享/tmp目录会导致许多安全漏洞。而且随机生成的名字并不好看。

我想也许使用每个用户临时目录会更好。许多应用程序将使用TMPDIR环境变量来决定临时文件的位置。

登录时,我可以简单地设置TMPDIR=/temp/$USER其中/temp必须包含每个用户的目录,该目录对该用户不可写入,其他任何人都不可写入。

但在这种情况下,我仍然希望/temp成为一个tmpfs挂载点,这意味着子目录在重新启动后将不存在,并且需要以某种方式重新创建。

tmpfs对于如何创建每个用户的子目录,是否有任何(事实上的)标准?或者我是否必须想出自己的非标准工具来动态生成此类目录?

答案1

您可以使用pam-tmpdir为了这。它在 PAM 会话开始时为每个登录的用户创建一个目录。

如何在注销时重新挂载文件系统?了解更多背景信息...

在 Debian、Ubuntu 及其衍生版本中,它以libpam-tmpdir.

答案2

你可以直接把它放进去/etc/fstab。特定用户的一行可能如下所示:

tmpfs /home/username/tmp tmpfs size=[num]%,uid=[num],gid=[num],noauto,user,mode=0700

为每个您希望能够在其主目录中挂载 tmpfs 的用户添加这样的一行即可实现。用户用户名可以在其主目录上以当前系统内存容量的 10%mount ~/tmp挂载 tmpfs 。~/tmp该模式设置为0700仅该用户(当然还有根)可以用该装载的内容做任何事情。并且安装不会自动进行 - 用户必须请求它。

您需要将所有内容替换为相关值。例如,对于您自己,您可能会这样做:

tmpfs /home/kasperd/tmp tmpfs size=25%,uid=1000,gid=1000,noauto,user,mode=0700 0 1

...如果您的用户和组 ID 均为 1000。

相关内容