ProFTPd、MySQL、虚拟用户和权限

ProFTPd、MySQL、虚拟用户和权限

我想通过 MySQL 数据库控制我的 ProFTPd 身份验证。用户将能够在 PHP Web 应用程序中更改其 FTP 帐户的用户名和密码。这引发了以下问题:数据库用户表中设置的用户与系统用户不匹配。因此我无法更改文件系统中的目录权限,并且 ProFTPd 记录了错误:

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

但是我如何才能让这些 FTP 用户访问这些文件夹?如果我设置一个名为 的用户,www-data它可以正常工作,但用户名不会在 中定义/etc/passwd

我要管理的第二件事是限制这个唯一的目录,在本例中/var/www/vhosts/sites/username。如果用户不在上面的主目录中,则它们不能访问其他目录。

我该如何解决?

答案1

您必须授予 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-- 文件权限。

如果您设置

DefaultRoot  ~

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

相关内容