![每用户 tmpfs 目录](https://linux22.com/image/5779/%E6%AF%8F%E7%94%A8%E6%88%B7%20tmpfs%20%E7%9B%AE%E5%BD%95.png)
众所周知,当使用可预测的文件名时,使用共享/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。