Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP/Ubuntu] Jak z poziomu PHP wywołać polecenie ..., shell_exec();
Babcia@Stefa
post
Post #1





Grupa: Zarejestrowani
Postów: 654
Pomógł: 17
Dołączył: 19.03.2006
Skąd: z kosmosu ;)

Ostrzeżenie: (0%)
-----


Witam, nie mogę zrobić zrzutu ekranu (zdjęcia) z poziomu PHP, w terminalu normalnie wszystko działa (nawet na koncie z ograniczeniami sprawdzałem).

  1. <?php
  2. $fp = fopen('../Data/ScreenPhotos/test.png', 'w');
  3. fwrite($fp, 'test');
  4. fclose($fp);
  5. echo shell_exec("scrot ../Data/ScreenPhotos/test.png");
  6. ?>


Tworzy plik test.png w folderze ../Data/ScreenPhotos, ale jego treścią dalej jest 'test' a nie już obrazek.
Dlaczego tworze plik z treścią test? - Właścicielem stworzonego pliku jest serwer

Z tego co widać to PHP nie ma uprawnień do wywołania polecenie "scrot ../Data/ScreenPhotos/test.png", ale jak można wywołać to polecenie/zmodyfikować aby PHP miał uprawnienia?

Pozdrawiam, WebNuLL

Ten post edytował Babcia@Stefa 23.12.2008, 20:13:48


--------------------
Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 18)
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat(Babcia@Stefa @ 23.12.2008, 14:45:27 ) *
Dlaczego tworze plik z treścią test?

O ja pier....

Cytat
fwrite() zapisuje treść łańcuch do strumienia pliku wskazanego przez uchwyt .

Masz tak cholerną alergię na manuala i myślenie, ze to przechodzi ludzkie pojęcie.
http://pl.php.net/manual/pl/function.imagefttext.php


--------------------
Go to the top of the page
+Quote Post
Babcia@Stefa
post
Post #3





Grupa: Zarejestrowani
Postów: 654
Pomógł: 17
Dołączył: 19.03.2006
Skąd: z kosmosu ;)

Ostrzeżenie: (0%)
-----


Cytat(wookieb @ 23.12.2008, 14:50:26 ) *
O ja pier....
Masz tak cholerną alergię na manuala i myślenie, ze to przechodzi ludzkie pojęcie.
http://pl.php.net/manual/pl/function.imagefttext.php


Za to ty masz alergię na czytanie ze zrozumieniem, nie pisz jak czytasz sam tytuł...

Chodzi mi o całkiem coś innego a nie pisanie po obrazu...

Pozdrawiam, WebNuLL


--------------------
Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
zmodyfikować aby PHP miał uprawnienia?

Dać uprawnienia dla other na rwx po uruchomieniu scrot?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Babcia@Stefa
post
Post #5





Grupa: Zarejestrowani
Postów: 654
Pomógł: 17
Dołączył: 19.03.2006
Skąd: z kosmosu ;)

Ostrzeżenie: (0%)
-----


Komu/czemu dać uprawnienia?
Katalog w którym zapisywane są zdjęcia ma 777, każdy może go dowolnie modyfikować.

@edit
Co masz na myśli pisząc "other"?

Pozdrawiam, WebNuLL

Ten post edytował Babcia@Stefa 24.12.2008, 00:27:43


--------------------
Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


A nie jest czasem tak ze mozesz skrina zrobic tylko jak masz dostep do X-ow? A serwer nie ma...


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
pinochet
post
Post #7





Grupa: Zarejestrowani
Postów: 120
Pomógł: 12
Dołączył: 9.10.2008
Skąd: Tricity.Rumia()

Ostrzeżenie: (0%)
-----


ja bym spróbował przez su
A jak nie to może troche głupsze rozwiązanie ale będzie działać
crontab -e
* * * * * * scrot ../Data/ScreenPhotos/test.png
chyba ze robisz cos w stylu browsershot :]
Go to the top of the page
+Quote Post
Babcia@Stefa
post
Post #8





Grupa: Zarejestrowani
Postów: 654
Pomógł: 17
Dołączył: 19.03.2006
Skąd: z kosmosu ;)

Ostrzeżenie: (0%)
-----


Cytat(dr_bonzo @ 24.12.2008, 01:09:20 ) *
A nie jest czasem tak ze mozesz skrina zrobic tylko jak masz dostep do X-ow? A serwer nie ma...


Nie za bardzo Cię rozumiem, Linux to dla mnie jeszcze jak to mówią "czarna magia".


