#!/bin/bash source /a/bin/errhandle/err _errcatch_cleanup() { echo 1 >~/.local/conflink } usage() { cat <= 1 )) || continue m lnf ${x[@]} ~ done } user=$(id -un) all_dirs=({/a/bin/ds,/p/c}{,/machine_specific/$HOSTNAME}) # note, we assume a group of hosts does not have the # same name as a single host, which is no problem on our scale. for x in /p/c/machine_specific/*.hosts /a/bin/ds/machine_specific/*.hosts; do if grep -qxF $HOSTNAME $x; then all_dirs+=( ${x%.hosts} ); fi done c_dirs=(/a/c{,/machine_specific/$HOSTNAME}) case $user in iank) files=(/p/c/machine_specific/*/filesystem/etc/ssh/*_key /p/c/filesystem/etc/openvpn/client/*.key /p/c/filesystem/etc/openvpn/easy-rsa/keys/*.key /p/c/machine_specific/kw/filesystem/etc/openvpn/client/*.key ) if [[ -e ${files[0]} ]]; then chmod 600 ${files[@]} fi # p needs to go first so .ssh link is created, then config link inside it m common-file-setup ${all_dirs[@]} #### begin special extra stuff #### install -d -m700 ~/gpg-agent-socket f=/var/lib/bind if [[ -e $f ]]; then # reset to the original permissions. m s chgrp -R bind $f m s chmod g+w $f fi sudo bash -c 'shopt -s nullglob; for f in /etc/bind/*.key /etc/bind/*.private /etc/bind/key.*; do chgrp bind $f; done' if [[ -e /etc/davpass ]] && getent group www-data &>/dev/null; then s chgrp www-data /etc/davpass fi if [[ -e /var/lib/znc ]] && getent group znc; then s chown -R znc:znc /var/lib/znc fi /a/exe/lnf -T /p/arbtt-capture.log ~/.arbtt/capture.log f=/etc/prometheus-htpasswd if [[ -e $f ]]; then s chmod 640 $f /etc/prometheus-pass s chown root:www-data $f if getent passwd prometheus; then s chown root:prometheus /etc/prometheus-pass fi fi ##### end special extra stuff ##### if [[ -e /etc/openvpn ]]; then sudo bash -c 'shopt -s nullglob && cd /etc/openvpn && for f in client/* server/*; do ln -sf $f .; done' fi m sudo -H -u user2 "${BASH_SOURCE[0]}" ;; user2) m common-file-setup ${c_dirs[@]} ;; *) echo "$0: error: unexpected user"; exit 1 ;; esac echo 0 >~/.local/conflink