php - wykonanie programu z prawami roota

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
sajmon
Piegowaty Guziec
Piegowaty Guziec
Posty: 21
Rejestracja: 11 lip 2007, 17:05
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

php - wykonanie programu z prawami roota

Post autor: sajmon »

chce zrobić takie coś:

Kod: Zaznacz cały

<?php
system('sudo fuser -n tcp 80',$list);
?>
ale oczywiście nie działa bo oczekuje na hasło. jak mam podać hasło na stałe (w kodzie php) żeby to się poprawnie wykonało?

(tzn. $list ma zawierać wynik komendy "sudo fuser -n tcp 80")
Procek
Sędziwy Jeż
Sędziwy Jeż
Posty: 31
Rejestracja: 25 lut 2007, 23:30
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: Brak

Odp: php - wykonanie programu z prawami roota

Post autor: Procek »

Uruchom cały skrypt php z uprawnieniami roota, powinno zadziałać.
Awatar użytkownika
sajmon
Piegowaty Guziec
Piegowaty Guziec
Posty: 21
Rejestracja: 11 lip 2007, 17:05
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: php - wykonanie programu z prawami roota

Post autor: sajmon »

ale jak mam to zrobić jako root? ten kawałek ma być częścia normalnej strony, po kliknięciu w jeden z linków ma pokazywać procesy używające portu 80.
Potem robię

Kod: Zaznacz cały

$pid=explode(" ",$list);
for($i=0;$i<count($pid);$i+=1){
 system("ps -A| grep ".$pid[$i],$wyn);
 echo($wyn."
");
}
Awatar użytkownika
el.pescado
Zakręcona Traszka
Zakręcona Traszka
Posty: 734
Rejestracja: 26 maja 2005, 11:43
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: php - wykonanie programu z prawami roota

Post autor: el.pescado »

Napisz skrypt pomocniczy, robiący właściwą brudną robotę, np.:

Kod: Zaznacz cały

#!/bin/sh
fuser -n tcp 80
Następnie albo:
1. Zmień właściciela na roota, nadaj atrybut wykonywalności, a następnie nadaj bit SUID - wtedy skrypt będzie się wykonywał z uprawnieniami właściciela, czyli w tym wypadku roota. Nie trzeba tutaj używać sudo.
2. Dodaj odpowiednią regułkę do pliku /etc/sudoers, tak żeby sudo nie pytało o hasło w przypadku uruchamiania tego konkretnego skryptu pomocniczego.

Zapisywanie hasła roota w skrypcie to, delikatnie mówiąc, nienajlepszy pomysł.
Awatar użytkownika
argasek
Piegowaty Guziec
Piegowaty Guziec
Posty: 3
Rejestracja: 11 lis 2008, 15:13
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME
Kontakt:

Odp: php - wykonanie programu z prawami roota

Post autor: argasek »

Możesz też skorzystać z suphp (aczkolwiek odpalanie skryptu php z uprawnieniami roota jest pokrętne i mało sekjurne). Metoda el.pescado wydaje się być najlepsza.

Aha, i uprawnij się że masz wyłączone / odpowiednio skonfigurowane safe_mode (kiedy ten relikt przeszłości zniknie?... :wall:)
michas262
Piegowaty Guziec
Piegowaty Guziec
Posty: 2
Rejestracja: 15 lis 2008, 19:33
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME

Odp: php - wykonanie programu z prawami roota

Post autor: michas262 »

Odkopuje temat.

Mam podobny problem, ustawiłem wszystko ładnie w pliku sudoers dla użytkownika apache żeby nie pytało o hasło, i mam sobie skrypcik w bashu który zmienia prawa danych plików. Problem jest taki, że jak pod konsolą odpalę ten skrypt to wszystko działa ale jak już próbuje przez skrypt php i przez przeglądarkę to nie da rady.

Pod konsolę mogę się jedynie zalogować na roota więc pod konsolą dla testów wywołuje program takim poleceniem sudo -u apache sudo /./prawa.sh i wtedy pięknie działa ale przez przeglądarki nie daje rady.

Próbowałem już nadania wszelkich praw wykonywania bez pytania o hasło dla użytkownika apache a także grupy apache, myślałem też, że skrypt php za wczesnie zamyka program w bashu więc próbowałem też używać nohup a także "&" ale to i tak nic nie dało. Z php używałem chyba wszystkich funkcji system() shell_exec() passthru() i też nic nie dało.

Już nie mam pomysłu na nic nowego, może ktoś wie jak rozwiązać ten problem.

Pozdrawiam
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Google [Bot] i 7 gości