aboutsummarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorDevin Bayer2020-06-24 14:04:06 +0200
committerDevin Bayer2020-06-24 15:36:06 +0200
commit85329146ed3b2e05b252554c14ffdfd6011e3297 (patch)
tree6ee2793f1528c086911951f31b804cc7e4ef9565
downloadaur-85329146ed3b2e05b252554c14ffdfd6011e3297.tar.gz
new utility
-rw-r--r--.SRCINFO14
-rw-r--r--.gitignore4
-rw-r--r--PKGBUILD18
-rw-r--r--README.md11
-rwxr-xr-xfake-su.sh40
-rwxr-xr-xfake-sudo.sh44
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 -- "$@"