diff options
author | William Mantly <wmantly@gmail.com> | 2019-12-12 16:15:31 -0500 |
---|---|---|
committer | Brian May <brian@linuxpenguins.xyz> | 2019-12-13 08:15:31 +1100 |
commit | 69d3f7dc64211d3ab91991cc90865dbf9edcba15 (patch) | |
tree | 84d44cc4ea82bbc27fcbc70f3ecd0e6f3127d105 /bin | |
parent | 6ad4473c87511bcafaec3d8d0c69dfcb166b48ed (diff) |
Auto sudoers file (#269)
* 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
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/sudoers-add | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/bin/sudoers-add b/bin/sudoers-add new file mode 100755 index 0000000..5bec3d1 --- /dev/null +++ b/bin/sudoers-add @@ -0,0 +1,76 @@ +#!/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 + |