vsftpd-ftpuser 无法将文件上传到服务器

vsftpd-ftpuser 无法将文件上传到服务器

我正在 Netbeans 中开发一个网站,我配置了 FTP 来将文件上传到我的服务器。在服务器(Ubuntu 14.04 LTS)上,我专门为此任务创建了一个名为“ftpuser”的用户。我安装了 vsFTPd 来处理文件上传。它的配置如下:

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
file_open_mode=0644
local_umask=022
dirmessage_enable
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
allow_writeable_chroot=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

ftpuser的起始目录是/var/www:

ftpuser:x:1005:1007:ftp user,,,:/var/www:/bin/bash

每次我尝试上传文件时,Netbeans 都会显示“错误,未发送文件:file.php”,并且使用 wireshark 的数据包检查会返回以下错误:

226 - Transfer done (but failed to open directory)
553 - Could not create file. 

即使仅使用 PUT 操作执行 ftp 也会出现错误 553。FTP 用户可以轻松登录并更改目录。

该目录及其所有子目录和文件的权限设置为 755 (777 - local_umask)。

我是不是漏掉了什么?它以前运行得很好,我不记得在 Netbeans 或 vsFTPd 中更改过任何东西。

更新

目录(以及子目录/文件)的所有者设置为:

drwxr-xr-x  6 marijn marijn 4096 Sep  1 14:21 noc

即使将其 chown 为 ftpuser:ftpuser 也没有任何作用。

答案1

幸运的是,我的开发服务器上有一个可用的配置。有时我需要将一些更改直接上传到实时服务器,并且我以某种方式配置了不同的 vsftpd.conf。此外,Netbeans 中的 FTP 配置也不同。

这是我的 vsftpd.conf 现在的样子:(注意没有 chroot)

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

Netbeans 中的起始目录设置为:

/var/www/noc

答案2

这是很容易忽视的事情,但请检查 vsftpd 配置的端口是否在防火墙上打开。

我遇到过类似的问题,我与 ftp 服务器的连接可以顺利进行,但我无法获取文件夹的目录列表。我花了 6 个小时漫无目的地寻找解决方案,但这解决了我的问题。

检查您的配置文件中指定的端口:

vi /etc/vsftpd.conf

您正在寻找以下两行:

pasv_max_port=12100
pasv_min_port=12000

在这种情况下,我将打开端口 12000-12100 进行被动模式传输:

ufw allow  12000:12100 /tcp

高血压

答案3

根据您的详细信息,我认为您的用户没有权限写入您尝试上传到的目录。
所有者/组是 marijn。但只有用户可以写入目录,组和其他用户只能读取和进入目录。

您的用户是 ftpuser。
因此,您要么将 ftpuser 添加到 marijn 组,并将权限授予组 marijn/var/www/noc和子目录:chmod -R g+w /var/www/noc 或者您必须让 ftpuser 成为您要写入的目录的所有者。

相关内容