From: Silvio Rhatto Date: Sun, 6 Dec 2020 01:03:53 +0000 (-0300) Subject: Feat: trashman: try to invoke with sudo if user is not root X-Git-Url: https://gitweb.fluxo.info/?a=commitdiff_plain;h=a0a5fc9b66ea81459dbe6674d218a154b183bdf0;p=trashman.git Feat: trashman: try to invoke with sudo if user is not root --- diff --git a/README.md b/README.md index cf9abc7..e0fb43a 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ by this one: trashman install -Instead of being just a shorthand, `trashman` packages try as best as possible +Instead of being just a shorthand, `trashman` packages can try as best as possible not to fetch keys and scripts from remote locations without some basic checks. So if you have to add files into `/etc/apt/trusted.gpg.d`, `trashman` will provide those keys or fingerprints instead of donwloading it from somewhere, in which case it could diff --git a/share/trashman/trashman/functions b/share/trashman/trashman/functions index 61102e9..48700cd 100644 --- a/share/trashman/trashman/functions +++ b/share/trashman/trashman/functions @@ -203,6 +203,7 @@ trashman_check_exit_status() { # Check for superuser privileges trashman_check_root() { local action="$1" + local package="$2" if [ -z "$action" ]; then return @@ -213,8 +214,15 @@ trashman_check_root() { fi if [ "`whoami`" != "root" ]; then - trashman_echo "Action $action requires root privileges" - exit 1 + if which sudo &> /dev/null; then + # Try to invoke it with sudo + trashman_echo "You're running as a regular user, trying to re-invoke the command using sudo..." + sudo $PROGRAM $action $package + exit $? + else + trashman_echo "Action $action requires root privileges" + exit 1 + fi fi } diff --git a/trashman b/trashman index 8ffa0b4..32fa6e2 100755 --- a/trashman +++ b/trashman @@ -91,7 +91,7 @@ else # Checking for privileges if [ "$BASENAME" = "trashman" ]; then - trashman_check_root $ACTION + trashman_check_root $ACTION $package else trashman_check_sudo fi