[+] Uruchamianie skryptu bash przez PHP

Potrzebujesz pomocy z C, C++, perl, python, itp.
Awatar użytkownika
Bastian
Member
Posty: 1424
Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ

Post autor: Bastian »

Dodawać apache do grupy z rozszerzonymi uprawnieniami, i określone skrypty też w tej grupie, i nadać im prawa dostępu 750, albo zrobić dowiązanie z /usr/sbin do np. /usr/bin z odpowiednimi prawami i będzie można określone polecenia wykonywać jako użytkownik. Jednak aby nie mieszać z grupami i uprawnieniami, to ja bym chyba optował za skryptem, który będzie wykonywał przez crona te polecenia np.: co 30 sekund.
buker999
Posty: 89
Rejestracja: 18 października 2011, 21:22
Lokalizacja: Warszawa

Post autor: buker999 »

Nie ma takiego podręcznika systemowego jak su-to-root.

A w podręczniku systemowym su nie ma nic na temat.
fnmirk
Senior Member
Posty: 8324
Rejestracja: 03 grudnia 2007, 06:37

Post autor: fnmirk »

Kod: Zaznacz cały

whereis su-to-root
su-to-root: /usr/bin/su-to-root /usr/sbin/su-to-root /usr/share/man/man1/su-to-root.1.gz
buker999
Posty: 89
Rejestracja: 18 października 2011, 21:22
Lokalizacja: Warszawa

Post autor: buker999 »

Może inaczej podejdę do sprawy. Piszę Panel administracyjny pod Linuksem. Coś podobnego do Webmina. Będę potrzebował wykonywać polecenia, które może wykonywać tylko root. Cron odpada do poleceń takich jak restart apache lun systemu. Lipa by była jak co minutę by się wykonywały.
Awatar użytkownika
Bastian
Member
Posty: 1424
Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ

Post autor: Bastian »

Stworzyć specjalną grupę tylko dla serwera apache i użytkownika root. Nadać uprawnienia konkretnym plikom, na których chcesz pracować, prawa wykonywalności dla grupy. Teraz od Ciebie będzie zależało (od porządności twoich skryptów, ale też zabezpieczenia całego serwera apache) na ile jest to bezpieczne rozwiązanie. Można też posilić się ALC.
buker999
Posty: 89
Rejestracja: 18 października 2011, 21:22
Lokalizacja: Warszawa

Post autor: buker999 »

Dzieki wszystkim za pomoc. Rozwiazaniem jest:

Skrypty sa wywoływane przez program w c++. Program jest wlasnoscia roota i ma znaczniki SGID/SUID. Bez problemu mozna wykonac go z poziomu www
Awatar użytkownika
Bastian
Member
Posty: 1424
Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ

Post autor: Bastian »

Z ciekawości: jak wywołujesz ten program w kodzie php?
buker999
Posty: 89
Rejestracja: 18 października 2011, 21:22
Lokalizacja: Warszawa

Post autor: buker999 »

Kod: Zaznacz cały

<?php
shell_exec('cd /home/buker/programy && ./program');
$output = shell_exec('ls -l /home/buker/');
echo "<pre>$output</pre>";
?>
Przechodzę do lokalizacji z programem i go go uruchamiam. Nie wiem czemu nie działało uruchomienie bezpośrednie po podaniu lokalizacji. Teraz muszę się dowiedzieć, jak przekazać parametry z php do programu c++. (ls tylko ma sprawdzać, czy skrypt się wykonał) żebym tego ręcznie nie robił.
Awatar użytkownika
Bastian
Member
Posty: 1424
Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ

Post autor: Bastian »

A pokaz:

Kod: Zaznacz cały

ls -la ./program
buker999
Posty: 89
Rejestracja: 18 października 2011, 21:22
Lokalizacja: Warszawa

Post autor: buker999 »

To co tutaj pokazuję to były testy uruchamiania programu przez www. Będę potrzebował na przykład napisać program, który wykonuje polecenie:

Kod: Zaznacz cały

adduser
A więc, php przekazuje do programu c++ nazwę użytkownika, a potem on przekazuje do php pytanie o hasło. Można to zrobić przez parametry (nazwę użytkownika). Ale nie do końca wiem jak?

Kod: Zaznacz cały

-rwsrwsrwt 1 root root 4979 Oct 25 17:25 ./program
Prawa do pliku jeszcze będę zmieniał, pewnie na bardziej restrykcyjne np.: 7755.
ODPOWIEDZ