我正在尝试将文件从 Windows 传输到vsFTPd在 Linux 上运行的服务器。我可以成功地将文件传输到主目录,但是当我更改目录时,出现错误。以下是演示该问题的记录。
C:\>ftp
ftp> open 10.50.0.21
Connected to 10.50.0.21.
220 (vsFTPd 2.0.5)
User (10.50.0.21:(none)): user1
331 Please specify the password.
Password:
230 Login successful.
ftp> put D:/rez2g.ahk
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 File receive OK.
ftp: 2401 bytes sent in 0.00Seconds 2401000.00Kbytes/sec.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
apache-tomcat-6.0.29
rez2g.ahk
victor.war
226 Directory send OK.
ftp: 48 bytes received in 0.00Seconds 48000.00Kbytes/sec.
ftp> cd 1/
250 Directory successfully changed.
ftp> pwd
257 "/home/user1/1"
ftp> put D:/rez2g.ahk
200 PORT command successful. Consider using PASV.
553 Could not create file.
答案1
SELINUX 有一个老问题,不允许 FTP 用户写入他们的主路径。
据我所知,您可以通过两种方式修复它:
[1] 禁用 selinux(不推荐用于生产环境)
[2] 以 root 身份执行以下命令(首选):
setsebool -P ftp_home_dir=1
编辑:
您能确保write_enable=YES
已将其添加到 /etc/vsftpd/vsftpd.conf 中吗?
编辑 2:
我想到了一些其他可能存在问题但相当容易检查的事情:
文件已存在,但您无权覆盖它
磁盘已满(或已达到配额)
此外,这可能是一个奇怪的 umask 问题,vsftp 覆盖。您创建的文件夹是 644 吗?对于 user1 用户,命令
的输出是什么?umask