Centos ---- FTP服务配置详解

Centos ---- FTP服务配置详解

FTP简介

  文件传输协议(File Transfer Protocol,FTP)是Internet上用来传输文件的协议,并且是TCP/ip协议组中的协议之一。通过FTP协议,可以实现从远程计算机复制文件到本地计算机上,则称为’下载’;若将文件从本地计算机复制到远程计算机上,则称为’上传’, 在FTP服务端中,需要开启两个端口,一个是控制端口21,一个是数据端口20。

FTP服务的对象可分为三种
本地用户,如果在服务端拥有账户,就是本地用户。它通过输入账户和密码进行登录,登录成功后,登录目录是此本地账户的根目录,比如有一个账户temp,那么它的根目录就是/home/temp/。
Guest用户,FTP服务器提供公共账户和密码,用户使用它只能使用FTP服务,其登录的目录是服务器指定的目录,通常情况下可以实现文件下载和上传。
匿名用户,如果用户在服务端没有账户就称为匿名账户,一般情况下,FTP服务器提供匿名登录功能。匿名用户可以使用anonymous账户名和空密码来实现登录,并且,通常情况下,服务器只为匿名用户提供文件下载功能。匿名用户根目录是/var/ftp

 FTP有两种传输模式:ASCII和二进制数据传输模式。具体区别请自行百度。

