tags:

views:

78

answers:

4

Hi, I need to write a bash script to do something as another user and then return to the initial user...

Suppose I run the following as root:

#!/bin/bash
USER=zaraza
su - "${USER}"
#do some stuff as zaraza
________ #here I should logout zaraza
#continue doing things as root

In the console I should write "exit", but in bash is a keyword and it exits the script...

Thanks in advance,

+1  A: 

The simplest way is to make the stuff that has to run as the other user a separate script and invoke it with the "-c" option in su, like su -c otherscript userid.

You may be able to do that as a "here script" with << EOF, but I've never tried it.

Paul Tomblin
+2  A: 

Use su -c. From the man page:

 su man -c catman
        Runs the command catman as user man.  You will be asked for man's
        password unless your real UID is 0.
Graham Lee
A: 

You could also use sudo.

mdm
A: 

This will do it.

su - ${username} -c /path/to/the/shellscript.sh

kSiR