Linux /tmp
Temporary files on Linux can be stored in various places. See file-hierarchy(7) for details about these two (and most other) directories of a Linux system.
/tmp | /var/tmp | /run | /run/user/# | /dev/shm | |
---|---|---|---|---|---|
Typical behavior | not preserved between reboots
Periodic cleanup may occur. |
typically preserved between reboots.
Periodic cleanup may occur. |
for non-persistent runtime data of long lived services such as locks, sockets, pid files | Typically set as the XDG_RUNTIME_DIR .
Not preserved between reboots |
A memory backed scratch space for programs.
Not preserved between reboots |
Typical fs | tmpfs, backed by RAM/swap | backed by persistent filesystem | tmpfs, backed by RAM/swap | tmpfs, backed by RAM/swap | On Linux, typically tmpfs |
Access | Writable by everyone | Writable by everyone | Writable to only privileged services | Writable to only its user | Writable by everyone |
Typical mount options[edit | edit source]
/tmp
and /var/tmp
are typically mounted with the following options:
noexec
- no programs can be executednosuid
- no setuid bits can be setnodev
- no device nodes
In addition, all public temporary locations (including /tmp
, /var/tmp
, and /dev/shm
) are typically chmod 1777
. This grants anyone the ability to write there with new file's ownership defaulting to the owner's user and group.
Automatic cleanup[edit | edit source]
Automatic cleanup on systemd systems is done through the systemd-tmpfiles
service.
Bind mounting /tmp over /var/tmp[edit | edit source]
In some scenarios, it may make sense to bind-mount /tmp over /var/tmp. This forces temporary files to one location. Some advantages with this approach include:
- Simplify where temporary files are located and cleaned up
- Reduce the risk of /var filling up
This can be implemented by running mount --bind /tmp /var/tmp
or by adding to /etc/fstab
:
/tmp /var/tmp none bind 0 0