skrypt php adduser + reser ftp
-
- Sędziwy Jeż
- Posty: 43
- Rejestracja: 31 gru 2011, 13:41
- Płeć: Mężczyzna
- Wersja Ubuntu: 16.04
- Środowisko graficzne: Unity
- Kontakt:
skrypt php adduser + reser ftp
Hej, w trakcie pisania skryptu php napotkałem problem mianowicie jak za pomocą php moge w limuxie dodać użytkownika z konkretnym loginem i katalogiem domowym?
Czy należy np napisać jakis plik wykonywalny w którym bedą komendy dodawania usera i w skrypcie php dać polecenie uruchomienia go? czy jak? i kolejne pytanie, jak zrestartować proftpd z poziomu skryptu php?
Czy należy np napisać jakis plik wykonywalny w którym bedą komendy dodawania usera i w skrypcie php dać polecenie uruchomienia go? czy jak? i kolejne pytanie, jak zrestartować proftpd z poziomu skryptu php?
- ethanak
- Wygnańcy
- Posty: 3054
- Rejestracja: 04 gru 2007, 13:19
- Płeć: Mężczyzna
- Wersja Ubuntu: 12.04
- Środowisko graficzne: GNOME
- Architektura: x86
- Lokalizacja: Bielsko-Biała
- Kontakt:
Re: skrypt php adduser + reser ftp
Jeśli to ma być wykonane z poziomu serwera HTTP to zapomnij o takiej możliwości.
-
- Sędziwy Jeż
- Posty: 43
- Rejestracja: 31 gru 2011, 13:41
- Płeć: Mężczyzna
- Wersja Ubuntu: 16.04
- Środowisko graficzne: Unity
- Kontakt:
Re: skrypt php adduser + reser ftp
Dlaczego? w windowsie była możliwość uruchamiania np plikow bat z poziomu php.
- soulreaver1
- Wytworny Kaczor
- Posty: 409
- Rejestracja: 13 mar 2009, 10:03
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Inne
- Architektura: x86_64
- Lokalizacja: 127.0.0.1
Re: skrypt php adduser + reser ftp
Możesz przekazać dowolne polecenie z php do konsoli Linuxa za pomocą funkcji php "exec" lub "system".
useradd.sh:
Kod: Zaznacz cały
$sysquery = system("sh ~/scripts/useradd.sh $user $pass", $result);
#!/bin/bash
useradd $1
passwd $1 $2
Ostatnio zmieniony 03 kwie 2012, 13:14 przez soulreaver1, łącznie zmieniany 2 razy.
-
- Sędziwy Jeż
- Posty: 43
- Rejestracja: 31 gru 2011, 13:41
- Płeć: Mężczyzna
- Wersja Ubuntu: 16.04
- Środowisko graficzne: Unity
- Kontakt:
Re: skrypt php adduser + reser ftp
No i własnie takiej odpowiedzi oczekiwałem 
Jakiś przykład działania?
Czy to będzie poprawne? a co z prawami admina? Pewnie bedzie wymagane podanie hasła administratora, jak to uzupełnic?

Jakiś przykład działania?
Kod: Zaznacz cały
<?php
echo exec("adduser NAZWA_USERA");
echo exec ("/opt/lampp/lampp stopftp");
echo exec ("/opt/lampp/lampp startftp");
- ethanak
- Wygnańcy
- Posty: 3054
- Rejestracja: 04 gru 2007, 13:19
- Płeć: Mężczyzna
- Wersja Ubuntu: 12.04
- Środowisko graficzne: GNOME
- Architektura: x86
- Lokalizacja: Bielsko-Biała
- Kontakt:
Re: skrypt php adduser + reser ftp
No i właśnie w tym problem że nie odpalisz bezpośrednio programu z prawami roota z poziomu serwera. Po prostu serwer uruchamiając zewnętrzne polecenie ignoruje bit SUID.
Jest możliwe obejście tego (sam to stosowałem), ale nie w php. Stąd moja odpowiedź że się nie da.
BTW. nie useradd ani adduser tylko newusers, soulreaver1 nie wpuszczaj ludzi w kanał próbując wyważać otwarte drzwi.
Tu masz przykładowy kod w C:
Kompilujesz to, zmieniasz właściciela na root.root, dajesz chmoda 6755 i wywołujesz pośrednio przez skrypt w bashu.
Jest możliwe obejście tego (sam to stosowałem), ale nie w php. Stąd moja odpowiedź że się nie da.
BTW. nie useradd ani adduser tylko newusers, soulreaver1 nie wpuszczaj ludzi w kanał próbując wyważać otwarte drzwi.
Tu masz przykładowy kod w C:
Kod: Zaznacz cały
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
main()
{
seteuid(0);
setegid(0);
setuid(0);
setgid(0);
system("/tu/polecenie/coś/robiące/z/prawami/roota");
}
- soulreaver1
- Wytworny Kaczor
- Posty: 409
- Rejestracja: 13 mar 2009, 10:03
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Inne
- Architektura: x86_64
- Lokalizacja: 127.0.0.1
Re: skrypt php adduser + reser ftp
Bardzo przepraszam że próbowałem pomócethanak pisze: BTW. nie useradd ani adduser tylko newusers, soulreaver1 nie wpuszczaj ludzi w kanał próbując wyważać otwarte drzwi.

