4

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
  • 10,660
  • 20
  • 60
  • 75

4 Answers4

5

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

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
  • 173,492
  • 58
  • 311
  • 399
0

You could also use sudo.

mdm
  • 12,230
  • 5
  • 33
  • 53
0

This will do it.

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

kSiR
  • 746
  • 4
  • 9