st_snapshot1
Calculate checksum and stat ownership and permissions of files
Overview
st_snapshot calculates checksums and stats ownership and permissions of critical system files.
This script is typically run in either root-mode or public-mode. Running this script in root-mode requires root priviliges. One is adviced to set up a dedicated user account for running this script in public mode.
In root-mode, the files snapshot_root.list and snapshot_root.homelist are typically passed as arguments. These pattern files are read by the script and contain names of files and directories; listing a directory in such a pattern file is equivalent to listing all files which live in the directorytree with this directory as root.
snapshot_root.list could e.g. read
# snapshot_root.list - files and directories we wanna get# monitored: we wanna get a note once these files, or any file# under these directories, gets created, gets rm-ed, gets# permissions or contents changed. these notices will not# include the possibly secret contents of these files## this file gets read by st_systraq/etc/group/etc/gshadow/etc/hosts.allow/etc/hosts.deny/etc/hosts.equiv/etc/lilo.conf/etc/passwd/etc/postfix/server.pem/etc/shadow/etc/skel/etc/ssh
Equivalent files snapshot_pub.list and snapshot_pub.homelist should be on the system. These files should contain all worldreadable to be monitored files. This allows for running this script as root only in those cases where it's needed: when reading files, readable for root only.
The homelist files contain files and directories which should get monitored for every homedirectory on the system. snapshot_pub.homelist could e.g. contain:
.profile.cshrc.tcshrc.login.logout.bash_profile.bashrc.exrc.nexrc
As a special case, when the environment variable ST_OPHOMES is set to a non-empty string (typically when running in public mode), we stat the permissions on all homedirectories themselves.
The produced snapshot is printed to stdout. The output when running in public mode could look like:
# ownership and permissions of homedirsdrwxr-xr-x root root /bindrwxr-xr-x root root /devdrwxr-sr-x root staff /homedrwxr-sr-x joostvb joostvb /home/joostvbdrwxr-xr-x root root /usr/sbindrwxr-xr-x root root /var# sha256sum of critical pub files4d3cd13d6dbc10e2e3ccb9477cbc9eb9b76302454c276d5771ae0b10a5fbb4d2 /home/joostvb/.ssh/id_rsa.pubeb8d83e0246f761a21bdfb13a03fac634ed7c3b7dde4c2efddd7b2838d32596f /var/qmail/alias/.bashrc4e371f9a11f5a2464d3d5c952e58e24f73b377d33767ed93b2082fcb59a647fe /etc/zlogin# ownership and permissions of critical pub files-rw-rw-r-- joostvb joostvb /home/joostvb/.ssh/id_rsa.pub-rw-r--r-- joostvb joostvb /home/joostvb/.ssh/authorized_keys
Environment
ST_OPHOMES - non-empty in case permissions on all homedirectories should be printed
ST_SUM - command for calculating file checksums. E.g. sha256sum, sha512sum, sha384sum, sha224sum or sha1sum.
History
- Debian 13 (Trixie) to Debian 11 (Bullseye): the text shown here
- Debian 10 (Buster) to Debian 9 (Stretch)
- Debian 8 (Jessie)
- Debian 7 (Wheezy)
- Debian 6.0 (Squeeze)
- Debian 5.0 (Lenny)
- Debian 4.0 (Etch)
- Debian 3.1 (Sarge)