#!/bin/sh # Refresh the dserver SSH key cache from user authorized_keys files. # NetBSD variant: called from the dserver rc.d start_precmd (because # /var/run is volatile across reboots) and from a daily root cron job that # is added manually at install time (not by the package) — see the pkgrepo # skill's dtail-package.md for the crontab entry. CACHEDIR=/var/run/dserver/cache DSERVER_USER=dserver DSERVER_GROUP=dserver echo 'Updating SSH key cache' ls /home/ | while read remoteuser; do keysfile="/home/$remoteuser/.ssh/authorized_keys" if [ -f "$keysfile" ]; then cachefile="$CACHEDIR/$remoteuser.authorized_keys" echo "Caching $keysfile -> $cachefile" cp "$keysfile" "$cachefile" chown "$DSERVER_USER:$DSERVER_GROUP" "$cachefile" chmod 600 "$cachefile" fi done # Remove stale cache entries for users whose authorized_keys no longer exist find "$CACHEDIR" -name '*.authorized_keys' -type f | while read cachefile; do remoteuser=$(basename "$cachefile" .authorized_keys) if [ ! -f "/home/$remoteuser/.ssh/authorized_keys" ]; then echo "Deleting obsolete cache file $cachefile" rm "$cachefile" fi done echo 'All set...'