Apple - How do I execute a bash script that requires root privileges?

Take the script that you created:

#!/bin/bash

echo "plugin L2TP.ppp">>/etc/ppp/options 
echo "l2tpnoipsec">>/etc/ppp/options

Save it in your home directory, or a 'scripts' directory inside your home directory, as l2tp.sh. Allow it to be executed(write this command in Terminal):

chmod 700 ~/path/to/l2tp.sh

To execute the file using sudo (root privileges):

Method #1. In Terminal type:

$ sudo ~/path/to/l2tp.sh

Method #2. Create a file run_l2tp.command with this contents:

sudo ~/path/to/l2tp.sh

Allow it to be executed:

chmod u+x run_l2tp.command

When you double-click run_l2tp.command and enter the password the l2tp.sh file will be executed with root privileges.

Some notes:

  • On UNIX like systems, ~ is short for "my home directory".
  • Chmod 700 will make the file executable only by you. For more information: see this Wikipedia page.
  • typing 'sudo' before a command will execute the program using root privileges. Be careful when doing this, bad things can happen if you're not sure what you're doing.
  • Obviously you can omit the /path/to if you saved this script directly in your home directory.

Save this:

#!/bin/bash

echo "plugin L2TP.ppp">>/etc/ppp/options 
echo "l2tpnoipsec">>/etc/ppp/options

to your Desktop in a file named script.sh.

Open a Terminal window and type:

sudo bash ~/Desktop/script.sh

Enter your password when prompted and all the commands in the file will run with super user privledges.


If for security purposes, you don't want any user of your system to be able to run the script, but rather you want to be prompted for an administrative password, an alternate solution would be to save the shell script and then use the program AppleScript Editor to create an AppleScript.

The AppleScript would be a one-liner, saying do shell script «your script's name here» with administrator privileges. Save that script as an Application. Then, when you click it, it will ask you for an administrator password, then run the shell script with administrator privileges.

Obviously, replace «your script's name here» with the path to your script.