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.
Legal hold (ZFS snapshot hold)
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
chattr– Linux file attributes- OpenZFS
readonlyproperty - OpenZFS
zfs hold