- ethanak
- Wygnańcy
- Posty: 3054
- Rejestracja: 04 gru 2007, 13:19
- Płeć: Mężczyzna
- Wersja Ubuntu: 12.04
- Środowisko graficzne: GNOME
- Architektura: x86
- Lokalizacja: Bielsko-Biała
- Kontakt:
Re: skrypt php adduser + reser ftp
Nic takiego nie sugeruję - po prostu zaznaczyłem że skoro istnieje polecenie robiące dokładnie to co jest potrzebne nie ma potrzeby tworzyć protez.
Zresztą Twój sposób i tak nie będzie działać (uprawnienia)...
Zresztą Twój sposób i tak nie będzie działać (uprawnienia)...
-
- Sędziwy Jeż
- Posty: 43
- Rejestracja: 31 gru 2011, 13:41
- Płeć: Mężczyzna
- Wersja Ubuntu: 16.04
- Środowisko graficzne: Unity
- Kontakt:
Re: skrypt php adduser + reser ftp
Chłopaki zamiast sie kłócić lepiej powiedzieli byście mi krok po kroku jak sie do tego zabrac ;>
Moze zapytam jeszcze tak: Czy do utworzenia usera wymagane bedzie hasło admina i di restartu proftpd?
Moze zapytam jeszcze tak: Czy do utworzenia usera wymagane bedzie hasło admina i di restartu proftpd?
- ethanak
- Wygnańcy
- Posty: 3054
- Rejestracja: 04 gru 2007, 13:19
- Płeć: Mężczyzna
- Wersja Ubuntu: 12.04
- Środowisko graficzne: GNOME
- Architektura: x86
- Lokalizacja: Bielsko-Biała
- Kontakt:
Re: skrypt php adduser + reser ftp
Przecież Ci napisałem wyraźnie. Jeśli nie zrozumiałeś to znaczy, że zadanie Cię przerasta.
- jacekalex
- Gibki Gibbon
- Posty: 4707
- Rejestracja: 17 cze 2007, 02:54
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: MATE
- Architektura: x86_64
Re: skrypt php adduser + reser ftp
A ja tylko dodam, że wrzucanie skryptów z setuid 0 na serwer www jest delikatnie piszac niemądre (mam na myśli bezpieczeństwo), raczej radziłbym komunkację z zewnętrznym demonem przez soket, albo najprostsza opcja odpowiedni wpis wysłany do pliku logu i z drugiej strony Swatch, który zczytuje log i wykonuje odpowiednie akcje.
W dodatku, obecnie w Ubuntu Apache ma wbudowaną funkcję chroot, i jest chroniony Apparmorem, a jak appparmor i chroot pozwolą wykonać skrypt z setuid 0 z poziomu apacha, to mnie na ręku kaktus wyrośnie.
Poza tym pewno lamerstwo totalne wyłazi z samego problemu:
Czemu nie zastosujesz pam-mysql albo pam-postgresql, sktrypt php insertuje usera do bazy, serwer ftp korzysta z uwierzytelnienia pam (też wykorzystuje pam-*sql), przy próbie zalogowania automatycznie tworzy folder domowy pacjenta ( w Proftpd to jest wykonalne, w Pure-ftpd też), i gotowe.
To by było na tyle

W dodatku, obecnie w Ubuntu Apache ma wbudowaną funkcję chroot, i jest chroniony Apparmorem, a jak appparmor i chroot pozwolą wykonać skrypt z setuid 0 z poziomu apacha, to mnie na ręku kaktus wyrośnie.

Poza tym pewno lamerstwo totalne wyłazi z samego problemu:
Czemu nie zastosujesz pam-mysql albo pam-postgresql, sktrypt php insertuje usera do bazy, serwer ftp korzysta z uwierzytelnienia pam (też wykorzystuje pam-*sql), przy próbie zalogowania automatycznie tworzy folder domowy pacjenta ( w Proftpd to jest wykonalne, w Pure-ftpd też), i gotowe.
To by było na tyle

