Re: Re: run remote shell script

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks Matthew. You and Richard have been very helpful. I should be able to carry on. Thank you again.

--
Roger

Quoting Matthew Weier O'Phinney <mweierophinney@xxxxxxxxx>:

> First off, Roger, Thomas, not sure which is your given name --
> please
> use a mail or news agent that will wrap your lines with linebreaks at
> 72
> characters. Some of us are on text-based clients, and it's difficult
> to
> read your posts when they extend beyond the screen boundaries... ;-)
> 
> * Roger Thomas <sniper@xxxxxxxxxxx> :
> > OK. I am able to setup remote key authentication between svrA and
> > svrB. From svrA I can login to svrB with something like
> > [www@svrA www]$ ssh www@svrB
> >
> > and I can also execute a shell script like
> > [www@svrA www]$ ssh www@svrB /tmp/test.sh
> >
> > On svrA I have a PHP script like so:
> > <?
> > system('ssh www@svrB /tmp/test.sh someDIR');
> > ?>
> >
> > /tmp/test.sh on svrB is only a one liner like so:
> > mkdir /tmp/$1
> >
> > I ran the script from the browser but the /tmp/someDIR is not
> created :(
> > Could it be that user nobody on svrA is *not* allowed to connect
> to
> > svrB because the public key belongs to user www ? How do I rectify
> > this ?
> >
> > In the actual situation, I need to execute a shell script in svrB
> > (from browser served by Apache on svrA) that only root can run.
> Please
> > advise. I am getting very worried.
> 
> Okay, I should have been a little more explicit. 
> 
> There are two ways I've done this. The initial details are
> different,
> but the final call is pretty much the same. 
> 
> 1. Using sudo
>    'sudo' allows users to run commands as different users. In this
> case,
>    we want the user running the web server (usually www, apache, or
>    nobody) to run ssh, or a script that executes the ssh command, as
> a
>    normal user. I usually opt for the latter, and create a script
> such
>    as:
> 
>        #!/bin/bash
>        exec ssh user@svrA /path/to/remote/script
> 
>    and save it in /usr/local/bin. Then, edit sudoers (usually
> executing
>    'visudo' as root), and add a line like
> 
>        nobody ALL = (username) NOPASSWD: /usr/local/bin/SCRIPTNAME
> 
>    What this does is to allow the user 'nobody' (or whomever runs
> the
>    web server process) to execute /usr/local/bin/SCRIPTNAME as
>    'username', and they do not need to enter a password to do so
>    (normally with sudo you do).
> 
>    You'll need to restart the webserver after granting the sudo
>    privileges.
> 
>    In this scenario, the normal user, specified by 'username' above,
>    needs to have the the SSH keys setup between the servers.
> 
> 2. Give the web user a home directory
>    The other option is to setup a home directory for the web user.
> This
>    will mean editing the /etc/passwd file to give the web user both
> a
>    home directory and a shell; these are teh last two items in the
> colon
>    delimited list. A sample entry might look like:
> 
>        nobody:x:65534:65534:nobody:/var/www:/bin/bash
>    
>    Once you've done this, restart the web server. At this point,
> you'll
>    then need to become the web user briefly in order to:
> 
>       * generate an SSH key
>       * send the key to the remote server
> 
>    Then, on the remote server, add the SSH key to the appropriate
> user
>    on that system.
> 
> Good luck!
> 
> > Quoting Matthew Weier O'Phinney <mweierophinney@xxxxxxxxx> :
> >
> > > * Roger Thomas <sniper@xxxxxxxxxxx> :
> > > > My PHP script is in svrA. How do I run a shell script in svrB?
> > > > svrB does not have PHP and Apache :(
> > > > Is this at all possible? Please advise.
> > > 
> > > Use ssh. You will have to setup remote key authentication from
> svrA to
> > > svrB (so that a password will not be needed), and then in your
> script
> > > you would call:
> > > 
> > >     system('ssh svrB /path/to/scriptToRun');
> 
> -- 
> Matthew Weier O'Phinney
> Zend Certified Engineer
> http://weierophinney.net/matthew/
> 
> -- 
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 
> 





---------------------------------------------------
Sign Up for free Email at http://ureg.home.net.my/
---------------------------------------------------

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux