Uruchamianie z WWW programu suidowego nie jest najlepszym pomysłem, ale są lepsze rozwiązania. I znów kłania się tu technologia bottom halves. Załóż sobie w jakimś SQLu najprostszą bazę z jedną tabelą z polami id, login, hasło, opis, status (plus ew. inne jeśli Ci są potrzebne). W skrypcie na WWW wsadzaj do bazy dane usera do założenia. Drugi skrypt uruchamiaj z rootowego crona np. co godzinę, wyciagaj w nim dane z bazy, sprawdzaj czy są poprawne i zakładaj userów (szkielet rozwiązania dla MySQLa):
[php:1:49dd6832ef]<?php
$res = mysql_query("select id, login, haslo, opis from uzytkownicy where status=0");
while ($row = mysql_fetch_array($res))
{
# tutaj sprawdzanie poprawnosci danych
$login = escapeshellarg($row['login']);
$haslo = escapeshellarg($row['haslo']);
$opis = escapeshellarg($row['opis']);
system("/usr/sbin/useradd -p $haslo -m -c $opis $login", $ret);
$status = ($ret == 0) ? 1 : 2;
mysql_query("update uzytkownicy set status='$status' where id='" . $row['id'] . "'");
}
?>[/php:1:49dd6832ef]
Jak to jest debian to jest tam takie narzędzie jak
useradd (jak w większości linuksów). Działa ono wsadowo (jak to już zauważył
Volt3r) i nie wymaga interakcji użytkownika. Poczytaj manual od niego to dowiesz się więcej.
Pole
status jest po to byś później mógł sprawdzić którzy uzytkownicy zostali założeni poprawnie, a którzy nie.
W miejscu sprawdzania danych możesz sprawdzać np. czy opis nie jest za długi, albo czy nazwa użytkownika nie zawiera nieprawidłowych znaków, ale powinien to za Ciebie już zrobić
useradd.
Możliwości jest mnóstwo.