O temat pod moją pracę inżynierską (biorę się za to w wakacje). Z tego co wiem to będą problemy z uprawnieniami.
Serwer (apache) pracuje z uprawnieniami www-data. A na dodanie użytkownika potrzeba uprawnień admina (roota).
Musiałbyś utworzyć skrypty basha (lub programy w C, C++, ...), które na czas trwania skryptu (dodającego użytkownika) ustawiałby uprawnienia roota (na serwer apache), wtedy exec zadziała.
Albo bezpieczniej:
1. Utworzyć skrypt dodający użytkownika (z
'sudo adduser $1' w środku - nick jako argument sczytać)
2. Dodać skrypt do sudoers (aby nie wymagał hasła).
3. W php skrypt z: exec ("skrypt.sh $login $pass1 $pass2") - ewentualnie dodatkowo z innymi parametrami i lekko zmodyfikować kod, aby sprawdzać czy system może dodać użytkownika (czy istniał wcześniej).
Drugi parametr exec zawiera wyjście jakie zwraca skrypt (tablicę), a trzeci kod wyjścia programu.
Spróbuj Google:
To tyle co ogólnie wiem (przed obroną pracy powinienem to wiedzieć już na 100%). Może jest prostszy sposób.
Daj cynk co i jak, jak sobie z tym poradzisz.
Może pomoże:
http://algorytmy.pl/doc/php/function.exec.php (poczytaj niżej posty z przykładami). Chyba (na 99.9%) to są nawet te same posty co z php references [
http://php.net/manual/en/function.exec.php].
Ciekawy jest post "p dot koeman at wittenborg-university dot com" z 29-Aug-2005 03:22 (gdzieś środek strony).
Inny przykład:
http://www.cyberciti.biz/tips/change-li ... cript.html
A co do hasła to pokombinuję. Próbowałeś strumieniami?
Edycja:
Ok lekko pokombinowałem:
myadd:
Kod: Zaznacz cały
#!/bin/bash
if [ $# -ne 3 ]; then print "Zła liczba argumentów!"; exit 1; fi
//$2, $3 - zawierają hasło podane z pliku php (exec)
echo "$2\n$3" | sudo adduser $1
Chowasz plik do np.
/usr/bin (uprawnienia i grupę tylko dla roota dajesz) (np. 700), dodajesz plik do sudoers, tak aby apache (www-data) mógł odpalić.
Wpis w sudoers:
Plik edytujesz za pomocą polecenia:
A w pliku php:
Kod: Zaznacz cały
...
$pass1="pass1234";
$pass2="pass1234";
$login="login1111";
$cmd="sudo /home/silver/myadd $login $pass1 $pass2";
// echo "'$cmd'";// debugowanie :)
exec("$cmd", $out);
...
Mam nadzieję, że ogólną ideę dałem.
P.S. Polecenie adduser pozwala na zapisanie więcej danych (imię, telefon, itp.), które możesz też dodać (wystarczy dodać więcej zmiennych[wczytanych z parametrów] do myadd.sh i przy exec dodać kolejne argumenty).
mariaczi, MySQL oczywiście tez można połączyć, ale tu chodzi raczej o sam problem dodania użytkownika do systemu.
Tworzenie użytkowników w systemie za pomocą polecenia
adduser login jaki podał przy ,,rejestracji'' w formularzu do PHP, a PHP ma dodać użytkownika do systemu i automatycznie dostał dostęp do danych za pośrednictwem ftp.