• FTP-Linux中ftp服务器搭建


    一、FTP工作原理

    (1)FTP使用端口

    [root@localhost ~]# cat /etc/services | grep ftp
    ftp-data 20/tcp   #数据链路:端口20
    ftp 21/tcp        #控制链路:端口21

    (2)FTP连接方式
         支持两种连接模式:主动模式(Port)和被动模式(Pasv),这两种模式都是针对数据链路进行的,与控制链路无关。

    • 主动模式工作过程:

    1.客户端从自己的一个任意端口(N > 1024)和FTP服务器的21端口建立控制链路
    2.然后客户端发出Port指令告诉服务器连接自己的N+1端口来建立一条数据通道
    3.当FTP服务器接到这一指令时,会使用20端口连接用户在Port指令中指定的端口号N+1来发送数据

    • 被动模式工作过程:

    1.客户端从自己的一个任意端口(N > 1024)和FTP服务器的21端口建立控制链路
    2.然后客户端发送Pasv指令,告诉服务器自己要连接服务器的某一个端口
    3.如果服务器上的这个端口是空闲可用的,那么服务器会返回确认信息,之后数据传输通道被建立;但如果服务器上的这个端口被另一个资源所使用,那么服务器返回不确认的信息,那么这是客户端会再次发送Pasv命令。

    注意:

    • 在FTP客户连接服务器的整个过程中,控制信道是一直保持连接的,而数据传输通道是临时建立的;
    • 主动模式建立数据传输通道是由服务器端发起的,服务器使用20端口连接客户端某一个大于1024的端口;
    • 被动模式中建立数据传输通道是由客户端发起的,它使用一个大于1024的端口连接服务器的1024端口以上的某一个端口。

    二、ftp服务器搭建

    需求:在Linux中搭建一个ftp服务器在存储文件,创建一个ftp用户:test,主目录是:/home/test,设置该用户不允许登录服务器,并需要限制该用户不能离开自己的主目录。

    【实现步骤】

    1.查看系统有没有安装vsftpd
    # rpm -qa | grep vsftpd
    vsftpd-3.0.2-21.el7.x86_64
    :vsftp(Very Secure FTP)是Linux系统下使用最多的FTP服务端。

    2.查看vsftpd服务是否开机自启
    # chkconfig --list vsftpd
    vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

    3.建立一个新用户账户test,-d 参数指定用户登入时的主目录,参数-m 表示如果主目录不存在则自动创建
    # useradd -d /home/test -m test

    为用户设置密码,输入命令:
    # passwd 密码

    4.vsftpd的配置
    安装完成后,执行命令【rpm -ql vsftpd】可以查看与vsftpd相关的配置文件和文档,其中在/etc/vsftpd目录下有三个主要配置文件:

    • vsftpd.conf 主配置文件
    • ftpusers 指定哪些用户不能访问FTP服务器
    • user_list 指定的用户是否可以访问ftp服务器

    查看vsftpd.conf配置文件
    内容如下:

    复制代码
     1 [root@localhost ~]# cat /etc/vsftpd/vsftpd.conf | grep -v '^#'
     2 #----匿名用户设置----
     3 anonymous_enable=NO #禁止匿名用户登录
     4 
     5 #----本地用户设置----
     6 local_enable=YES #允许本地用户登录ftp服务器
     7 write_enable=YES #允许用户想服务器执行写入操作
     8 local_umask=022 #设置服务器上本地用户创建文件的权限掩码
     9 
    10 #----欢迎语设置----
    11 dirmessage_enable=YES #启用目录提示消息
    12 
    13 #----日志文件设置----
    14 xferlog_enable=YES #启用日志文件功能,记录于/var/log/xferlog
    15 xferlog_std_format=YES #启用标准的日志格式
    16 
    17 #----FTP工作方式与端口设置----
    18 connect_from_port_20=YES #主动模式下,是否启用默认的20端口进行数据传输
    19 
    20 #----与连接相关的设置----
    21 listen=NO            #vsftpd不是以独立的服务运行,要受到xinetd服务的管控,功能上会受到限制
    22 listen_ipv6=YES
    23 
    24 #----控制用户是否允许切换到上级目录----
    25 chroot_list_enable=YES         #开启限制用户在主目录的功能
    26 chroot_list_file=/etc/vsftpd/chroot_list #在chroot_list文件中加入你要限制的用户名,一行一个用户
    27 
    28 #----虚拟用户设置----
    29 pam_service_name=vsftpd      #虚拟用户使用PAM认证方式
    30 
    31 #----控制用户访问(通过vsftpd.user_list和ftpusers文件来实现)----
    32 userlist_enable=YES #是否启用userlist_file文件
    33 userlist_file=/etc/vsftpd/user_list #允许user_list文件中加入的用户访问ftp服务器
    34 
    35 #----控制主机访问----
    36 tcp_wrappers=YES #vsftpd服务器检查/etc/hosts.allow和/etc/hosts.deny中的设置,来决定请求连接的主机,是否允许访问该FTP服务器
    37 
    38 #----其它设置----
    39 allow_writeable_chroot=YES #去除用户主目录的写权限

    复制代码

    在上述vsftpd.conf的相关选项的配置下,对ftpuser文件和user_list文件的配置如下:

    • ftpusers文件:不添加test用户,表示该用户不能访问ftp服务器
    • user_list文件:在/etc/vsftpd.conf主配置文件中设置了userlist_deny=YES(默认情况),则不添加test用户,表示该用户不能访问ftp服务器

    5.开启vsftpd服务
    #service vsftpd start

    6.访问ftp服务器方法

    • 浏览器:ftp://ip地址
    • ftp客户端软件,比如FileZilla,输入ftp服务器IP,用户名,密码,端口:21
    • 命令行终端:ftp 用户名@ftp服务器IP,或 ftp 127.0.0.1

    注意:关闭ftp服务器上的防火墙及Selinux(防止端口限制)

    -------------------------------

    补充知识点

    • FTP日志功能配置

    xferlog_enable=YES //开启日志功能
    xferlog_file=/var/log/xferlog //日志文件的存放位置
    xferlog_std_format=YES //使用标准格式记录日志

    xferlog该日志文件记录了FTP会话,可以显示出用户向从FTP服务器拷贝了什么文件。其中一条记录如下:

    Thu Feb 16 10:09:05 2017 1 10.10.10.9 990 ./home/ftpie.txt b _ o r test ftp 0 * c

    含义:在某个时间test用户向主机10.10.10.9上传了哪些文件

    数据参数说明

    记录数据 参数名称 参数说明
    Thu Feb 16 10:09:05 当前时间 当前服务器本地时间
    1 传输时间 传送文件所用时间,单位为秒
    10.10.10.9 远程主机名称/IP 远程主机名称/IP
    990 文件大小 传送文件的大小,单位为byte
    ./home/ftpie.txt 文件名 传输文件名,包括路径
    b 传输类型

    传输方式的类型,包括两种:
    a以ASCII传输 b以二进制文件传输

    特殊处理标志

    特殊处理的标志位,可能的值包括:
    _ 不做任何特殊处理
    C 文件是压缩格式
    U 文件是非压缩格式
    T 文件是tar格式

    o 传输方向

    文件传输方向,包括两种:
    o 从FTP服务器向客户端传输
    i 从客户端向FTP服务器传输

    r 访问模式

    用户访问模式,包括:
    a 匿名用户
    g 来宾用户
    r 真实用户,即系统中的用户

    test 用户名 用户名称
    ftp 服务名 所使用的服务名称,一般为FTP
    0 认证方式

    认证方式,包括:
    0 无
    1 RFC931认证

    * 认证用户id 认证用户的id,如果使用*,则表示无法获得该id
    c 完成状态

    传输的状态:
    c 表示传输已完成
    i 表示传输示完成

    • 匿名用户ftp     

          服务器安装完成vsftpd后是允许匿名用户访问的,匿名访问的用户名是ftp,密码为空。这个用户可以在/etc/passwd文件中找到

    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

    数据参数说明:
    在ftp用户这行中,一共有七个字段,每个字段之间用冒号分割;

    • ftp 用户名
    • x 密码字段,是隐藏的
    • 14 用户的UID字段,是唯一的
    • 50 用户组的GID,是唯一的
    • FTP User 是用户说明字段
    • /var/ftp 是ftp用户的家目录
    • /sbin/nologin 表示不能登录系统;如果把/sbin/nologin改为/bin/bash,这样ftp用户可以通过本地或远程工具ssh或telnet以真实用户身份登录到系统。

     默认情况下,匿名用户登录所访问的文件夹一般是/var/ftp,当然也可以由用户自行添加或删除。而且,匿名用户的权限只能是下载,而不能上传或是其它写操作。

    • 配置vsftpd服务器在非标准端口(非21端口)工作

    在/etc/vsftpd.conf中,将list_port=10034或者其它端口号选项加入该文件中即可,然后重新启动vsftp守护进程。

    # ftp 127.0.0.1 10034
    
    注:此时测试以前使用的21端口,该端口已经不再有用;如果要使用ftp默认的21端口工作,需要删除或者使用#屏蔽掉前面加入的选项即可。
  • 相关阅读:
    手机号码正则表达式
    POJ 3233 Matrix Power Series 矩阵快速幂
    UVA 11468
    UVA 1449
    HDU 2896 病毒侵袭 AC自动机
    HDU 3065 病毒侵袭持续中 AC自动机
    HDU 2222 Keywords Search AC自动机
    POJ 3461 Oulipo KMP模板题
    POJ 1226 Substrings KMP
    UVA 1455 Kingdom 线段树+并查集
  • 原文地址:https://www.cnblogs.com/wangwiz/p/9335950.html
Copyright © 2020-2023  润新知