From 4e3198eb3d994ab519c8441857bb8399ad1083cf Mon Sep 17 00:00:00 2001 From: Dylan Araps Date: Mon, 12 Aug 2019 23:57:31 +0000 Subject: [PATCH] kiss: fix issues with requiring root. --- .travis.yml | 0 LICENSE.md | 0 README.md | 0 kiss | 29 +++++++++++++++++++++-------- 4 files changed, 21 insertions(+), 8 deletions(-) mode change 100644 => 100755 .travis.yml mode change 100644 => 100755 LICENSE.md mode change 100644 => 100755 README.md diff --git a/.travis.yml b/.travis.yml old mode 100644 new mode 100755 diff --git a/LICENSE.md b/LICENSE.md old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/kiss b/kiss index 2451615..270d2e9 100755 --- a/kiss +++ b/kiss @@ -133,7 +133,6 @@ pkg_sources() { # belongs to. This avoid conflicts between two packages having a # source of the same name. mkdir -p "$src_dir/$1" - chmod 1777 "$src_dir/$1" cd "$src_dir/$1" # Find the package's repository files. This needs to keep @@ -424,9 +423,11 @@ pkg_build() { shift # Install any pre-built binaries if they exist. + # This calls 'args' to inherit a root check and call + # to 'sudo' to elevate permissions. [ -f "$bin_dir/$pkg#$version-$release.tar.gz" ] && { - log "[$pkg]: Found pre-built binary." - pkg_install "$bin_dir/$pkg#$version-$release.tar.gz" + log "[$pkg]: Found pre-built binary, installing..." + args i "$bin_dir/$pkg#$version-$release.tar.gz" continue } @@ -892,7 +893,14 @@ args() { i|in|ins|inst|insta|instal|install) shift [ "$1" ] || die "'kiss install' requires an argument." - root_check + + # Rerun the script with 'sudo' if the user isn't root. + # Cheeky but 'sudo' can't be used on shell functions + # themselves. + [ "$(id -u)" != 0 ] && { + sudo KISS_PATH=$KISS_PATH kiss i "$@" + return + } # Create a list of each package's dependencies. for pkg; do @@ -918,7 +926,15 @@ args() { r|re|rem|remo|remov|remove) shift [ "$1" ] || die "'kiss remove' requires an argument." - root_check + + # Rerun the script with 'sudo' if the user isn't root. + # Cheeky but 'sudo' can't be used on shell functions + # themselves. + [ "$(id -u)" != 0 ] && { + sudo KISS_PATH=$KISS_PATH kiss r "$@" + return + } + log "Removing packages..." # Create a list of each package's dependencies. @@ -1063,9 +1079,6 @@ main() { "${bin_dir:=$cac_dir/bin}" \ || die "Couldn't create cache directories." - # Set sticky bit in the "permanent" directories so users can write to it. - chmod 1777 "$cac_dir" "$src_dir" "$bin_dir" - args "$@" }