diff --git a/cronjob-fix-log-acls b/cronjob-fix-log-acls new file mode 100755 index 0000000..4313f92 --- /dev/null +++ b/cronjob-fix-log-acls @@ -0,0 +1,27 @@ +#!/bin/bash + +# Sleep for up to a couple of minutes to prevent a race condition with other cron jobs. +sleep $(( RANDOM % 120 )) + +# Secure /var/log +shopt -s globstar +GLOBIGNORE="/var/log/packages/:/var/log/setup/:/var/log/scripts/" +# Set standard access perms for directories +setfacl -m user::rwx,group::rx,other::- /var/log/**/ +setfacl -m user::rwx,group::rx,other::x /var/log/ +# Set standard access perms for files +find /var/log -type f -exec setfacl -m user::rw,group::r,other::- {} + +# Allow group 'admin' read access to all directories/files +setfacl -m group:admin:rX /var/log/**/ +find /var/log -type f -exec setfacl -m group:admin:r {} + +# Set default access for new files in directories. +setfacl -dm user::rwX,group::rX,other::- /var/log/**/ +setfacl -dm group:admin:rX /var/log/**/ +# /var/log/wtmp needs to be readable by everyone +setfacl -m user::rw,group::r,other::r /var/log/wtmp +unset GLOBIGNORE + +# To clear above ACL settings: +# setfacl -Rk /path +# setfacl -Rx group:admin: /path +# setfacl -Rx mask:: /path