vsftpd - 无法上传文件。得到错误:553
vsftpd - Cannot upload file. Get err: 553
我在Centos7上安装了VSFTPD,尝试设置FTP。
vsftpd.conf文件信息如下:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
allow_ftpd_full_access
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
local_root=/home/share
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES
pasv_address=ip
pasv_min_port=3000
pasv_max_port=3100
guest_enable=NO
我看了很多帖子,得到的大部分答案都是权限和 SELinux。
dir /home/share
777 权限已设置。
SELinux is enabled.
你能帮我找出问题所在吗?我将不胜感激!!
我认为问题在于 allow_ftpd_full_access
不是 vsftpd.conf
选项,并且 /home/share
目录的所有者错误(请参阅步骤 5 和 6)。
试试这个...
NOTE - Tested using two CentOS 7.9 virtual machines, on an Internal network, with IP addresses of 192.168.0.10 (client) and 192.168.0.11 (server), using your vsftpd.conf
settings.
- 在客户端上,确保安装了 FTP 客户端:
sudo yum install ftp
- 在服务器上,确保安装了 FTP 守护程序:
sudo yum install vsftpd
- 暂时为两台机器上的 FTP 流量打开防火墙,因此您不会收到
No route to host
错误:
sudo firewall-cmd --zone=public --add-port=20/tcp
sudo firewall-cmd --zone=public --add-port=21/tcp
- 在服务器上,允许 FTP 守护程序流量通过防火墙:
sudo firewall-cmd --zone=public --add-service=ftp
- 在服务器上的
vsftpd.conf
文件中,删除 allow_ftpd_full_access
。相反,在终端中输入 sudo setsebool -P allow_ftpd_full_access=1
。
- 在服务器上,将
/home/share
文件夹的所有权从 root:root
更改为 FTP 服务器的用户名和组。在我的例子中是 ftp_server:ftp_server
group:
sudo chown ftp_server:ftp_server /home/share
- 在服务器上,启动FTP服务:
sudo systemctl start vsftpd
- 在服务器上,在
/home/share
目录中创建一个测试文件。如果愿意,您可以更改文件的所有权,但我能够 get
文件,即使它是 root:root
:
echo "This file is from the FTP server." | sudo tee /home/share/ftp_server_file
- 在客户端,在客户端
home
目录下创建一个测试文件:echo "This file is from the FTP client." > ~/ftp_client_file
- 在客户端:
- 打开FTP客户端
- 获取服务器的
/home/share
目录列表
- 获取服务器文件
- 放客户端文件
[ftp_client@localhost ~]$ ftp 192.168.0.11
Connected to 192.168.0.11 (192.168.0.11).
220 (vsFTPd 3.0.2)
Name (192.168.0.11:ftp_client): ftp_server
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,0,11,12,27).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 34 Jan 16 21:06 ftp_server_file
226 Directory send OK.
ftp> get ftp_server_file
local: ftp_server_file remote: ftp_server_file
227 Entering Passive Mode (192,168,0,11,11,211).
150 Opening BINARY mode data connection for ftp_server_file (34 bytes).
226 Transfer complete.
34 bytes received in 4.5e-05 secs (755.56 Kbytes/sec)
ftp> put ftp_client_file
local: ftp_client_file remote: ftp_client_file
227 Entering Passive Mode (192,168,0,11,11,212).
150 Ok to send data.
226 Transfer complete.
34 bytes sent in 7.7e-05 secs (441.56 Kbytes/sec)
ftp> ls
227 Entering Passive Mode (192,168,0,11,11,222).
150 Here comes the directory listing.
-rw-r--r-- 1 1000 1000 34 Jan 16 21:18 ftp_client_file
-rw-r--r-- 1 0 0 34 Jan 16 21:06 ftp_server_file
226 Directory send OK.
ftp> quit
221 Goodbye.
[ftp_client@localhost ~]$
- 验证文件在客户端和服务器上:
$ ll ftp*
total 4
-rw-r--r--. 1 ftp_server ftp_server 34 Jan 16 15:04 ftp_client_file
-rw-r--r--. 1 root root 34 Jan 16 15:03 ftp_server_file
这两个文件的初始权限都是 644,但我没有遇到任何问题。
我在Centos7上安装了VSFTPD,尝试设置FTP。 vsftpd.conf文件信息如下:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
allow_ftpd_full_access
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
local_root=/home/share
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES
pasv_address=ip
pasv_min_port=3000
pasv_max_port=3100
guest_enable=NO
我看了很多帖子,得到的大部分答案都是权限和 SELinux。
dir /home/share
777 权限已设置。
SELinux is enabled.
你能帮我找出问题所在吗?我将不胜感激!!
我认为问题在于 allow_ftpd_full_access
不是 vsftpd.conf
选项,并且 /home/share
目录的所有者错误(请参阅步骤 5 和 6)。
试试这个...
NOTE - Tested using two CentOS 7.9 virtual machines, on an Internal network, with IP addresses of 192.168.0.10 (client) and 192.168.0.11 (server), using your
vsftpd.conf
settings.
- 在客户端上,确保安装了 FTP 客户端:
sudo yum install ftp
- 在服务器上,确保安装了 FTP 守护程序:
sudo yum install vsftpd
- 暂时为两台机器上的 FTP 流量打开防火墙,因此您不会收到
No route to host
错误:
sudo firewall-cmd --zone=public --add-port=20/tcp
sudo firewall-cmd --zone=public --add-port=21/tcp
- 在服务器上,允许 FTP 守护程序流量通过防火墙:
sudo firewall-cmd --zone=public --add-service=ftp
- 在服务器上的
vsftpd.conf
文件中,删除allow_ftpd_full_access
。相反,在终端中输入sudo setsebool -P allow_ftpd_full_access=1
。 - 在服务器上,将
/home/share
文件夹的所有权从root:root
更改为 FTP 服务器的用户名和组。在我的例子中是ftp_server:ftp_server
group:
sudo chown ftp_server:ftp_server /home/share
- 在服务器上,启动FTP服务:
sudo systemctl start vsftpd
- 在服务器上,在
/home/share
目录中创建一个测试文件。如果愿意,您可以更改文件的所有权,但我能够get
文件,即使它是root:root
:
echo "This file is from the FTP server." | sudo tee /home/share/ftp_server_file
- 在客户端,在客户端
home
目录下创建一个测试文件:echo "This file is from the FTP client." > ~/ftp_client_file
- 在客户端:
- 打开FTP客户端
- 获取服务器的
/home/share
目录列表 - 获取服务器文件
- 放客户端文件
[ftp_client@localhost ~]$ ftp 192.168.0.11
Connected to 192.168.0.11 (192.168.0.11).
220 (vsFTPd 3.0.2)
Name (192.168.0.11:ftp_client): ftp_server
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,0,11,12,27).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 34 Jan 16 21:06 ftp_server_file
226 Directory send OK.
ftp> get ftp_server_file
local: ftp_server_file remote: ftp_server_file
227 Entering Passive Mode (192,168,0,11,11,211).
150 Opening BINARY mode data connection for ftp_server_file (34 bytes).
226 Transfer complete.
34 bytes received in 4.5e-05 secs (755.56 Kbytes/sec)
ftp> put ftp_client_file
local: ftp_client_file remote: ftp_client_file
227 Entering Passive Mode (192,168,0,11,11,212).
150 Ok to send data.
226 Transfer complete.
34 bytes sent in 7.7e-05 secs (441.56 Kbytes/sec)
ftp> ls
227 Entering Passive Mode (192,168,0,11,11,222).
150 Here comes the directory listing.
-rw-r--r-- 1 1000 1000 34 Jan 16 21:18 ftp_client_file
-rw-r--r-- 1 0 0 34 Jan 16 21:06 ftp_server_file
226 Directory send OK.
ftp> quit
221 Goodbye.
[ftp_client@localhost ~]$
- 验证文件在客户端和服务器上:
$ ll ftp*
total 4
-rw-r--r--. 1 ftp_server ftp_server 34 Jan 16 15:04 ftp_client_file
-rw-r--r--. 1 root root 34 Jan 16 15:03 ftp_server_file
这两个文件的初始权限都是 644,但我没有遇到任何问题。