Skip to content

WORM & object locking

Write Once Read Many – prevent accidental or malicious deletion.

Per-object immutability

Linux immutable flag – survives rm:

# Lock
chattr +i /srv/putfs/acme-corp/legal/contract.pdf

# Unlock
chattr -i /srv/putfs/acme-corp/legal/contract.pdf

PutFS DELETE on an immutable file returns 403 Forbidden. The file remains intact.

Per-dataset read-only

# ZFS
zfs set readonly=on tank/putfs/acme-corp/archive

# Any filesystem – mount read-only
mount -o remount,ro /srv/putfs/acme-corp/archive

# Or recursively set immutable
chattr -R +i /srv/putfs/acme-corp/archive/

PutFS PUT and DELETE on read-only or immutable paths return 403 Forbidden. The data remains protected.

Prevent snapshot destruction:

# Create snapshot
zfs snapshot tank/putfs/acme-corp/legal@hold-2024

# Place hold (prevents destroy)
zfs hold legal_hold tank/putfs/acme-corp/legal@hold-2024

# Release hold
zfs release legal_hold tank/putfs/acme-corp/legal@hold-2024

Further reading