mirror of
https://github.com/sshuttle/sshuttle.git
synced 2024-11-25 09:23:48 +01:00
69d3f7dc64
* added sudoers options to command line arguments * added sudoers options to command line arguments * template for sudoers file * Added option for GUI sudo * added support for GUI sudo * script for auto adding sudo file * sudoers auto add works and validates * small change * Clean up for CI * removed code that belongs in another PR * added path for package bins * added sudoers bin * added sudoers-add to setup file * fixed issue with sudoers bash script * auto sudoers now works * added --sudoers-no-modify option * bin now works with ./run * removed debug print * Updated sudoers-add script * Fixed error passing sudoers config to script * more dynamic building of sudoers file * added option to specify sudoers.d file name * fixed indent issue * fixed indent issue * indent issue * clean up * formating * docs * fix for flags * Update usage.rst * removed shell=true * cleared CI errors * cleared CI errors * removed random * cleared linter issue * cleared linter issue * cleared linter issue * updated sudoers-add script * safer temp file * moved bin directory * moved bin directory * removed print * fixed spacing issue * sudoers commands must only containe upper case latters
77 lines
1.6 KiB
Bash
Executable File
77 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# William Mantly <wmantly@gmail.com>
|
|
# MIT License
|
|
# https://github.com/wmantly/sudoers-add
|
|
|
|
NEWLINE=$'\n'
|
|
CONTENT=""
|
|
ME="$(basename "$(test -L "$0" && readlink "$0" || echo "$0")")"
|
|
|
|
if [ "$1" == "--help" ] || [ "$1" == "-h" ]; then
|
|
echo "Usage: $ME [file_path] [sudoers-file-name]"
|
|
echo "Usage: [content] | $ME sudoers-file-name"
|
|
echo "This will take a sudoers config validate it and add it to /etc/sudoers.d/{sudoers-file-name}"
|
|
echo "The config can come from a file, first usage example or piped in second example."
|
|
|
|
exit 0
|
|
fi
|
|
|
|
if [ "$1" == "" ]; then
|
|
(>&2 echo "This command take at lest one argument. See $ME --help")
|
|
|
|
exit 1
|
|
fi
|
|
|
|
if [ "$2" == "" ]; then
|
|
FILE_NAME=$1
|
|
shift
|
|
else
|
|
FILE_NAME=$2
|
|
fi
|
|
|
|
if [[ $EUID -ne 0 ]]; then
|
|
echo "This script must be run as root"
|
|
|
|
exit 1
|
|
fi
|
|
|
|
while read -r line
|
|
do
|
|
CONTENT+="${line}${NEWLINE}"
|
|
done < "${1:-/dev/stdin}"
|
|
|
|
if [ "$CONTENT" == "" ]; then
|
|
(>&2 echo "No config content specified. See $ME --help")
|
|
exit 1
|
|
fi
|
|
|
|
if [ "$FILE_NAME" == "" ]; then
|
|
(>&2 echo "No sudoers file name specified. See $ME --help")
|
|
exit 1
|
|
fi
|
|
|
|
# Make a temp file to hold the sudoers config
|
|
umask 077
|
|
TEMP_FILE=$(mktemp)
|
|
echo "$CONTENT" > "$TEMP_FILE"
|
|
|
|
# Make sure the content is valid
|
|
visudo_STDOUT=$(visudo -c -f "$TEMP_FILE" 2>&1)
|
|
visudo_code=$?
|
|
# The temp file is no longer needed
|
|
rm "$TEMP_FILE"
|
|
|
|
if [ $visudo_code -eq 0 ]; then
|
|
echo "$CONTENT" > "/etc/sudoers.d/$FILE_NAME"
|
|
chmod 0440 "/etc/sudoers.d/$FILE_NAME"
|
|
echo "The sudoers file /etc/sudoers.d/$FILE_NAME has been successfully created!"
|
|
|
|
exit 0
|
|
else
|
|
echo "Invalid sudoers config!"
|
|
echo "$visudo_STDOUT"
|
|
|
|
exit 1
|
|
fi
|
|
|