Cytat(pinochet @ 24.12.2008, 01:50:30 ) *
ja bym spróbował przez su
A jak nie to może troche głupsze rozwiązanie ale będzie działać
crontab -e
* * * * * * scrot ../Data/ScreenPhotos/test.png
chyba ze robisz cos w stylu browsershot :]


Chodzi Ci o sudo?
To chyba odpada, bo PHP nie wpisze hasła haha.gif

To w Linuksach wbudowany jest Crontab?

Pozdrawiam, WebNuLL


--------------------
Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian
Go to the top of the page
+Quote Post
kwiateusz
post
Post #9


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




X to srodowisko graficzne, na windowsa tez jest cron (jakiś tam port or sth)
Go to the top of the page
+Quote Post
ultra_18
post
Post #10





Grupa: Zarejestrowani
Postów: 71
Pomógł: 4
Dołączył: 30.10.2008

Ostrzeżenie: (0%)
-----


Jak sobie nie radzisz to możesz zmienić właściciela apache na root to na pewno bedziesz miał uprawnienia z poziomu php, zmiane wlasciciela odbywa sie w głownym pliku konfiguracyjnym apache bodajże apache2.conf
Go to the top of the page
+Quote Post
wrzasq
post
Post #11





Grupa: Zarejestrowani
Postów: 206
Pomógł: 18
Dołączył: 6.03.2006
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Cytat
nie ma uprawnień do wywołania polecenie "scrot ../Data/ScreenPhotos/test.png"

nie ma updawnien do tego konkretnie polecenia? czy moze w ogole nie mozesz z poziomu PHP uzywac polecen powloki? wtedy to konfiguracja PHP. wklej błąd, który zapewne sie pojawia.

ale tak jak dr_bonzo napisal - zeby zrobic screen'a musisz miec przeciez z czego go zrobic. ekran Xow nie jest dostepny (no chyba, ze byc sie w jakies kosmiczne cracki pobawil w socketach Xow) wiec jak chcesz to zrobic z poziomu PHP?

sudo i su to nie to samo -.-'. a crontab'a nie musisz robic przez root'a. w roocie ustawiasz crontab'a juzera z pod którego jest uruchamiane PHP i ten plik niech należy do tego juzera, wtedy możesz spokojnie go edytować z poziomu PHP. ale po co crontab to wykonywania polecenia z poziomu PHP? nie rozumiem obejścia.

i zamiast zadawac tyle pytan to poczytaj najpierw chociaz troche, bo widac, ze uniksowe systemy sa dla ciebie faktycznie "czarna magia" wiec szkoda zebyc tracil czas na cos, czego nawet nie zrozumiesz.


--------------------
Go to the top of the page
+Quote Post
Babcia@Stefa
post
Post #12





Grupa: Zarejestrowani
Postów: 654
Pomógł: 17
Dołączył: 19.03.2006
Skąd: z kosmosu ;)

Ostrzeżenie: (0%)
-----


Cytat(wrzasq @ 25.12.2008, 00:21:53 ) *
nie ma updawnien do tego konkretnie polecenia? czy moze w ogole nie mozesz z poziomu PHP uzywac polecen powloki? wtedy to konfiguracja PHP. wklej błąd, który zapewne sie pojawia.

ale tak jak dr_bonzo napisal - zeby zrobic screen'a musisz miec przeciez z czego go zrobic. ekran Xow nie jest dostepny (no chyba, ze byc sie w jakies kosmiczne cracki pobawil w socketach Xow) wiec jak chcesz to zrobic z poziomu PHP?

sudo i su to nie to samo -.-'. a crontab'a nie musisz robic przez root'a. w roocie ustawiasz crontab'a juzera z pod którego jest uruchamiane PHP i ten plik niech należy do tego juzera, wtedy możesz spokojnie go edytować z poziomu PHP. ale po co crontab to wykonywania polecenia z poziomu PHP? nie rozumiem obejścia.

i zamiast zadawac tyle pytan to poczytaj najpierw chociaz troche, bo widac, ze uniksowe systemy sa dla ciebie faktycznie "czarna magia" wiec szkoda zebyc tracil czas na cos, czego nawet nie zrozumiesz.


Nie dostaję nic, żadnego błędu.

Polecenie "scrot --help" działa.

@wrzasq
Linuksa mam dopiero z pół miesiąca... jeszcze dystrybucję dla początkujących - Ubuntu.

Pozdrawiam, WebNuLL

Ten post edytował Babcia@Stefa 26.12.2008, 20:01:40


