X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=conflink;h=d661e172dfd5a5b1d2f5790236221dfc59f62232;hb=51c8b40fd2aac71d29dc9298ca65425725ad1edd;hp=b44c4c324f787d5dcb4bbf6399d2a3423a386995;hpb=d6def754cd241538c61456536b52ee51cbd85b42;p=distro-setup diff --git a/conflink b/conflink index b44c4c3..d661e17 100755 --- a/conflink +++ b/conflink @@ -1,6 +1,6 @@ #!/bin/bash -source /a/bin/errhandle/err +source /a/bin/bash-bear-trap/bash-bear err-cleanup() { echo 1 >~/.local/conflink } @@ -56,6 +56,7 @@ readonly fast verbose ##### end command line parsing ######## +tmpf=$(mktemp) if $fast; then lnf() { ln -sf "$@"; } fi @@ -103,21 +104,24 @@ subdir-link-r() { common-file-setup() { local dir fs x f reload_systemd - local -a reload_services local -a restart_services reload_systemd=false + # note, i ran chmod -R g-s on the filesystem dirs + # so i could keep permissions of secret files for dir in "$@"; do fs=$dir/filesystem if [[ -e $fs && $user =~ ^iank?$ ]]; then # we dont want t, instead c for checksum. # That way we dont set times on directories. # -a = -rlptgoD - cmd=( s rsync -rclpgoDiSAX --chown=root:root --chmod=g-s + # -A is acls, implies -p + cmd=( s rsync -rclgoDiSAX --chmod=Dg-s --chown=root:root --exclude=/etc/dovecot/users --exclude='/etc/exim4/passwd*' --exclude='/etc/exim4/*.pem' $fs/ / ) echo "${cmd[@]@Q}" + "${cmd[@]}" | tee $tmpf while read -r line; do file="${line:12}" case $file in @@ -147,7 +151,7 @@ common-file-setup() { # A = preserve acls # X = preserve extended attributes # i = itemize - done < <("${cmd[@]}") + done <$tmpf fi if ! $fast && [[ -e $dir/subdir_files ]]; then @@ -213,10 +217,6 @@ case $user in #### begin special extra stuff #### install -d -m700 ~/gpg-agent-socket - if [[ -e /etc/bitcoin ]] && getent group bitcoin &>/dev/null; then - s chown bitcoin:bitcoin /etc/bitcoin - fi - f=/var/lib/bind if [[ -e $f ]]; then # reset to the original permissions. @@ -230,30 +230,20 @@ case $user in if [[ -e /var/lib/znc ]] && getent group znc; then s chown -R znc:znc /var/lib/znc fi - for f in /etc/prometheus-{,export-}htpasswd; do - if [[ -e $f ]]; then - s chmod 640 $f - if getent passwd www-data &>/dev/null; then - s chown root:www-data $f - fi - fi - done - f=/etc/prometheus-pass - if [[ -e $f ]]; then - # note: this is duplicative of the file's own permissions - s chmod 640 $f + if [[ -e /p/c/user-specific ]]; then if getent passwd prometheus &>/dev/null; then - s chown root:prometheus $f + v s rsync -clpgoDiSAX --chmod=Dg-s --chown=root:prometheus /p/c/user-specific/prometheus/prometheus-pass /etc + v s rsync -clpgoDiSAX --chmod=Dg-s --chown=root:prometheus /p/c/user-specific/prometheus/prometheus/ssl/* /etc/prometheus/ssl fi - fi - f=/etc/nagios4/htdigest.users - if [[ -e $f ]]; then - # note: this is duplicative of the file's own permissions - s chmod 640 $f /etc/prometheus-pass - if getent passwd nagios &>/dev/null; then - s chown nagios:www-data $f + if getent passwd www-data &>/dev/null; then + v s rsync -clpgoDiSAX --chmod=Dg-s --chown=root:www-data /p/c/user-specific/www-data/* /etc fi fi + + if [[ -d /var/lib/bitcoind && -d /p/c/user-specific/bitcoin ]]; then + s rsync -clpgoDiSAX --chmod=Dg-s --chown=bitcoin:bitcoin /p/c/user-specific/bitcoin/settings.json /var/lib/bitcoind + s rsync -rclpgoDiSAX --chmod=Dg-s --chown=root:bitcoin /p/c/user-specific/bitcoin/bitcoin /etc + fi ##### end special extra stuff ##### if ! $fast; then