Problemy rozwiązujemy na forum nie na PW -> Niech inni na tym skorzystają.
Komputer jest jak klimatyzacja - gdy otworzysz okna, robi się bezużyteczny...
Linux User #499936
Inny OS: Gentoo Linux
Komputer jest jak klimatyzacja - gdy otworzysz okna, robi się bezużyteczny...
Linux User #499936
Inny OS: Gentoo Linux

- ethanak
- Wygnańcy
- Posty: 3054
- Rejestracja: 04 gru 2007, 13:19
- Płeć: Mężczyzna
- Wersja Ubuntu: 12.04
- Środowisko graficzne: GNOME
- Architektura: x86
- Lokalizacja: Bielsko-Biała
- Kontakt:
Re: skrypt php adduser + reser ftp
Pytanie: co ma chroot wspólnego z suidem? Bo może czegoś nie wiem...jacekalex pisze: a jak appparmor i chroot pozwolą wykonać skrypt z setuid 0 z poziomu apacha, to mnie na ręku kaktus wyrośnie.![]()
Pytanie drugie: jak często sukulenta podlewasz? Podobno za często nie można... A ładnie kwitnie?

(uprzedzając: właśnie udało mi się z poziomu apacza wykonać jako root 'touch cośtam.txt')
To inna sprawa - ale może ktoś chce to zrobić właśnie w taki lamerski sposób?Poza tym pewno lamerstwo totalne wyłazi z samego problemu:
- jacekalex
- Gibki Gibbon
- Posty: 4707
- Rejestracja: 17 cze 2007, 02:54
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: MATE
- Architektura: x86_64
Re: skrypt php adduser + reser ftp
Właśnie jako root stworzyleś plik txt? gratulacje, widocznie nie masz włączonego apparmora dla Apacha, co wymaga zaistalowania libapache2-mod-apparmor (o ile pamiętam).
I jeśli ktoś zamierza wystawić Apacha na świat, to lepiej go włączyć.
Z resztą tu masz znacznie lepsze wyjaśnienie problemu shell_exec i takich skryptów:
http://forums.gentoo.org/viewtopic-p-6801366.html
Pozdrawiam

I jeśli ktoś zamierza wystawić Apacha na świat, to lepiej go włączyć.
Z resztą tu masz znacznie lepsze wyjaśnienie problemu shell_exec i takich skryptów:
http://forums.gentoo.org/viewtopic-p-6801366.html
Pozdrawiam

Problemy rozwiązujemy na forum nie na PW -> Niech inni na tym skorzystają.
Komputer jest jak klimatyzacja - gdy otworzysz okna, robi się bezużyteczny...
Linux User #499936
Inny OS: Gentoo Linux
Komputer jest jak klimatyzacja - gdy otworzysz okna, robi się bezużyteczny...
Linux User #499936
Inny OS: Gentoo Linux

- ethanak
- Wygnańcy
- Posty: 3054
- Rejestracja: 04 gru 2007, 13:19
- Płeć: Mężczyzna
- Wersja Ubuntu: 12.04
- Środowisko graficzne: GNOME
- Architektura: x86
- Lokalizacja: Bielsko-Biała
- Kontakt:
Re: skrypt php adduser + reser ftp
Mam - specjalnie na Twoją cześć włączyłem (konkretnie aby sprawdzić czy mi się to uda). Co do problemów z shell_exec i takich tam to walczyłem z tym ładnych parę lat temu, stąd conieco tricków w pamięci zostałojacekalex pisze:Właśnie jako root stworzyleś plik txt? gratulacje, widocznie nie masz włączonego apparmora dla Apacha, co wymaga zaistalowania libapache2-mod-apparmor (o ile pamiętam).

Zresztą - może coś zrobiłem źle, jeśli chcesz to sprawdź sam i mnie popraw (sposób podany parę postów wyżej).
- ekitowski
- Sędziwy Jeż
- Posty: 51
- Rejestracja: 25 sie 2008, 15:03
- Płeć: Mężczyzna
- Wersja Ubuntu: 8.10
- Środowisko graficzne: GNOME
- Kontakt:
Re: skrypt php adduser + reser ftp
Jak by się uparł to można skorzystać z http://www.libssh2.org/, http://pecl.php.net/package/ssh2 i odpalamy sobie shella w php-ie i działamy - tylko czy w tym przypadku to jest sensowne rozwiązanie? Oczywiście to pytanie należy to tych z gatunku retorycznych...
Pozdrawiam
Pozdrawiam
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 18 gości