Strona 1 z 1

php - wykonanie programu z prawami roota

: 09 lis 2008, 23:30
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")

Odp: php - wykonanie programu z prawami roota

: 10 lis 2008, 02:31
autor: Procek
Uruchom cały skrypt php z uprawnieniami roota, powinno zadziałać.

Odp: php - wykonanie programu z prawami roota

: 10 lis 2008, 13:09
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."
");
}

Odp: php - wykonanie programu z prawami roota

: 10 lis 2008, 17:49
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ł.

Odp: php - wykonanie programu z prawami roota

: 11 lis 2008, 18:02
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:)

Odp: php - wykonanie programu z prawami roota

: 03 lip 2009, 11:37
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