Answers:
发生这种情况的可能原因有两个-您对通往您要上传到的目录的目录没有写和执行权限,或者vsftpd
配置为不允许您上传。
在前一种情况下,请使用chmod
和chown
适当地确保您的用户对每个中间目录都具有这些权限。写入位允许受影响的用户在目录中创建,重命名或删除文件,以及修改目录的属性,而读取位允许受影响的用户在目录中列出文件。由于路径中的中间目录也会影响这一点,因此必须适当设置权限,以导致最终要上传到的目标位置。
在后一种情况下,请查看您的vsftpd.conf
。write_enable
必须为true以允许写入(默认为false)。有关此配置文件的详细文档,请参见man 5 vsftpd.conf
。
该命令ftp put /path/to/local_file
不适用于vsftpd
。请尝试以下操作:
ftp put /path/to/local_file remote_file_name
您可以选择所需的任何名称remote_file_name
,但必须指定一个。
/path/to/
服务器上不存在(和/或无法通过FTP会话访问)。这就是为什么ftp put local_file
在没有显式目的地的情况下工作的原因。(提示:检查local: … remote: …
FTP客户端中的行。)
我遇到了同样的问题,并修复了更改SELinux的问题,以允许在配置为的文件夹中进行写入vsftp = /var/ftp/pub
。
这些链接可能会有所帮助:
如果您不想进一步使用SELinux,请不要更改它,因此将默认显示 /etc/selinux/config
SELINUX=enforcing
然后只需以root用户身份或通过sudo
以下命令运行命令:
sudo setsebool -P ftpd_anon_write 1
sudo setsebool -P ftpd_full_access 1
如上文其他评论中所述。
检查您vsftpd.conf
的以下设置:
guest_enable=YES # set it to NO then restart the vsftpd service.
如果设置为YES
,也会导致553 Could not create file
。
来自:http : //www.vsftpd.beasts.org/vsftpd_conf.html
guest_enable 如果启用,则所有非匿名登录均被分类为“访客”登录。来宾登录名将重新映射到guest_username设置中指定的用户。
默认值:否
文件名中可能包含不受支持的字符
对于Fedora23,请运行以下命令:
setsebool -P ftpd_anon_write 1
setsebool -P ftpd_full_access 1
它为我工作。