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.:
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?...

)
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