Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Allow Vagrant sudo-access without password for NFS-setup (for OS X)
#!/bin/bash
# Script for placing sudoers.d files with syntax-checking
# Making a temporary file to contain the sudoers-changes to be pre-checked
TMP=$(mktemp -t vagrant_sudoers)
cat /etc/sudoers > $TMP
cat >> $TMP <<EOF
# Allow passwordless startup of Vagrant when using NFS.
Cmnd_Alias VAGRANT_EXPORTS_ADD = /usr/bin/su root -c echo '*' >> /etc/exports
Cmnd_Alias VAGRANT_NFSD = /sbin/nfsd restart
Cmnd_Alias VAGRANT_EXPORTS_REMOVE = /usr/bin/sed -e /*/ d -ibak /etc/exports
%staff ALL=(root) NOPASSWD: VAGRANT_EXPORTS_ADD, VAGRANT_NFSD, VAGRANT_EXPORTS_REMOVE
EOF
# Check if the changes we want are OK
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

Mine was calling sed -E -e, so I had to add a -E.

cabloo commented Apr 10, 2015

For those wondering, you can check exactly what commands your version of Vagrant is trying to run in /var/log/auth.log, at least on Ubuntu/Debian.

chisleu commented Oct 22, 2015

In Mac OSX it is using a very long command with UUIDs for the sed command in the latest vagrant. I'm still working on getting it functional.

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