diff options
author | Devin Bayer | 2020-06-24 14:04:06 +0200 |
---|---|---|
committer | Devin Bayer | 2020-06-24 15:36:06 +0200 |
commit | 85329146ed3b2e05b252554c14ffdfd6011e3297 (patch) | |
tree | 6ee2793f1528c086911951f31b804cc7e4ef9565 | |
download | aur-85329146ed3b2e05b252554c14ffdfd6011e3297.tar.gz |
new utility
-rw-r--r-- | .SRCINFO | 14 | ||||
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | PKGBUILD | 18 | ||||
-rw-r--r-- | README.md | 11 | ||||
-rwxr-xr-x | fake-su.sh | 40 | ||||
-rwxr-xr-x | fake-sudo.sh | 44 |
6 files changed, 131 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..84c9ebd9d518 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,14 @@ +pkgbase = fake-sudo + pkgdesc = A drop-in replacement for sudo that pretents to be root with user namespaces + pkgver = 1 + pkgrel = 1 + url = https://github.com/0ex/fake-sudo + arch = any + license = GPL + provides = sudo + conflicts = sudo + source = fake-sudo.sh + sha256sums = 4dac8e64024a0cb54d011ad21c0bc227d921569f2f9c0a2628c03ed8d6cbbe41 + +pkgname = fake-sudo + diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000000..e5e507b4059f --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +pkg/ +src/ +flatpak-xdg-utils/ +*.pkg.tar.xz diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..c4245d27ab92 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,18 @@ +# Maintainer: Devin Bayer <dev@doubly.so> +pkgname=fake-sudo +pkgver=1 +pkgrel=1 +pkgdesc="A drop-in replacement for sudo that pretents to be root with user namespaces" +arch=('any') +url="https://github.com/0ex/fake-sudo" +license=('GPL') +depends=() +provides=('sudo') +conflicts=('sudo') +makedepends=() +source=('fake-sudo.sh') +sha256sums=('4dac8e64024a0cb54d011ad21c0bc227d921569f2f9c0a2628c03ed8d6cbbe41') + +package() { + install -D fake-sudo.sh "$pkgdir/usr/bin/sudo" +} diff --git a/README.md b/README.md new file mode 100644 index 000000000000..d0f12c4c480c --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +# fake-sudo + +## to install (Arch) + + curl -L -o /root/fake-sudo.pkg https://github.com/0ex/fake-sudo/releases/download/v1/fake-sudo-1-1-x86_64.pkg.tar.xz + pacman -U --noconfirm /root/fake-sudo.pkg + +## see also + +- https://github.com/Changaco/nosudo + diff --git a/fake-su.sh b/fake-su.sh new file mode 100755 index 000000000000..dfa57878d29d --- /dev/null +++ b/fake-su.sh @@ -0,0 +1,40 @@ +#!/bin/sh +# fake-su + +cmd="" +shell="/bin/sh" + +while [ $# -gt 0 ]; do + case "$1" in + -h|--help) + echo "usage: $0 [-l] [-] [<user> [<arg>...]]" + exit 0 + ;; + -|-l|--login) + shell="$shell -"; shift + ;; + -c|--command) + cmd="$2"; shift 2 + ;; + --) + shift + break + ;; + -*) + echo "$0: invalid option: $1" >&2 + exit 1 + ;; + *) + echo "$0: ignoring user=$1" >&2 + shift + break + ;; + esac +done + +if [ -z "$cmd" ] +then + exec unshare -r -- "$shell" "$@" +else + exec unshare -r -- "$shell" -c "$cmd" "$@" +fi diff --git a/fake-sudo.sh b/fake-sudo.sh new file mode 100755 index 000000000000..d17074c12ab6 --- /dev/null +++ b/fake-sudo.sh @@ -0,0 +1,44 @@ +#!/bin/sh +# fake-sudo + +shell="" + +while [ $# -gt 0 ]; do + case "$1" in + --*=*) + # convert --a=b → --a b + a="${1%%=*}"; b="${1#*=}" + shift + set -- "$a" "$b" "$@" + ;; + -h|--help) + echo "usage: $0 [-u <user>] [<cmd> <arg>...]" + exit 0 + ;; + -i|--login) + shell="/bin/sh -" + shift + ;; + -u|--user) + echo "$0: ignoring user=$1" >&2 + shift 2 + ;; + --) + shift + break + ;; + -*) + echo "$0: invalid option: $1" >&2 + exit 1 + ;; + *) + break + ;; + esac +done + +if [ -n "$shell" ] +then + set -- $shell "$@" +fi +exec unshare -r -- "$@" |