Еще по этой же теме вопрос... Как заставить passwd что бы он не выводил запрос на пароль, а как нибудь passwd $PASSWORD.. Надеюсь я понятно суть вопроса изложил :)
формируешь две строки для файлов /etc/passwd и /etc/shadow типа
left:x:1000:100::/home/left:/bin/bash
left:$1$11175$GS1G0D4qKhJHejE4o8PYb.:11175:0:99999:7:::
где во второй строке зашифрован пароль функцией crypt($password, chr(int(rand(26))+65).chr(int(rand(26))+65)) (-это на perle так, но можно и на c выбор за тобою)
и все вот тебе и пользователь :) остается только реализовать проверки есть ли такой пользователь или нет можно ему менять пароль или нет и т.д. т.е. самое веселое :) плюс к тому же можно не использовать suid для cgi-скрипта, а собрать своего демона висящего на каком либо порту с соответствующими правамм и давать ему задание заводить юзеров :)
p.s. кстати посмотри скрипты самого webmin-a там много интересного и данный случай тоже уже реализован только смотри и делай :)