zoukankan      html  css  js  c++  java
  • 文件共享服务之FTP

    一、学习线路如下:

    image

    二、ftp的介绍

        FTP(File Transfer Protocol)是一种应用非常广泛并且古老的一个互联网文件传输协议。主要用于互联网中文件的双向传输(上传/下载)、文件共享。

        FTP是C/S架构,需要拥有客户端和服务端,使用TCP协议作为底层传输协议,提供可靠的数据传输,可以跨平台使用。

        FTP默认端口为21号和20号。

    三、FTP的两种工作模式

    1.主动模式

    1. 客户端打开大于1023的随机命令端口和大于1023的随机数据端口向服务的的21号端口发起请求
    2. 服务端的21号命令端口响应客户端的随机命令端口
    3. 服务端的20号端口主动请求连接客户端的随机数据端口
    4. 客户端的随机数据端口进行确认

    2.被动模式

    1. 客户端打开大于1023的随机命令端口和大于1023的随机数据端口向服务的的21号端口发起请求
    2. 服务端的21号命令端口响应客户端的随机命令端口
    3. 客户端主动连接服务端打开的大于1023的随机数据端口
    4. 服务端进行确认

    四、简单的搭建并启动服务

    [root@web ~]# rpm -q vsftpd
    vsftpd-2.2.2-24.el6.x86_64
    [root@web ~]# service vsftpd start
    为 vsftpd 启动 vsftpd:                                    [确定]
    [root@web ~]# netstat -nltp | grep vsftpd
    tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      1863/vsftpd

    五、/etc/vsftpd/vsftpd.conf文件的配置

    1.匿名用户(anonymous)设置
        1)anonymous_enable=YES/NO(YES)
            控制是否允许匿名用户登入,YES 为允许匿名登入,NO 为不允许。默认值为YES。
        2)write_enable=YES/NO(YES)
            是否允许登陆用户有写权限。属于全局设置,默认值为YES。
        3)no_anon_password=YES/NO(NO)
            若是启动这项功能,则使用匿名登入时,不会询问密码。默认值为NO。
        4)ftpftp_username=ftp
            定义匿名登入的使用者名称。默认值为ftp。
        5)anon_root=/var/ftp
            使用匿名登入时,所登入的目录。默认值为/var/ftp。注意ftp目录不能是777的权限属性,即匿名用户的家目录不能有777的权限。
        6)anon_upload_enable=YES/NO(NO)
            如果设为YES,则允许匿名登入者有上传文件(非目录)的权限,只有在write_enable=YES时,此项才有效。当然,匿名用户必须要有对上层目录的写入权。默认值为NO。
        7)anon_world_readable_only=YES/NO(YES)
            如果设为YES,则允许匿名登入者下载可阅读的档案(可以下载到本机阅读,不能直接在FTP服务器中打开阅读)。默认值为YES。
        8)anon_mkdir_write_enable=YES/NO(NO)
            如果设为YES,则允许匿名登入者有新增目录的权限,只有在write_enable=YES时,此项才有效。当然,匿名用户必须要有对上层目录的写入权。默认值为NO。
        9)anon_other_write_enable=YES/NO(NO)
            如果设为YES,则允许匿名登入者更多于上传或者建立目录之外的权限,譬如删除或者重命名。(如果anon_upload_enable=NO,则匿名用户 不能上传文件,但可以删除或者重命名已经存在的文件;如果anon_mkdir_write_enable=NO,则匿名用户不能上传或者新建文件夹,但 可以删除或者重命名已经存在的文件夹。)默认值为NO。
        10)chown_uploads=YES/NO(NO)
            设置是否改变匿名用户上传文件(非目录)的属主。默认值为NO。
        11)chown_username=username
            设置匿名用户上传文件(非目录)的属主名。建议不要设置为root。
        12)anon_umask=077
            设置匿名登入者新增或上传档案时的umask 值。默认值为077,则新建档案的对应权限为700。
        13)deny_email_enable=YES/NO(NO)
            若是启动这项功能,则必须提供一个档案/etc/vsftpd/banner_emails,内容为email address。若是使用匿名登入,则会要求输入email address,若输入的email address 在此档案内,则不允许进入。默认值为NO。
        14)banned_email_file=/etc/vsftpd/banner_emails
            此文件用来输入email address,只有在deny_email_enable=YES时,才会使用到此档案。若是使用匿名登入,则会要求输入email address,若输入的email address 在此档案内,则不允许进入。
    
    2.本地用户设置
        1)local_enable=YES/NO(YES)
            控制是否允许本地用户登入,YES 为允许本地用户登入,NO为不允许。默认值为YES。
        2)local_root=/home/username
            当本地用户登入时,将被更换到定义的目录下。默认值为各用户的家目录。
        3)write_enable=YES/NO(YES)
            是否允许登陆用户有写权限。属于全局设置,默认值为YES。
        4)local_umask=022
            本地用户新增档案时的umask 值。默认值为077。
        5)file_open_mode=0755
            本地用户上传档案后的档案权限,与chmod 所使用的数值相同。默认值为0666。
    
    3.欢迎语设置
        1)dirmessage_enable=YES/NO(YES)
            如果启动这个选项,那么使用者第一次进入一个目录时,会检查该目录下是否有.message这个档案,如果有,则会出现此档案的内容,通常这个档案会放置欢迎话语,或是对该目录的说明。默认值为开启。
        2)message_file=.message
            设置目录消息文件,可将要显示的信息写入该文件。默认值为.message。
        3)banner_file=/etc/vsftpd/banner
            当使用者登入时,会显示此设定所在的档案内容,通常为欢迎话语或是说明。默认值为无。如果欢迎信息较多,则使用该配置项。
        4)ftpd_banner=Welcome to BOB's FTP server
            这里用来定义欢迎话语的字符串,banner_file是档案的形式,而ftpd_banner 则是字符串的形式。预设为无。
    
    4.数据传输模式设置
        FTP在传输数据时,可以使用二进制方式,也可以使用ASCII模式来上传或下载数据。
        1)ascii_upload_enable=YES/NO(NO)
            设置是否启用ASCII 模式上传数据。默认值为NO。
        2)ascii_download_enable=YES/NO(NO)
            设置是否启用ASCII 模式下载数据。默认值为NO。
    
    5.访问速率设置
        1)anon_max_rate=0
            设置匿名登入者使用的最大传输速度,单位为B/s,0 表示不限制速度。默认值为0。
        2)local_max_rate=0
            本地用户使用的最大传输速度,单位为B/s,0 表示不限制速度。预设值为0。
    
    6.超时时间设置
        1)accept_timeout=60
            设置建立FTP连接的超时时间,单位为秒。默认值为60。
        2)connect_timeout=60
            PORT 方式下建立数据连接的超时时间,单位为秒。默认值为60。
        3)data_connection_timeout=120
            设置建立FTP数据连接的超时时间,单位为秒。默认值为120。
        4)idle_session_timeout=300
            设置多长时间不对FTP服务器进行任何操作,则断开该FTP连接,单位为秒。默认值为300 。
    
    7.FTP的工作方式与端口设置
        FTP有两种工作方式:PORT FTP(主动模式)和PASV FTP(被动模式)
        1)listen_port=21
            设置FTP服务器建立连接所监听的端口,默认值为21。
        2)connect_from_port_20=YES/NO
            指定FTP使用20端口进行数据传输,默认值为YES。
        3)ftp_data_port=20
            设置在PORT方式下,FTP数据连接使用的端口,默认值为20。
        4)pasv_enable=YES/NO(YES)
            若设置为YES,则使用PASV工作模式;若设置为NO,则使用PORT模式。默认值为YES,即使用PASV工作模式。
        5)pasv_max_port=0
            在PASV工作模式下,数据连接可以使用的端口范围的最大端口,0 表示任意端口。默认值为0。
        6)pasv_min_port=0
            在PASV工作模式下,数据连接可以使用的端口范围的最小端口,0 表示任意端口。默认值为0。
    
    8.与连接相关的设置
        1)listen=YES/NO(YES)
            设置vsftpd服务器是否以standalone模式运行。以standalone模式运行是一种较好的方式,此时listen必须设置为YES,此为默认值。建议不要更改,有很多与服务器运行相关的配置命令,需要在此模式下才有效。若设置为NO,则vsftpd不是以独立的服务运行,要受到xinetd 服务的管控,功能上会受到限制。
        2)max_clients=0
            设置vsftpd允许的最大连接数,默认值为0,表示不受限制。若设置为100时,则同时允许有100个连接,超出的将被拒绝。只有在standalone模式运行才有效。
        3)max_per_ip=0
            设置每个IP允许与FTP服务器同时建立连接的数目。默认值为0,表示不受限制。只有在standalone模式运行才有效。
        4)listen_address=IP地址
            设置FTP服务器在指定的IP地址上侦听用户的FTP请求。若不设置,则对服务器绑定的所有IP地址进行侦听。只有在standalone模式运行才有效。
        5)setproctitle_enable=YES/NO(NO)
            设置每个与FTP服务器的连接,是否以不同的进程表现出来。默认值为NO,此时使用ps aux |grep ftp只会有一个vsftpd的进程。若设置为YES,则每个连接都会有一个vsftpd的进程。
    
    9.虚拟用户设置
        虚拟用户使用PAM认证方式。
        1)pam_service_name=vsftpd
            设置PAM使用的名称,默认值为/etc/pam.d/vsftpd。
        2)guest_enable= YES/NO(NO)
            启用虚拟用户。默认值为NO。
        3)guest_username=ftp
            这里用来映射虚拟用户。默认值为ftp。
        4)virtual_use_local_privs=YES/NO(NO)
            当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限。当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限。默认情况下此参数是关闭的(NO)。
    
    10.日志文件设置
        1)xferlog_enable= YES/NO(YES)
            是否启用上传/下载日志记录。如果启用,则上传与下载的信息将被完整纪录在xferlog_file 所定义的档案中。预设为开启。
        2)xferlog_file=/var/log/vsftpd.log
            设置日志文件名和路径,默认值为/var/log/vsftpd.log。
        3)xferlog_std_format=YES/NO(NO)
            如果启用,则日志文件将会写成xferlog的标准格式,如同wu-ftpd 一般。默认值为关闭。
        4)log_ftp_protocol=YES|NO(NO)
            如果启用此选项,所有的FTP请求和响应都会被记录到日志中,默认日志文件在/var/log/vsftpd.log。启用此选项时,xferlog_std_format不能被激活。这个选项有助于调试。默认值为NO。
    
    11.其他设置
        1)text_userdb_names= YES/NO(NO)
            设置在执行ls –la之类的命令时,是显示UID、GID还是显示出具体的用户名和组名。默认值为NO,即以UID和GID方式显示。若希望显示用户名和组名,则设置为YES。
        2)ls_recurse_enable=YES/NO(NO)
            若是启用此功能,则允许登入者使用ls –R(可以查看当前目录下子目录中的文件)这个指令。默认值为NO。
        3)hide_ids=YES/NO(NO)
            如果启用此功能,所有档案的拥有者与群组都为ftp,也就是使用者登入使用ls -al之类的指令,所看到的档案拥有者跟群组均为ftp。默认值为关闭。
        4)download_enable=YES/NO(YES)
            如果设置为NO,所有的文件都不能下载到本地,文件夹不受影响。默认值为YES。
    
    12.控制用户是否允许切换到上级目录
        1)chroot_list_enable=YES/NO(NO)
            设置是否启用chroot_list_file配置项指定的用户列表文件。默认值为NO。
        2)chroot_local_user=YES/NO
            用于指定用户列表文件中的用户是否允许切换到上级目录。默认值为NO。
        3)chroot_list_file=/etc/vsftpd.chroot_list
            用于指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录。

    六、FTP服务的访问控制

    1.对象访问控制

        两个相关的配置文件:ftpusers、user_list

        1)ftpusers

             ftpusers的路径为:/etc/vsftpd/ftpusers;此文件的作用是为ftp服务提供黑名单功能,ftpusers 有拒绝优先功能。

        2)user_list

             user_list的路径为::/etc/vsftpd/user_list,默认功能是黑名单,也可以通过修改配置文件变成白名单,变成白名单后只有在该文件中国的用户可以访问ftp服务。

    user_list要成为白名单,需要再配置文件里增加:
    userlist_deny=NO

        3)总结

            1. 用户在ftpusers文件中,那么用户不能访问ftp服务器
             2. 用户在user_list文件中,如果该文件是白名单,那么只在该文件中的用户可以访问ftp服务
             3. 如果user_list文件是白名单,用户即在ftpusers中又在user_list中,那么ftpusers拒绝优先

    2.网络访问控制

        1)大前提:在vsfto.conf配置文件中开启tcp_wrappers

    tcp_wrappers=YES

        2)两个相关的配置文件

    /etc/hosts.allow     此文件的的IP允许访问相关的服务
    /etc/hosts.deny     此文件的的IP拒绝访问相关的服务

            注:系统查看用户时先查看的是/etc/hosts.allow文件,即如果同一个IP在两个配置文件中都存在,并且是两个相同的服务,则能够访问该服务

        3)tcp_wrappers文件的写法

    /etc/hosts.deny
    vsftpd:all             //拒绝全部IP访问vsftpd服务
    vsftpd:all  EXCEPT 192.168.1.1   //192.168.1.1之外所有IP拒绝访问vsftpd服务
    vsftpd:192.168.0.254:allow  允许192.168.0.254访问
    vsftpd:192.168.0.0/255.255.255.0  拒绝这个网段
    vsftpd:192.168.0.0/255.255.255.0 EXCEPT 192.168.0.254  拒绝某个网段,但是除了某个ip地址
    注意:子网掩码不支持IP/24这种写法
    vsftpd,sshd:10.1.1.1        //此IP拒绝访问vsftpd和shhd服务

        4)查看服务是否支持tcp_wrappers

    [root@web vsftpd]# ldd /usr/sbin/vsftpd | grep libwrap*
        libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f21f4fe6000)

    七、Linux下使用lftp来使用ftp

    1.登录ftp

        lftp 用户名:密码@ftp地址:传送端口(默认21)

    2.登录ftp后的操作

        cd:切换ftp上的工作目录

        ls:列出你ftp上当前工作环境下的文件

        lcd:在ftp上切换你本地的工作目录

        !ls:列出你本地工作环境下的文件

    3.上传文件

        put file

        mput file  //可批量下载文件

        mirror –R file/dir ./  //可上传整个目录

    4.下载文件

        get file

        mput file

        mirror dir

  • 相关阅读:
    evernote100个做笔记的好方法
    平衡二叉树的调整模版
    晨间日记的奇迹
    hdu 2952 Counting Sheep
    hdu 1535 Invitation Cards
    poj 3259 Wormholes(spfa)
    poj 2263 Heavy Cargo(floyd)
    poj 3268 Silver Cow Party(SPFA)
    hdu 1690 Bus System
    hdu 3631 Shortest Path(Floyd)
  • 原文地址:https://www.cnblogs.com/feng0919/p/11234518.html
Copyright © 2011-2022 走看看