aboutsummaryrefslogtreecommitdiff
path: root/kiss
diff options
context:
space:
mode:
Diffstat (limited to 'kiss')
-rwxr-xr-xkiss21
1 files changed, 17 insertions, 4 deletions
diff --git a/kiss b/kiss
index c9979e5..5605bae 100755
--- a/kiss
+++ b/kiss
@@ -54,9 +54,9 @@ as_root() {
log "Using '${su:-su}'"
case $su in
- *sudo) sudo -E -- "$@" ;;
- *doas) doas -- "$@" ;;
- *) su -pc "$* <&3" 3<&0 </dev/tty ;;
+ *sudo) sudo -Eu "${user:-root}" -- "$@" ;;
+ *doas) doas -u "${user:-root}" -- "$@" ;;
+ *) su -pc "$* <&3" "${user:-root}" 3<&0 </dev/tty ;;
esac
}
@@ -1025,7 +1025,20 @@ pkg_updates() {
else
log "$PWD" "Need root to update"
- as_root git pull
+ # Find out the owner of the repository and spawn
+ # git as this user below.
+ #
+ # This prevents 'git' from changing the original
+ # ownership of files and directories in the rare
+ # case that the repository is owned by a 3rd user.
+ (
+ user=$(stat -c %U "$PWD")
+
+ [ "$user" = root ] ||
+ log "Dropping permissions to $user for pull"
+
+ as_root git pull
+ )
fi
}
done