ProFTPd,MySQL,虚拟用户和权限

我想通过MySQL数据库来控制我的ProFTPdauthentication。 用户将能够在PHP Web应用程序中更改其FTP帐户的用户名和密码。 这引起了以下问题:在数据库usertable中设置的用户不匹配系统用户。 所以我无法更改我的文件系统中的目录权限,ProFTPdlogging错误:

用户名chdir(“/ var / www / vhosts / sites / username”):权限被拒绝

但是,我怎么能让这些FTP用户访问这些文件夹? 如果我build立了一个名为www-data的用户,它可以正常工作,但用户名不会在/etc/passwd定义。

我想pipe理的第二件事是限制这个唯一的目录,在这个例子中是/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用户对文件和目录具有合适的只读权限,例如将world rx赋予目录和r– to文件。

如果你设置

 DefaultRoot ~ 

那么用户将被限制在他们自己的目录树中。