← All rules
SOCLE-CLD-FSP-057// File ownershipmediumfilesystem state

Verify User Who Owns /etc/at.allow file

Ensures /etc/at.allow is owned by root (uid 0).

Checked against a path’s metadata, mode, owner, group, SUID/SGID.

A pass proves✓ running now✓ on disk✓ survives rebootthe qualified verdict →
Debian 12CIS 1.1.0Debian 13CIS 1.0.0FedoraRHEL 10 / Rocky 10 / AlmaLinux 10RHEL 8 / Rocky 8 / AlmaLinux 8CIS 4.0.0RHEL 9 / Rocky 9 / AlmaLinux 9CIS 2.0.0Ubuntu 22.04CIS 3.0.0Ubuntu 24.04CIS 1.0.0Ubuntu 26.04
One check, maps to 2 standards

A mapping is a cross-reference to where each standard places this requirement, anchored and cross-validated, not a claim of equivalence. A passing check is evidence toward these references, how to read it.

Why this rule matters

/etc/at.allow is the allow-list controlling who may schedule at jobs. If it is not owned by root (uid 0), an unauthorized user could edit it to grant themselves at access, a path to scheduled, privileged command execution, or read it to learn which accounts are trusted. Ownership by root is required to keep job-scheduling policy authoritative.

What Pavois checks

Pavois reads the file's effective owning uid with the InSpec file resource and asserts it equals 0 (root), only when the file exists. Reading the actual filesystem owner reflects the policy currently enforced, catching any chown drift, rather than trusting a package default that may have been changed.

only_if { file('/etc/at.allow').exist? }
describe file('/etc/at.allow') do
  its('uid') { should eq 0 }
end

How to verify it is applied

Run stat -c '%U' /etc/at.allow. Expected output: root. Alternatively ls -l /etc/at.allow should show root in the owner column.

Inspect & investigate

Ownership is shown by ls -l /etc/at.allow and stat /etc/at.allow. at job activity is logged via journalctl -u atd (or systemctl status atd) and in /var/log/syslog//var/log/cron. If auditd watches /etc/at.allow, chown and write events appear in /var/log/audit/audit.log.

Remediation

No automated harden plan is shipped for this rule, so it must be remediated manually: run chown root /etc/at.allow (commonly paired with chgrp root and chmod 600). The file may not exist by default, create it only if you intend to use an at allow-list.

Pavois applies this with its own harden engine, the plan below, not a shell script:

ownerroot
path/etc/at.allow
resourcefile
pavois harden plan local

where the target is local, a user@host SSH alias, or a container , Docs

Impact & precautions

Non-root ownership lets an attacker edit the allow-list to gain at scheduling, enabling persistence or privilege escalation. Restoring root ownership has no operational downside, atd runs as root. Precaution: if the file is absent the check is skipped; do not create an empty /etc/at.allow casually, since an empty allow-list denies at to everyone except root and can disrupt legitimate scheduled jobs.

Standards mapping

StandardReferenceTypeVersionConfidence
CIS2.2.6, 2.4.2.1directper OS, see the benchmark tablehigh
PCI DSS2.2.6supporting4.0.1medium

Each reference is a cross-reference anchored in the upstream benchmark and cross-validated against the SCAP Security Guide and ansible-lockdown, not a claim of equivalence. Direct = a prescriptive, line-level requirement; supporting = an abstract control family (NIST) the check provides evidence toward. How to read a mapping.

Sources & references