--------------------
Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian
Go to the top of the page
+Quote Post
Axexis
post
Post #13





Grupa: Zarejestrowani
Postów: 98
Pomógł: 14
Dołączył: 13.01.2008
Skąd: Birmingham

Ostrzeżenie: (0%)
-----


To pacnij spod użytkownika scrot ../Data/ScreenPhotos/test.png wleź na FTPa, sciagnij to cudo na kompa i spróbuj otworzyć. Zobaczysz po co Ci są iksy.

Pozdro


@edit:
Bo wiesz, zainspirowałeś mnie. Ale utwierdziłeś mnie tylko w przekonaniu do powyższej teorii iksów:

Cytat
axexis@gb5246-ovh:~$ scrot test.png
giblib error: Can't open X display. It *is* running, yeah?
axexis@gb5246-ovh:~$


Ten post edytował Axexis 26.12.2008, 20:06:45


--------------------
  1. root@php.pl:~# rm -fr /


be. confused
Go to the top of the page
+Quote Post
wrzasq
post
Post #14





Grupa: Zarejestrowani
Postów: 206
Pomógł: 18
Dołączył: 6.03.2006
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


sprobuj wykonac:
  1. <?php
  2. shell_exec('scrot twojeargumenty 2> bledy.log');
  3. ?>

to zapisze bledy do pliku, moze po prostu nie widzisz bledow, bo masz dostep tylko do strumienia wyjsciowego.

@edit:
to tylko po to, zeby sie dowiedziec, czemu bledow nie widac. nie zmienia to mojego stanowiska, potwierdzonego przez badania Axexis'a, ze tego sie po prostu nie da (tak latwo) zaimplementowac. jest to raczej oczywiste, ze ze strony nie zrobisz zrzutu ekranu, bo niby czego zrzut bys zrobil (biorac pod uwage, iz dziala to po stronie servera)?

Ten post edytował wrzasq 26.12.2008, 20:22:32


--------------------
Go to the top of the page
+Quote Post
pyro
post
Post #15





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


czytalem tylko pare pierwszych postów ale:

możesz zmienić w pliku /etc/passwd powłokę serwera na inną, na taką, która pozwala mu na robienie screenow do pliku, bo jak widac mozesz tworzyc pliki, ktore beda mialy prawa serwera, tylko cos z poleceniem wykonania scr.

A także sprawdź czy masz włączony safe_mode, wtedy mozliwe jest tylko wykonywanie programów z safe_mode_exec_dir

Zobacz czy exec()'iem można robić inne rzeczy.


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
centergo
post
Post #16





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 27.12.2008

Ostrzeżenie: (0%)
-----


Cytat(dr_bonzo @ 24.12.2008, 01:09:20 ) *
A nie jest czasem tak ze mozesz skrina zrobic tylko jak masz dostep do X-ow? A serwer nie ma...

Cytat
dev:~# scrot
giblib error: Can't open X display. It *is* running, yeah?

Tak jest:-)
Go to the top of the page
+Quote Post
Babcia@Stefa
post
Post #17





Grupa: Zarejestrowani
Postów: 654
Pomógł: 17
Dołączył: 19.03.2006
Skąd: z kosmosu ;)

Ostrzeżenie: (0%)
-----


Cytat(Axexis @ 26.12.2008, 20:04:27 ) *
To pacnij spod użytkownika scrot ../Data/ScreenPhotos/test.png wleź na FTPa, sciagnij to cudo na kompa i spróbuj otworzyć. Zobaczysz po co Ci są iksy.

Pozdro
@edit:
Bo wiesz, zainspirowałeś mnie. Ale utwierdziłeś mnie tylko w przekonaniu do powyższej teorii iksów:


Działam tylko na localhoscie narazie (strona na żaden zwykły hosting WWW nie wejdzie =), tylko na serwer dedykowany), tak więc Twojego sposobu nie wypróbuję.


Cytat(wrzasq @ 26.12.2008, 20:18:37 ) *
sprobuj wykonac:
  1. <?php
  2. shell_exec('scrot twojeargumenty 2> bledy.log');
  3. ?>

to zapisze bledy do pliku, moze po prostu nie widzisz bledow, bo masz dostep tylko do strumienia wyjsciowego.

@edit:
to tylko po to, zeby sie dowiedziec, czemu bledow nie widac. nie zmienia to mojego stanowiska, potwierdzonego przez badania Axexis'a, ze tego sie po prostu nie da (tak latwo) zaimplementowac. jest to raczej oczywiste, ze ze strony nie zrobisz zrzutu ekranu, bo niby czego zrzut bys zrobil (biorac pod uwage, iz dziala to po stronie servera)?


