diff --git a/elements/sudoers/README.rst b/elements/sudoers/README.rst new file mode 100644 index 0000000..a01d3db --- /dev/null +++ b/elements/sudoers/README.rst @@ -0,0 +1,18 @@ +======= +sudoers +======= + +This element allows for injecting sudoers configuration into an image. + +Environment Variables +--------------------- + +DIB_SUDOERS_FILENAME + :Required: No + :Default: dib + :Description: Name of the sudoers file in /etc/sudoers.d/ + +DIB_SUDOERS_CONFIG + :Required: Yes + :Default: None + :Description: Sudoers configuration to inject diff --git a/elements/sudoers/element-deps b/elements/sudoers/element-deps new file mode 100644 index 0000000..7076aba --- /dev/null +++ b/elements/sudoers/element-deps @@ -0,0 +1 @@ +package-installs diff --git a/elements/sudoers/environment.d/sudoers b/elements/sudoers/environment.d/sudoers new file mode 100644 index 0000000..a03a646 --- /dev/null +++ b/elements/sudoers/environment.d/sudoers @@ -0,0 +1,2 @@ +export DIB_SUDOERS_FILENAME=${DIB_SUDOERS_FILENAME:-dib} +export DIB_SUDOERS_CONFIG=${DIB_SUDOERS_CONFIG:?Please set DIB_SUDOERS_CONFIG} diff --git a/elements/sudoers/install.d/50-sudoers b/elements/sudoers/install.d/50-sudoers new file mode 100755 index 0000000..512b72d --- /dev/null +++ b/elements/sudoers/install.d/50-sudoers @@ -0,0 +1,11 @@ +#!/bin/bash + +if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then + set -x +fi +set -eu +set -o pipefail + +echo "${DIB_SUDOERS_CONFIG}" > /etc/sudoers.d/${DIB_SUDOERS_FILENAME} +chmod 0440 /etc/sudoers.d/${DIB_SUDOERS_FILENAME} +visudo -c || (rm /etc/sudoers.d/${DIB_SUDOERS_FILENAME} && false) diff --git a/elements/sudoers/package-installs.yaml b/elements/sudoers/package-installs.yaml new file mode 100644 index 0000000..b00b341 --- /dev/null +++ b/elements/sudoers/package-installs.yaml @@ -0,0 +1 @@ +sudo: