Здравствуйте!
Задача: автоматически давать пользователям квотированный (ограниченый объем хранения данных) ftp доступ к неким личным файлам.
Как это выглядит для пользователя:
1) пользователь регистрируется на сайтике;
2) заказывает на нем себе товар (игровой сервер);
3) получает квотированный ftp доступ к конфигурации своего сервера;
4) настраивает конфиги сервера (либо удаляет или загружает новые файлы);
5) запускает сервер и радуется.
Используемые на данный момент инструменты:
1) Debian (proftpd + quota + quotatool)
2) Apache
3) PHP
Решение:
Начал с того, чтобы осуществить процедуру создания нового ftp-пользователя хотя бы руками из консоли от рута и вот что из этого вышло:
useradd -b /home/ -m server
passwd server
#далее копируем дефолтную сборку игрового сервера в /home/ созданного юзера
#квотируем место под файлы сервера
quotatool -u server -bl '500 Mb' /home
После этого пользователь имеет доступ по ftp к файлам своего игрового сервера.
Проблема:
Если всё это дело делать через exec() в PHP, то естесно нихрена не работает, т.к. у www-data, от имени которого работает Apache, нет прав ни на useradd, ни на cp в домашнюю директорию созданного юзера. Давать такие права www-data чо-то как-то стрёмновато, но proftpd и quota без лишнего гемороя работают с учеткой юзера и это очень удобно, поэтому от этих инструментов отказываться не хочется.
Вопросы: как решить поставленную задачу, если идти по пути, изложенном выше в решении? Или же какой возможен альтернативный вариант решения задачи (подходы к решению)?