我想通过 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 ~
指令那么用户将被限制在他们自己的目录树内。