软件包安装

 FTP软件有三种:Wu-ftpd、Proftpd、vsftpd。在这里我们使用vsftpd。

 第一种安装方法:

    yum install -y vsftpd
    #此方法一步到位。

 第二种方法,rpm手动安装:

    #通过 yum 命令的 Downloadonly 插件下载 RPM 软件包及其所有依赖包。
    #为了安装 Downloadonly 插件,以 root 身份运行以下命令。
    #yum install yum-plugin-downloadonly
    #即安装了此插件。
    
    #然后,运行如下形式命令。
    yum install  --downloadonly  --downloaddir=/root/vsftpd_rpm  vsftpd
    #将所有该服务依赖包下载到/root/vsftpd_rpm目录中
    #安装此服务rpm软件包。
    rpm -ivh /root/vsftpd_rpm/*.rpm

开启服务

    systemctl restart vsftpd    #启动服务
    systemctl enable vsftpd     #设置开机自启
    
    firewall-cmd --permanent --add-port=21/tcp  #开放21tcp端口,--permanent代表永久开放
    firewall-cmd --permanent --add-port=20/tcp  #开放20tcp端口
    
    firewall-cmd --reload    #重启防火墙
    systemctl restart firewalld


查看vsftpd默认配置文件

 Centos7的vsftpd服务主要用三个配置文件:
 1. /etc/vsftpd/vsftpd.conf : 主要的配置文件
 2. /etc/vsftpd/ftpusers : 指定那些用户不能访问FTP服务
 3. /etc/vsftpd/user_list : 主配置文件中设定允许访问FTP服务的用户
 主配置文件的具体标志是什么意思,可以参考这个博客。vsftpd配置详解

测试vsftpd默认配置

匿名登录

 默认情况下,服务器端允许匿名登录,并且默认登录目录是/var/ftp,此目录有一个pub目录,进入后,在这里建一个test文本文件,以观效果。

 Windows系统中自带FTP客户端工具,因此可以在命令行中访问vsftpd服务器,其中192.168.91.133是服务器端的ip:


PS C:\Users\MSI-NB> ftp 192.168.91.133      #连接
连 接 到 192.168.91.133。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用 户 (192.168.91.133:(none)): anonymous      #输入匿名用户名字anonymous
331 Please specify the password.
密 码 :                                                   #直接回车
230 Login successful.
ftp> ls                                                 #列出目录
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
pub                                                     #该目录就是服务端的/var/ftp/pub/目录
226 Directory send OK.
ftp: 收 到 8 字 节 , 用 时 0.00秒 8000.00千 字 节 /秒 。
ftp> cd pub                                         #进入目录
250 Directory successfully changed.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
test                                                    #文档
226 Directory send OK.
ftp: 收 到 9 字 节 , 用 时 0.00秒 9000.00千 字 节 /秒 。
ftp> mget test                                      #使用mget命令下载文档
200 Switching to ASCII mode.
mget test? y
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for test (9 bytes).
226 Transfer complete.
ftp: 收 到 9 字 节 , 用 时 0.00秒 9000.00千 字 节 /秒 。
ftp> !dir test                                          #查询目标文件下载到本地的位置
驱 动 器 C 中 的 卷 是 Windows
卷 的 序 列 号 是 20B2-91B8
C:\Users\MSI-NB 的 目 录                           #下载本地的位置
2020/12/30 21:08 9 test
1 个 文 件 9 字 节
0 个 目 录 30,254,252,032 可 用 字 节
ftp>bye                                         #退出

 一般情况下,匿名用户无法离开/var/ftp目录,并且只能下载文件。

本地用户登录

 若FTP服务器已经建立本地账户temp,则FTP服务不需要修改配置文件就可以使用本地账户登录,登录后访问的目录默认是/home/temp,即用户根目录。


PS C:\Users\MSI-NB> ftp 192.168.91.133
连 接 到 192.168.91.133。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用 户 (192.168.91.133:(none)): temp       #temp本地账户登录
331 Please specify the password.
密 码 :
230 Login successful.
ftp> mkdir data                                 #创建目录
257 "/home/temp/data" created
ftp> cd data
250 Directory successfully changed.
ftp> !dir test                                  #查看Windows本地目录test文件是否存在
驱 动 器 C 中 的 卷 是 Windows
卷 的 序 列 号 是 20B2-91B8
C:\Users\MSI-NB 的 目 录
2020/12/30 21:08 9 test
1 个 文 件 9 字 节
0 个 目 录 30,243,991,552 可 用 字 节
ftp> pu test                                #使用pu命令,将test文件上传服务器
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
ftp: 发 送 9 字 节 , 用 时 0.00秒 9000.00千 字 节 /秒 。
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
test                                            #上传成功
226 Directory send OK.
ftp: 收 到 9 字 节 , 用 时 0.00秒 9000.00千 字 节 /秒 。
ftp> bye
221 Goodbye.
PS C:\Users\MSI-NB>

本地用户可以离开当前目录并切换到有权访问的其他目录,并在权限允许的情况下进行文件下载和上传。

修改默认配置

允许匿名用户上传文件

    #修改 /etc/vsftpd/vsftpd.conf配置:
    #激活两项,即去除注释
    anon_upload_enable=YES  #允许匿名上传文件
    anon_mkdir_write_enable=YES #允许创建目录
    
    #在原配置文件下面添加两行,注意每行配置末尾不要有空格,如果有空格会导致服务重启错误
    anon_world_readable_only=NO #允许匿名浏览
    write_enable=YES #开放写权限
    
    # 修改登录目录/var/ftp/pub的权限
    chmod 777 /var/ftp/pub
    #重启服务
    systemctl restart vsftpd
    #如果有错误,使用如下形式代码查看错误日志
    journalctl -u vsftpd

anon_root=/var/ftp/pub #设置匿名用户默认登录路径是/var/ftp/pub
 配置成功后,随意创建目录和上传文件。

限制本地用户的权限

 限制某些本地用户的登录,而其他用户可以登录,首先修改主配置文件:

    userlist_enable=YES     #允许读取用户清单
    userlist_deny=YES       #YES指拒绝此清单里的用户,NO指允许清单里的用户访问
    userlist_file=/etc/vsftpd/user_list #清单路径,默认在主配置文件附近

 编辑user_list文件,其中每一个用户名字占一行。

修改默认端口号21

 修改主配置文件,比如将21修改成61121:

    listen_port=61121

 连接形式:windows命令行下输入:
 >ftp
 >ftp>open 192.168.91.133 61121

修改登录前的欢迎语

 第一种方法:

    #修改主配置文件
    #ftpd_banner=Welcome to blah FTP service.
    #去掉它的注释,后边的字符串是登陆前显示的欢迎语
   

 第二种方法:

    #在配置文件上添加以下信息
    banner_file=/etc/vsftpd_banner_file
    #其中vsftpd_banner_file中的字符串会成为登录前欢迎语

修改登录后的欢迎语

 用户登录后,会读取登录目录里的.message文件充当登录后的欢迎语,所以只需要为每个用户根目录里建立.message文件就行。注意:匿名用户根目录是/var/ftp。

可能出现的问题

 windows命令行连接ftp服务器的时候可能会出现425代码连接错误,具体参考如下链接:425错误
 匿名登录的时候有可能出现500代码错误:vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot (), 错误处理参考:500错误

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值