forked from kiss-community/kiss
kiss: Elevate permissions if needed during checksum generation.
This simply modifies as_root() to allow running commands as any given user and generates checksums according to the owner of the checksums file and the current user's write permissions.
This commit is contained in:
parent
766e5d7089
commit
1c059e8139
20
kiss
20
kiss
@ -53,12 +53,12 @@ prompt() {
|
||||
as_root() {
|
||||
# Simple function to run a command as root using either 'sudo',
|
||||
# 'doas' or 'su'. Hurrah for choice.
|
||||
[ "$uid" = 0 ] || log "Using '${su:-su}'"
|
||||
[ "$uid" = 0 ] || log "Using '${su:-su}' (to become ${user:=root})"
|
||||
|
||||
case $su in
|
||||
*sudo) sudo -E -- "$@" ;;
|
||||
*doas) doas -- "$@" ;;
|
||||
*) su -pc "$* <&3" 3<&0 </dev/tty ;;
|
||||
*sudo) sudo -E -u "$user" -- "$@" ;;
|
||||
*doas) doas -u "$user" -- "$@" ;;
|
||||
*) su -pc "$* <&3" "$user" 3<&0 </dev/tty ;;
|
||||
esac
|
||||
}
|
||||
|
||||
@ -1236,7 +1236,17 @@ args() {
|
||||
for pkg do pkg_lint "$pkg" c; done
|
||||
for pkg do pkg_sources "$pkg" c; done
|
||||
for pkg do
|
||||
pkg_checksums "$pkg" > "$(pkg_find "$pkg")/checksums"
|
||||
pkg_checksums "$pkg" | {
|
||||
repo_dir=$(pkg_find "$pkg")/checksums
|
||||
|
||||
if [ -w "$repo_dir" ]; then
|
||||
tee "$repo_dir"
|
||||
else
|
||||
log "$pkg" "Need permissions to generate checksums"
|
||||
|
||||
user=$(stat -c %U "$repo_dir") as_root tee "$repo_dir"
|
||||
fi
|
||||
}
|
||||
|
||||
log "$pkg" "Generated checksums"
|
||||
done
|
||||
|
Loading…
Reference in New Issue
Block a user