Skip to content

Instantly share code, notes, and snippets.

@EHLOVader
Forked from joemaller/install_vagrant_sudoers.sh
Last active March 10, 2018 01:10
Show Gist options
  • Save EHLOVader/606f7c9f8717608527b8 to your computer and use it in GitHub Desktop.
Save EHLOVader/606f7c9f8717608527b8 to your computer and use it in GitHub Desktop.
#!/bin/bash
# Add Vagrant's hostupdater commands to sudoers, for `vagrant up` without a password
# force sudo on self.
if [ $( id -u ) -ne 0 ]; then
exec sudo -p "Login password for %p: " "$0" "$@"
exit $?
fi
# Stage updated sudoers in a temporary file for syntax checking
TMP=$(mktemp -t vagrant_sudoers)
cat /etc/sudoers > $TMP
# Remove any previous declarations
sed -i -e '/^# vagrant-hostsupdater/,/^# end vagrant-hostsupdater/d' $TMP
sed -i -e '/^# vagrant-nfs/,/^# end vagrant-nfs/d' $TMP
cat >> $TMP <<EOF
# vagrant-hostsupdater
Cmnd_Alias VAGRANT_HOSTS_ADD = /bin/sh -c echo "*" >> /etc/hosts
Cmnd_Alias VAGRANT_HOSTS_REMOVE = /usr/bin/sed -i -e /*/ d /etc/hosts
%admin ALL=(root) NOPASSWD: VAGRANT_HOSTS_ADD, VAGRANT_HOSTS_REMOVE
# end vagrant-hostsupdater
EOF
cat >> $TMP <<EOF
# vagrant-nfs
Cmnd_Alias VAGRANT_EXPORTS_ADD = /usr/bin/tee -a /etc/exports
Cmnd_Alias VAGRANT_NFSD = /sbin/nfsd restart
Cmnd_Alias VAGRANT_EXPORTS_REMOVE = /usr/bin/sed -E -e /*/ d -ibak /etc/exports
%admin ALL=(root) NOPASSWD: VAGRANT_EXPORTS_ADD, VAGRANT_NFSD, VAGRANT_EXPORTS_REMOVE
# end vagrant-nfs
EOF
# Check syntax and overwrite sudoers if clean
visudo -c -f $TMP
if [ $? -eq 0 ]; then
echo "Adding vagrant commands to sudoers"
cat $TMP > /etc/sudoers
else
echo "sudoers syntax wasn't valid. Aborting!"
fi
rm -f $TMP
@EHLOVader
Copy link
Author

Updated with better hostsmanager update alias.

@EHLOVader
Copy link
Author

Added auto sudo and better cleanup commands.

@EHLOVader
Copy link
Author

Updated with new commands, and improved cleanup.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment