Manfredo Manfredo - 1 month ago 12
Linux Question

Permission denied after visudo nopasswd set for port command

I am trying to prevent bash to ask for

sudo
permission to run the
port command
(OSX packet manager) adding it to
visudo
. I basically tried to follow this SO thread but I still get an error

manfredo@cave05:~$ port selfupdate
---> Updating MacPorts base sources using rsync
Error: Error synchronizing MacPorts sources: command execution failed
Please run `port -v selfupdate' for details.
Error: /opt/local/bin/port: port selfupdate failed: Error synchronizing MacPorts sources: command execution failed


The same
selfupdate
command runs smoothly if I
sudo
it.

My
visudo
has the following lines

# User privilege specification
root ALL=(ALL) ALL
%admin ALL=(ALL) ALL
%admin ALL=(ALL) NOPASSWD: /opt/local/bin/port


and I also tried susbtituitng the last line with

<user_name> ALL=(ALL) NOPASSWD: /opt/local/bin/port


What am I missing? Also can someone explain the syntax of the last line of the
visudo
file.

Answer

You actually want to achieve two things:

1. Making it possible to run sudo port without the need to enter a password.

You already solved that by adding the following line to /etc/sudoers:

%admin ALL=(ALL) NOPASSWD: /opt/local/bin/port

2. Making it possible to run sudo port without the need to explicitely type sudo

This can be done by an shell alias. Since the question is tagged bash I assume your shell is bash. In that case modify your .bashrc and add the following line:

alias port='sudo port'

Start a new shell and it should work.

Comments