Skip to content
Advertisement

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.

Advertisement

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.

User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement