Доста боб ще трябва да хвърля, за да разбера точно как са си направили системата

По принцип има няколко начина за автоматизиране на действието. Да речем, че имаме страничка, в която е дадена възможност на потребителя да си въведе данните, за да се регистрира, след което трябва автоматично да му се конфигурират папките и VirtualHost-ът, без намесата на някой служител. Първо, една важна препоръка - за препоръчване е да пуснеш потребителските сайтове в chroot jail, защото иначе всеки, който ще има достъп да изпълнява команди през apache на сървъра ти, ще има достъп да огледа цялата ти система, а така също и да пише там, където му е позволено (поне в сайтовете на всички потребители ще му е позволено без chroot). С достъп да изпълняват команди през apache няма да са само кракерите отвън, а включително и всички твои потребители. А сега вариантите за автоматична регистрация:
Вариант 0: В /etc/sudoers позволяваме на потребителя на apache да може да изпълнява команди със sudo, след като си въведе паролата. Задаваме парола на потребителя, който ползва apache, и в системата за регистрация добавяме изпълнението на bash команда със sudo, като към sudo трябва да се добави -S и да се въведе паролата на потребителя на apache към изпълнението на командата. Пример:
GeSHi (PHP):
exec("echo 'apache_парола' | /usr/bin/sudo -u apache_потребител -S команда");
Трансформирай си го за езика, който ползваш, ако не използваш PHP за изписването на сайта. Проблем откъм сигурността е, че паролата на apache потребителя е вписана във файл, достъпен от Интернет, и ако някой успее да се добере до кода на сайта и достъп да изпълнява команди, ще може да изпълнява команди с root права, след като види паролата. За страницата за регистрации ти трябва отделна инсталация на apache без chroot и с различен потребител от основната инсталация, но проблемът остава, ако някой се вмъкне в системата през страницата за регистрации.
Вариант 1: Същото, като предния вариант, но не се слага парола на потребителя на apache, а в /etc/sudoers се описва, че потребителят на apache може да изпълнява команди през sudo без парола. Тогава няма да имаш нужда от -S към sudo, и няма да има нужда да описваш паролата в командата, но ако някой се добере до достъп да изпълнява команди, ще може да изпълнява команди с root права без дори да търси парола, с която да го прави. Всеки един от твоите потребители ще има възможността да го направи, стига да се сети да използва sudo в някоя команда. За страницата за регистрации ти трябва отделна инсталация на apache без chroot и с различен потребител от основната инсталация, но проблемът остава, ако някой се вмъкне в системата през страницата за регистрации.
Вариант 2: За регистрациите използваш cgi скрипт със suid за root, в който скрипт задаваш изпълнението на нужните команди за добавяне на потребител. Проблемите със сигурността при този вариант са горе-долу същите, както при вариант 0. За страницата за регистрации ти трябва отделна инсталация на apache без chroot и с различен потребител от основната инсталация, но проблемът остава, ако някой се вмъкне в системата през страницата за регистрации.
Вариант 3: Променяш правата на папките и файловете с конфигурацията на apache, а така също променяш правата за изпълнението на apache така, че потребителят на apache да може да действа там, а не само root. Така потребителят на apache ще може да редактира VirtualHost-овете и да reload-ва сървъра, и няма да има нужда да му даваш позволение да изпълнява с root права. По този начин, ако някой получи достъп до системата ти, няма да може да изпълнява команди с root права, но ще може да пипа по работата на apache. За страницата за регистрации ти трябва отделна инсталация на apache без chroot и с различен потребител от основната инсталация, но проблемът остава, ако някой се вмъкне в системата през страницата за регистрации. Не съм си играл с този вариант, така че не мога да те упътя за всичко, което трябва да се направи при него.
Вариант 4: Страницата с регистрации няма да оперира с VirtualHost-овете и няма да reload-ва сървъра, а само ще въвежда потребителските данни в някаква база данни. Работата с VirtualHost-овете и reload-ването на сървъра ги слагаш в скрипт, недостъпен за потребителя на apache, който скрипт слагаш да се върти през удобен за теб период от време от crontab-а на root. При всяко свое изпълнение този скрипт ще чете информацията от базата данни с потребителите, ще създава нужните папки, ще добавя и маха VirtualHost-ове, спрямо нея и ще reload-ва сървъра (за предпочитане е да reload-ва, само ако е имало потребители за добавяне/махане). Не ти трябва отделна инсталация на apache, а недостатъкът е, че потребителят трябва да чака някакво време, докато скриптът се изпълни и акаунтът му се създаде.
Вероятно има и други варианти, за които не се сещам в момента (въпрос на въображение), но и тези са достатъчно, за да дадат избор. Аз ти препоръчвам вариант 4, тъй като е най-сигурен, дори и да се налага потребителят да чака няколко часа, докато му се създаде акаунтът. То такъв голям период едва ли ще е нужен да се задава на crontab-а (трябва да имаш наистина много потребители), вероятно ще са ти достатъчни от 5 до 30 минути. Ти избираш