权限阻止 vsftpd 中的文件上传

权限阻止 vsftpd 中的文件上传

我想设置 vsftpd 来允许用户(foouser)上传并创建目录到 /var/www/,目的是允许上传整个网站。

当前权限:

  1. Apache 运行于www-数据
  2. 文档根目录是:/var/www/
  3. /var/www 的权限为 www-data:www-data(递归)。

已采取的措施:

创建用户:foouser

 useradd foouser

将 foo 用户添加到 www-data 组。

 usermod -a -G www-data foouser

将 /var/www/ 设置为 foouser 的主目录:

 usermod -d /var/www/

这是我的 vsftpd.conf 文件:

 root@c9e0266eb8c8:/var# cat /etc/vsftpd.conf | grep -v ^#
 listen=YES
 local_enable=YES
 write_enable=YES
 local_umask=022
 dirmessage_enable=YES
 use_localtime=YES
 xferlog_enable=YES
 connect_from_port_20=YES
 chown_uploads=YES
 chown_username=www-data
 xferlog_file=/var/log/vsftpd.log
 xferlog_std_format=YES

但是,我仍然无法上传文件:

 Command:   USER foouser
 Response:  331 Please specify the password.
 Command:   PASS ******
 Response:  230 Login successful.
 Status:    Server does not support non-ASCII characters.
 Status:    Connected
 Status:    Starting upload of /home/michael/settings.json
 Command:   CWD /var/www
 Response:  250 Directory successfully changed.
 Command:   TYPE I
 Response:  200 Switching to Binary mode.
 Command:   PASV
 Response:  227 Entering Passive Mode (172,17,0,2,174,22).
 Command:   STOR settings.json
 Response:  553 Could not create file.
 Error: Critical file transfer error

现在...如果我将目录权限从 www-data 更改为 foouser:foouser,我就可以正常上传,但这(当然)会破坏 apache。

我究竟做错了什么?

编辑:允许匿名文件上传到 /var/www/ 也是可以的。这是一个 docker 容器,因此这种不安全的做法是可以的,因为它将用于开发而不是生产。

答案1

我认为您需要将被动模式配置添加到“/etc/vsftpd.conf”文件中,因为您的连接正在进入被动模式。以下是配置。

# Additional configuration
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=xx.xx.xx.xx #Public IP of your server
local_root=/var/www

您可以根据需要进行设置。但请确保允许它们进入您的防火墙pasv_min_portpasv_max_port

相关内容