0

When I run a script such as this:

ssh -t [email protected] '/tmp/somescript.sh'

where the script is defined as:

#!/bin/sh
mkdir -p /data/workday/cred
chown -R myuser:myuser /data
su myuser -  # <------- NOTICE THIS ! ! ! ! 
rpm -Uvp --force --nodeps --prefix /data/place /data/RPMs/myrpm.rpm

Notice the above su command.

If I comment-out the su command, the script runs remotely and then my shell prompt returns to where I came from ( same server where I ran the ssh command above )

But leaving the script as listed above, causes the script to complete successfully but the shell prompt stays on the remote server.

How can I prevent that ? Making sure that the issuer of the rpm command is a different user than root just a listed ?

1

2 Answers 2

4

Run the rpm command with sudo:

#!/bin/sh
mkdir -p /data/workday/cred
chown -R myuser:myuser /data
sudo -u myuser rpm -Uvp --force --nodeps --prefix /data/place /data/RPMs/myrpm.rpm
1

su starts a shell. When you exit that shell, then the rpm command will execute. If you're changing user to execute the rpm command, then

su -c 'rpm -Uvp --force --nodeps --prefix /data/place /data/RPMs/myrpm.rpm'  myuser

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .