5

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,

Neuquino
  • 11,580
  • 20
  • 62
  • 76

4 Answers4

6

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.
4

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
  • 179,021
  • 58
  • 319
  • 408
0

You could also use sudo.

mdm
  • 12,480
  • 5
  • 34
  • 53
0

This will do it.

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

kSiR
  • 774
  • 4
  • 9