[Linux-Biella] ssh via user www-data on apache
PaulTT
paultt a bilug.linux.it
Ven 3 Dic 2010 15:42:16 CET
On 03/12/2010 11:06, Federico Pistono 說:
>> mi ripeti cosa vuoi/devi fare?
>> qualcosa del tipo: "clicco su una pagina web e mi parte uno script che fa scp?"
>>
> Yes.
>
>
>> in questo caso: come lo lanci lo script?
>>
> $cmd="/usr/local/bin/ffencall.sh bla bla";
> shell_exec($cmd);
>
>
>> Allora, ti crei un utente per eseguire lo script che abbia i permessi
>> necessari a leggere i dati di cui fare un rsync, diciamo l'utente pippi (che
>> fantasia :D ), nella sua home metti poi lo script da eseguire, diciamo sync.pl
>> La riga da mettere in /etc/sudoers dovrebbe essere una cosa del tipo
>>
>> www-data ALL = (pippo) NOPASSWD:/home/pippo/sync.pl
>>
>> Ovviamente la chiamata sara'
>> sudo -u pippo /home/pippo/sync.pl
>>
> Fatto. Se eseguo da shell:
>
> syncdata a mgds $ scp -v -i /home/syncdata/.ssh/id_dsa file.txt
> fede a 192.168.0.102:/tmp/
>
> Funziona. Vado in un'altra shell, eseguo:
>
> www-data a mgds $ sudo -u syncdata scp -v -i /home/syncdata/.ssh/id_dsa
> file.txt fede a 192.168.0.102:/tmp/
>
> A un certo punto mi dice:
> debug1: PEM_read_PrivateKey failed
> debug1: read PEM private key done: type<unknown>
> Enter passphrase for key '/home/syncdata/.ssh/id_dsa':
>
> I mio guess è che lui carica l'agent ssh quando carica il bashrc dell'utente:
>
> syncdata a mgds $ cat /home/syncdata/.bashrc
>
> SSH_ENV="$HOME/.ssh/environment"
>
> function start_agent {
> echo "Initialising new SSH agent..."
> /usr/bin/ssh-agent | sed 's/^echo/#echo/'> "${SSH_ENV}"
> echo succeeded
> chmod 600 "${SSH_ENV}"
> . "${SSH_ENV}"> /dev/null
> /usr/bin/ssh-add;
> }
>
> # Source SSH settings, if applicable
>
> if [ -f "${SSH_ENV}" ]; then
> . "${SSH_ENV}"> /dev/null
> #ps ${SSH_AGENT_PID} doesn't work under cywgin
> ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$> /dev/null || {
> start_agent;
> }
> else
> start_agent;
> fi
>
> Ma se www-data lancia uno script come sycndata tramite sudo, il bashrc
> non viene caricato, quindi l'agent non è su, quindi chiede la
> passphrase, quindi da errore, come prima :(
>
e toglila cmq quella porcheria dal .bashrc
mai avuto niente del genere io li' dentro :D
inoltre se usi -a .ssh/id_rsa non ti serve specificare il -i
cosa sarebbe sto SSH_AGENT?????
io butterei via sta SSH_ENV e chiusa li' :D
--
- I can't wait till tomorrow.
- What happens tomorrow?
- I get better-looking every day.
Maggiori informazioni sulla lista
Linux