Можно редактировать самостоятельно /etc/shadow, или где там у Вас пароли хранятся, но это довольно хлопотно. В логи надо ещё писать, блокировки делать (от других экземпляров этой программы и от всяких passwd) и т.д.
IMHO лучше использовать штатную программу (usermod - по крайней мере в GNU/Linux). Так что man crypt; man fork; man execve (и другие exec'и); man usermod.
В любом случае программа должна выполняться с эфективным uid = 0. Соответственно если необходимо запустить её обычным пользователем, необходимо проделать (под root'ом) что-то вроде chown root myprog; chmod 4711 myprog - это в случае с Си. В случае с Perl всё несколько сложнее. Понадобится (видимо) перекомпилять Perl так, чтобы он воспринимал set uid бит у скриптов.
|