Strona 1 z 1
Operacje poprzez skrypty
: 10 lutego 2011, 16:03
autor: Robert007
Witam serdecznie.
Chciałbym wykonywać operacje na systemie Linux poprzez skrypty za pomocą strony www.
Te polecenia miały by być np.:
- kopiowanie (cp)
- nadawanie uprawnień (chmod)
- edycje pliku
- itp.
Za pomocą jakich skryptów można to wykonywać aby nie było błędów, typu zbyt szybkiego nadania polecenia zanim się skończy jedno wykonywać?
Czy lepiej jest napisać w bashu czy php?
Lub jak połączyć te dwa języki ale poprzez php nadawanie katalogu do bash?
: 10 lutego 2011, 16:39
autor: adam84
Owe funkcje można bez problemu wykonać w PHP. Oczywiście jeśli nie potrzebujesz do tego uprawnień roota.
Ja rozwiązałem problem z wykonywaniem czynności z uprawnieniami roota dając w CRONie 60x pętlę ze sleep(1) która wykonuje pobrane z pewnego miejsca funkcje poprzez exec();
A tak właściwie to ciekawe czy istnieje inny sposób aby wykonać poprzez PHP funkcje z uprawnieniami roota... Może ktoś wie?
: 10 lutego 2011, 16:48
autor: Bastian
" pisze: A tak właściwie to ciekawe czy istnieje inny sposób aby wykonać poprzez PHP funkcje z uprawnieniami roota. Może ktoś wie?
Ustawienie serwera apache na koncie roota, ale to samobójstwo.
: 10 lutego 2011, 17:53
autor: lessmian2
O sudo koledzy szanowni słyszeli? A zwłaszcza o poprawnie skonfigurowanym sudo

Poza tym jak się uprzesz, to i basha przez CGI uruchomisz.
: 10 lutego 2011, 17:56
autor: Robert007
O sudo koledzy szanowni słyszeli?
Jak to wykorzystać? Głównie chodzi mi o stworzenie własnego panelu do obsługi plików. Coś jak FileManager, tylko że jeszcze dodatkowe procesy.
: 10 lutego 2011, 18:04
autor: lessmian2
Sudo było odnośnie wykonywania poleceń jako root. Jeśli chcesz uruchamiać ze skryptów php polecenia powłoki, zainteresuj się funkcjami z rodziny system/exec ->
http://php.net/exec
Ale moim zdaniem to jest średni pomysł - jeden błąd w kodzie albo źle pomyślane rozwiązanie i masz przejęty serwer.
: 10 lutego 2011, 18:07
autor: Robert007
Sudo było odnośnie wykonywania poleceń jako root. Jeśli chcesz uruchamiać ze skryptów php polecenia powłoki, zainteresuj się funkcjami z rodziny system/exec ->
http://php.net/exec
Ale moim zdaniem to jest średni pomysł - jeden błąd w kodzie albo źle pomyślane rozwiązanie i masz przejęty serwer.
To oczywiste. Dlatego też pytam jakie są sposoby inne gdzie błąd nie wystąpi.
: 10 lutego 2011, 18:22
autor: lessmian2
Robert007 pisze:To oczywiste. Dlatego też pytam jakie są sposoby inne gdzie błąd nie wystąpi.
Nie ma takich

W każdym rozwiązaniu trzeba dbać o bezpieczeństwo.
Lepszym rozwiązaniem (moim skromnym zdaniem, a programistą nie jestem) byłoby podzielenie systemu na frontend - klikalne coś, np. w php i backend wystawiający jakieś API. Aplikacja, w której porusza się klient odwołuje się do metod wystawianych przez backend i tylko do tego ma dostęp. Backend realizuje już żądania na niższym, systemowym poziomie.
Oczywiście i to rozwiązanie ma swoje wady (np. większy stopień skomplikowania) i też nie ustrzeże przez badziewnym kodem. Wszystko zależy od zaprojektowanego rozwiązania i tego jak się je zaprogramuje.
: 10 lutego 2011, 18:27
autor: Robert007
Da się może jakoś połączyć bash i php? W sensie formatu (uzupełnienia)
w bashu np:
Gdzie %s to by była nazwa katalogu który został nadany poprzez php. Da się tak jakoś?
: 12 lutego 2011, 13:31
autor: Bastian
lessmian2, no tak jakoś zapomniałem o sudo.
" pisze:Da się może jakoś połączyć bash i php? W sensie formatu (uzupełnienia)
lessmian2 podał rodzinę funkcji, które na to pozwalają. Cała kwestia dzielenia frontentu i backendu jest dobra. Trzeba niemniej pomyśleć jak to zaprogramować. Frontend musi przekazywać, neutralne wartości do backendu, tak aby niemożliwe było wstrzyknąć cokolwiek z poziomu http. Backend może mieć dostęp do wybranych poleceń systemowych właśnie przez exec() i sudo i chyba nawet nie musi być na właściciela apache.