【问题标题】:vsftpd - Cannot upload file. Get err: 553vsftpd - 无法上传文件。得到错误:553
【发布时间】:2022-01-17 05:41:40
【问题描述】:

我在 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/share777 权限已设置。

SELinux is enabled.

您能帮我找出问题所在吗?不胜感激!!

【问题讨论】:

    标签: vsftpd


    【解决方案1】:

    我认为问题在于allow_ftpd_full_access 不是vsftpd.conf 选项,并且/home/share 目录的所有者错误(参见步骤5 和6)。

    试试这个...

    注意 - 使用两个 CentOS 7.9 虚拟机在内部网络上进行测试,IP 地址为 192.168.0.10(客户端)和 192.168.0.11(服务器),使用您的 vsftpd.conf 设置。

    1. 在客户端上,确保已安装 FTP 客户端:sudo yum install ftp
    2. 在服务器上,确保已安装 FTP 守护程序:sudo yum install vsftpd
    3. 暂时为两台机器上的 FTP 流量打开防火墙,这样您就不会收到 No route to host 错误:
    sudo firewall-cmd --zone=public --add-port=20/tcp
    sudo firewall-cmd --zone=public --add-port=21/tcp
    
    1. 在服务器上,允许 FTP 守护程序流量通过防火墙:sudo firewall-cmd --zone=public --add-service=ftp
    2. 在服务器上的vsftpd.conf 文件中,删除allow_ftpd_full_access。而是在终端中输入 sudo setsebool -P allow_ftpd_full_access=1
    3. 在服务器上,将/home/share 文件夹的所有权从root:root 更改为FTP 服务器的用户名和组。就我而言,它是ftp_server:ftp_server group:
    sudo chown ftp_server:ftp_server /home/share
    
    1. 在服务器上,启动FTP服务:sudo systemctl start vsftpd
    2. 在服务器上,在/home/share 目录中创建一个测试文件。如果您愿意,您可以更改文件的所有权,但我可以get 文件,即使它是root:root
    echo "This file is from the FTP server." | sudo tee /home/share/ftp_server_file
    
    1. 在客户端,在客户端home目录下创建一个测试文件:echo "This file is from the FTP client." > ~/ftp_client_file
    2. 在客户端:
      • 打开 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 ~]$
    
    1. 验证文件在客户端和服务器上:
    $ 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,但我没有问题。

    【讨论】:

    • 首先非常感谢您的关注。我按照你说的步骤在另外两台服务器上重建了VSFTPD,成功放上去。对比了一下,发现:我的FTP根目录是/home/share。我在这一层创建了一个upload目录,并给它设置了757权限,然后就可以工作了。非常感谢!
    • 好的!非常感谢您的提醒。
    猜你喜欢
    • 2013-09-15
    • 2011-04-27
    • 1970-01-01
    • 2018-09-19
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多