Назад | Перейти на главную страницу

ProFTPd, MySQL, виртуальные пользователи и разрешения

Я хочу управлять своей аутентификацией 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  ~

директиве, пользователи будут ограничены своим собственным деревом каталогов.