Ensure /tmp is a separate partition
Scanned 9/3/2026
Install to Claude Code
npx -y skills add CyberStrikeus/CyberStrike --skill cis-ubuntu2004-v300-1-1-2-1-1 --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Cis Ubuntu2004 V300 1 1 2 1 1?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/cyberstrikeus-cis-ubuntu2004-v300-1-1-2-1-1)More formats (shields.io, HTML) on the badges page.
---
name: cis-ubuntu2004-v300-1-1-2-1-1
description: "Ensure /tmp is a separate partition"
category: cis-storage
version: "3.0.0"
author: cyberstrike-official
tags: [cis, ubuntu, linux, ubuntu-20.04, partition]
cis_id: "1.1.2.1.1"
cis_benchmark: "CIS Ubuntu Linux 20.04 LTS Benchmark v3.0.0"
tech_stack: [ubuntu, linux]
cwe_ids: []
chains_with: []
prerequisites: []
severity_boost: {}
---
# Ensure /tmp is a separate partition
## Profile
Level 1 - Server, Level 1 - Workstation, Assessment: Automated
## Description
The `/tmp` directory is a world-writable directory used for temporary storage by all users and some applications.
Note: If an entry for `/tmp` exists in `/etc/fstab` it will take precedence over entries in a systemd unit file. There is an exception to this when a system is diskless and connected to iSCSI, entries in `/etc/fstab` may not take precedence over a systemd unit file.
## Rationale
Making `/tmp` its own file system allows an administrator to set additional mount options such as the `noexec` option on the mount, making `/tmp` useless for an attacker to install executable code. It would also prevent an attacker from establishing a hard link to a system `setuid` program and wait for it to be updated. Once the program was updated, the hard link would be broken, and the attacker would have his own copy of the program. If the program happened to have a security vulnerability, the attacker could continue to exploit the known flaw.
This can be accomplished by either mounting `tmpfs` to `/tmp`, or creating a separate partition for `/tmp`.
## Impact
By design files saved to `/tmp` should have no expectation of surviving a reboot of the system. `tmpfs` is ram based and all files stored to `tmpfs` will be lost when the system is rebooted.
If files need to be persistent through a reboot, they should be saved to `/var/tmp` not `/tmp`.
Since the `/tmp` directory is intended to be world-writable, there is a risk of resource exhaustion if it is not bound to `tmpfs` or a separate partition.
Running out of `/tmp` space is a problem regardless of what kind of filesystem lies under it, but in a configuration where `/tmp` is not a separate file system it will essentially have the whole disk available, as the default installation only creates a single `/` partition. On the other hand, a RAM-based `/tmp` (as with `tmpfs`) will almost certainly be much smaller, which can lead to applications filling up the filesystem much more easily. Another alternative is to create a dedicated partition for `/tmp` from a separate volume or disk. One of the downsides of a disk-based dedicated partition is that it will be slower than `tmpfs` which is RAM-based.
## Audit Procedure
### Command Line
Run the following command and verify the output shows that `/tmp` is mounted. Particular requirements pertaining to mount options are covered in ensuing sections.
```bash
# findmnt -kn /tmp
```
Example output:
```
/tmp tmpfs tmpfs rw,nosuid,nodev,noexec
```
Ensure that systemd will mount the `/tmp` partition at boot time.
```bash
# systemctl is-enabled tmp.mount
```
Example output:
```
generated
```
Verify output is not `masked` or `disabled`.
Note: By default, systemd will output `generated` if there is an entry in `/etc/fstab` for `/tmp`. This just means systemd will use the entry in `/etc/fstab` instead of its default unit file configuration for `/tmp`.
## Expected Result
`/tmp` should be mounted as a separate partition.
## Remediation
### Command Line
First ensure that systemd is correctly configured to ensure that `/tmp` will be mounted at boot time.
```bash
# systemctl unmask tmp.mount
```
For specific configuration requirements of the `/tmp` mount for your environment, modify `/etc/fstab`.
Example of using `tmpfs` with specific mount options:
```
tmpfs /tmp tmpfs defaults,rw,nosuid,nodev,noexec,relatime,size=2G 0 0
```
Note: the `size=2G` is an example of setting a specific size for `tmpfs`.
Example of using a volume or disk with specific mount options:
```
<device> /tmp <fstype> defaults,nodev,nosuid,noexec 0 0
```
## Default Value
Not configured by default.
## References
1. https://www.freedesktop.org/wiki/Software/systemd/APIFileSystems/
2. https://www.freedesktop.org/software/systemd/man/systemd-fstab-generator.html
3. https://www.kernel.org/doc/Documentation/filesystems/tmpfs.txt
4. NIST SP 800-53 Rev. 5: CM-7
5. RHEL 8 STIG Vul ID: V-230295
6. RHEL 8 Rule ID: SV-30295r627750
## CIS Controls
v8 - 3.3 Configure Data Access Control Lists (IG 1, IG 2, IG 3)
v7 - 14.6 Protect Information through Access Control Lists (IG 1, IG 2, IG 3)
MITRE ATT&CK Mappings: T1499, T1499.001 | TA0005 | M1022
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!