dockcross/imagefiles/install-gosu-binary-wrapper.sh

57 lines
1005 B
Bash
Raw Permalink Normal View History

#!/usr/bin/env bash
set -ex
set -o pipefail
if ! command -v gosu &> /dev/null; then
echo >&2 'error: "gosu" not found!'
exit 1
fi
# verify that the binary works
gosu nobody true
# To ensure that our custom sudo wrapper is not
# overwritten by a future re-install of sudo, it
2020-07-02 04:00:14 +02:00
# is created in /usr/local/bin
cat << EOF >> /usr/local/bin/sudo
#!/bin/sh
# Emulate the sudo command
2020-07-02 04:00:14 +02:00
SUDO_USER=root
SUDO_GROUP=root
while (( "\$#" )); do
case "\$1" in
# user option
-u)
SUDO_USER=\$2
shift 2
;;
# group option
-g)
SUDO_GROUP=\$2
shift 2
;;
# skipping arguments without values
-A|-b|-E|-e|-H|-h|-K|-n|-P|-S|-V|-v)
shift 1
;;
# skipping arguments with values
-a|-C|-c|-D|-i|-k|-l|-ll|-p|-r|-s|-t|-U)
shift 2
;;
# stop processing command line arguments
--)
shift 1
break
;;
*)
break
;;
esac
done
exec gosu \$SUDO_USER:\$SUDO_GROUP "\$@"
EOF
chmod +x /usr/local/bin/sudo