SCIENTIFIC-LINUX-USERS Archives

April 2014

SCIENTIFIC-LINUX-USERS@LISTSERV.FNAL.GOV

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Mark Whidby <[log in to unmask]>
Reply To:
Mark Whidby <[log in to unmask]>
Date:
Tue, 29 Apr 2014 20:37:10 +0100
Content-Type:
text/plain
Parts/Attachments:
text/plain (40 lines)
On Tue, 2014-04-29 at 12:20 -0700, ToddAndMargo wrote:
> Hi All,
> 
> I have a bash script that need to be run as root.
> In the script, I check to see if it is running as
> root and flag the user to run appropriately.
> 
> Is there a way to use "su" to prompt for the password
> and continue the script if successful? (I would test for
> $? after the prompt.)
> 
> Currently "su" will just open a new shell as root.
> 
> I can run a command inside "su", but what about the
> other 200 lines of code?  :'(

An interesting problem :-)

Something like this seems to work but I haven't thought through
the consequences of it, so be aware:

-----cut here-----
#!/bin/sh

this_script=$(basename $0)

if [ $(id -u) -ne 0 ]
then
  echo "Enter root's password"
  su -c ./$this_script
  exit
fi

echo "Hello world"
echo "Running as $(id -u)"
-----cut here-----

You probably need to do something with $PATH to obviate the
need for the "./" on the su line.

ATOM RSS1 RSS2