#!/bin/sh set -e umask 117 PATH=$PATH:/sbin:/usr/sbin SUDOERS=/etc/sudoers SUDOERSD=$SUDOERS.d TMP=`mktemp /tmp/sudoers.XXXXXXXXXX` SBANNER='### Automatically added by update-sudoers start ###' FBANNER='### Automatically added by update-sudoers end ###' usage() { cat < /dev/null || { echo "$1 changes break sudoers" rm -f $TMP exit 1 } } #[ -f $TMP ] && { echo "lock file exists"; exit 1; } while [ "$1" != "" ]; do case $1 in --help) usage exit 0;; *) shift;; esac done for i in $SUDOERSD/*; do echo "$SBANNER" >> $TMP grep -v -E '^[:space:]*$' $i >> $TMP check_sudoers $i echo "$FBANNER" >> $TMP done if [ -f $SUDOERS ]; then awk -v sbanner="$SBANNER" \ -v fbanner="$FBANNER" \ 'BEGIN {state="print"}; \ $0==sbanner {state="hide"; next}; \ $0==fbanner {state="print"; next}; \ /^[:space:]*$/ {next}; state=="print" {print}' < $SUDOERS >> $TMP check_sudoers $SUDOERS fi mv -f $TMP $SUDOERS chown root:root $SUDOERS chmod 440 $SUDOERS