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
&quot 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:

Kod: Zaznacz cały

cp /home/%s/katalog
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.
&quot 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.