EDIT:
LÖSUNG GEFUNDEN.
hintergrund.....
ich will mit rsync daten syncronisieren. das klappt auf der shell
auch wunderbar und ohne eingabe eines passwords.
das ganze funzt als user rsyncing .
wenn ich nun unter php mit system() das rsync aufrufe, ist das
ja mist. klar könnte ich jetzt auch für apache die keys erstellen
und auf den maschinen austauschen, aber das ist eher zu unsicher.
also habe ich mir gedacht, dass der www-user (apache) einen
auf sudo -u rsyncing und damit dann das rsync selbst anspricht.
nur leider sagt mir /var/log/messages was anderes, wenn ich
das php-script starte.
Code:
Jan 7 16:34:12 machine sudo(pam_unix)[3657]: authentication failure; logname= uid=0 euid=0 tty= ruser= rhost= user=apache
zum lösen des problem sein sollte.
PHP Code:
<?php
echo system('date');
echo system('sudo -u rsyncing /usr/bin/rsync -avz --delete -e ssh remote.machine.net:/data/www/ /tmp/rsync/');
?>
was muss ich nun in der /etc/sudoers einstellen?
im moment habe ich das zusammengefummelt.
Code:
apache localhost = (rsyncing) NOPASSWD: /usr/bin/rsync
der user apache darf als rsyncing das rsync starten.
andere ideen?
EDIT:
und hier nun die lösung ....
php-datei
PHP Code:
<pre>
<?php
echo system('date') . '<hr>';
echo system('sudo -u rsyncing /home/rsyncing/shellscript.sh');
?>
</pre>
Code:
apache ALL = (rsyncing) NOPASSWD: /home/rsyncing/shellscript.sh
damit klappt es einwandfrei..