Wykonanie przez php skryptu basha
Wykonanie przez php skryptu basha
Mam następujący problem: z poziomu przeglądarki wywołuję prosty skrypt php, który z kolei wywołuje skrypt sh. Ogólnie działa, ale skrypt basha jest wywoływany przez użytkownika www-data, natomiast ja muszę tak zrobić, aby został wywołany przez właściciela. Czy da się to jakoś wykonać? Z góry dziękuję za pomoc.
Oczywiście, że sie da. Zainteresuj się polecieniami php z grupy ssh2.
http://pl.php.net/manual/pl/book.ssh2.php
http://kevin.vanzonneveld.net/techblog/ ... _with_php/
http://pl.php.net/manual/pl/book.ssh2.php
http://kevin.vanzonneveld.net/techblog/ ... _with_php/
Zainteresuj sie sudo.
Najprościej wykonujesz przez:
a plik sudoers powinien coś takiego zawierać:
Najprościej wykonujesz przez:
Kod: Zaznacz cały
exec('sudo /lokalizacja_skryptu');
a plik sudoers powinien coś takiego zawierać:
Kod: Zaznacz cały
www-data ALL=(ALL) ALL
root ALL=(ALL) ALL
www-data ALL=(ALL) NOPASSWD: ALL
Oj, takie mało bezpieczne to coś. W takim przypadku www-data może bez hasła uruchamiać dowolny skrypt jako którykolwiek z użytkowników systemowych. Jak już chcesz z innego użytkownika to nie lepiej tak?dan-j2 pisze:Kod: Zaznacz cały
www-data ALL=(ALL) NOPASSWD: ALL
Kod: Zaznacz cały
www-data ALL=(jakiś_użytkownik) NOPASSWD:/jakiś_skrypt.sh
Tylko po co bawić się z sudo skoro mamy biblioteki ssh2.
Możesz użyć jeszcze expect. Krąży opinia że expect daje więcej możliwości od ssh2 i nie ma problemów z kluczami do autoryzacji. Choć moim skromnym zdaniem ssh2 jest bardziej intuicyjne i prostsze więc polecam rozwiazanie które zaproponował Intruder
Możesz użyć jeszcze expect. Krąży opinia że expect daje więcej możliwości od ssh2 i nie ma problemów z kluczami do autoryzacji. Choć moim skromnym zdaniem ssh2 jest bardziej intuicyjne i prostsze więc polecam rozwiazanie które zaproponował Intruder