Dzięki, spróbuję.
Widać że nie jest łatwo, ale warto spróbować winksmiley.jpg


Cytat(pyro @ 26.12.2008, 20:37:13 ) *
czytalem tylko pare pierwszych postów ale:

możesz zmienić w pliku /etc/passwd powłokę serwera na inną, na taką, która pozwala mu na robienie screenow do pliku, bo jak widac mozesz tworzyc pliki, ktore beda mialy prawa serwera, tylko cos z poleceniem wykonania scr.

A także sprawdź czy masz włączony safe_mode, wtedy mozliwe jest tylko wykonywanie programów z safe_mode_exec_dir

Zobacz czy exec()'iem można robić inne rzeczy.


Safe_mode z tego co pamiętam to wyłączyłem w całym projekcie poprzez .htaccess (chyba to było php_flag safe_mode off - nie pamiętam).
Mógłbyś jaśniej powiedzieć jak zmienić tą powłokę serwera?

Tworzenie zrzutów ekranu z poziomu PHP potrzebne mi jest do projektu aplikacji PHPFileRemote (zdalne sterowanie komputerem/serwerem), którą kiedyś dałem do oceny ale była tylko pod Windowsa, dziś śmiga również pod Linuksem i jest bardzo rozbudowana, pozwala już na bardziej zaawansowaną nawigację po plikach/folderach.

Kiedy skończę aplikację dam ponownie do oceny smile.gif

Pozdrawiam, WebNuLL

Ten post edytował Babcia@Stefa 28.12.2008, 16:57:40


--------------------
Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian
Go to the top of the page
+Quote Post
wrzasq
post
Post #18





Grupa: Zarejestrowani
Postów: 206
Pomógł: 18
Dołączył: 6.03.2006
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


nie chodzi o zadna zmiane powloki, a ty chyba nie czytasz co wszyscy ci pisza. nie zrobisz tego w ten posob. zrobic zrzut ekranu mozesz tylko tej sesji (na dodatek graficznej) w ktorej dziala dany proces! nie wazne czy nawet zmienisz mu powloke logowania w jakis sposob na taka, pod ktora dostepna bedzie serwer X - w najlepszym wypadku (o ile w ogole sie da zrobic cos takiego) dostaniesz zrzut pustego pulpitu! serwer HTTP dziala jako deamon in ma osobna powloke logowania. zeby zrobic to, co ty probujesz zrobic, musialbys sie pobawic w komunikacje miedzyprocesowa, bo zrzut musi zostac wykonany z tej powloki, ktora chcesz obejrzec.


--------------------
Go to the top of the page
+Quote Post
Babcia@Stefa
post
Post #19





Grupa: Zarejestrowani
Postów: 654
Pomógł: 17
Dołączył: 19.03.2006
Skąd: z kosmosu ;)

Ostrzeżenie: (0%)
-----


Cytat(wrzasq @ 28.12.2008, 19:09:32 ) *
nie chodzi o zadna zmiane powloki, a ty chyba nie czytasz co wszyscy ci pisza. nie zrobisz tego w ten posob. zrobic zrzut ekranu mozesz tylko tej sesji (na dodatek graficznej) w ktorej dziala dany proces! nie wazne czy nawet zmienisz mu powloke logowania w jakis sposob na taka, pod ktora dostepna bedzie serwer X - w najlepszym wypadku (o ile w ogole sie da zrobic cos takiego) dostaniesz zrzut pustego pulpitu! serwer HTTP dziala jako deamon in ma osobna powloke logowania. zeby zrobic to, co ty probujesz zrobic, musialbys sie pobawic w komunikacje miedzyprocesowa, bo zrzut musi zostac wykonany z tej powloki, ktora chcesz obejrzec.


Z tego co napisałeś wynika że praktycznie się nie da, piękna trafna odpowiedź wyjaśniająca wszystko.
Jeśli jednak jest jakiś sposób to proszę o pomoc.
Narazie zawieszam to w swoim projekcie ("Dostępne tylko w systemie operacyjnym Microsoft Windows" :/)

Z tego co zrozumiałem to serwer HTTP "nie widzi" tego co ja na ekranie haha.gif

Pozdrawiam, WebNuLL

Ten post edytował Babcia@Stefa 30.12.2008, 09:34:45


--------------------
Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 12:16