Я хочу управлять своей аутентификацией ProFTPd с помощью базы данных MySQL. Пользователи смогут изменить имя пользователя и пароль своих учетных записей FTP в веб-приложении PHP. Это вызывает следующую проблему: пользователи, указанные в таблице пользователей базы данных, не соответствуют пользователям системы. Поэтому я не могу изменить права доступа к каталогам в моей файловой системе, и ProFTPd регистрирует ошибку:
имя пользователя chdir ("/ var / www / vhosts / sites / username"): в доступе отказано
Но как я могу предоставить этим FTP-пользователям доступ к этим папкам? Если я настрою пользователя с именем www-data
он работает нормально, но имена пользователей не будут определены в /etc/passwd
.
Второе, чем я хочу управлять, - это ограничение только этого каталога, в данном случае /var/www/vhosts/sites/username
. У пользователя не должно быть доступа к другим каталогам, если они не находятся в указанном выше домашнем каталоге.
Как это исправить?
Вам нужно будет предоставить вашим виртуальным пользователям proftpd право собственности на их файлы и каталоги, как если бы вы были настоящим пользователем. Вы можете сделать это с помощью Chown. Поскольку пользователи не являются пользователями системы, вам придется использовать числовой UID: GID, например. если имя пользователя - UID 10001 и GID 1111 (из базы данных mysql), то
chown 10001:1111 /var/www/vhosts/sites/username
chown -R 10001:1111 /var/www/vhosts/sites/username
должны дать пользователю возможность управлять своими файлами. Убедитесь, что пользователь www-data имеет подходящий доступ только для чтения к файлу и каталогам, например. укажите мир r-x для каталогов и r-- для файлов.
Если вы установите
DefaultRoot ~
директиве, пользователи будут ограничены своим собственным деревом каталогов.