防止 /tmp 中的目录被删除

umm*_*mmw 11 tmp

我经常使用/tmpLinux 机器上的目录来存储临时文件(例如,来自希望我先下载它的站点的 PDF 等),并且我经常使用我的用户名创建一个目录。但是在每次启动时它(包括所有文件)都会被删除。现在我知道我可以把它放进去/var/tmp,但我想删除它的所有内容,但要保留目录本身。所以:

tmp
 |- me # this should stay
 |  |- foo1 # this should be deleted...
 |  |- bar1 # ...and this as well
 |- other stuff...
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?也许有权限或有特殊配置?

Ste*_*itt 15

pam-tmpdir用于此:它在登录时创建一个用户私有的临时目录。要设置它,添加

session optional pam_tmpdir.so
Run Code Online (Sandbox Code Playgroud)

到适当的 PAM 服务;在基于 Debian 的系统上,安装libpam-tmpdir软件包将为您执行此操作,或者您可以将行添加到/etc/pam.d/common-session. 下一次登录时,你会发现下一个目录/tmp/user与您的用户ID,并TMPTMPDIR适当设置。

  • 您能否解释一下合适的 PAM 服务是什么以及如何将线路添加到它们中?应该编辑哪些文件? (7认同)

Kus*_*nda 4

一种解决方案是使用@rebootcron 作业:

@reboot mkdir -p "/tmp/$USER"
Run Code Online (Sandbox Code Playgroud)

将其添加到您的 crontab 中将crontab -e使其在机器启动时执行。

或者,使用

mkdir -p "/tmp/$USER"
Run Code Online (Sandbox Code Playgroud)

在 shell 的启动文件中。

无论哪种情况,您可能还想使用

TMPDIR=/tmp/$USER
export TMPDIR
Run Code Online (Sandbox Code Playgroud)

如果您想使用该目录作为默认临时目录,请在 shell 的启动文件中添加该目录。