zoukankan      html  css  js  c++  java
  • FTP的配置

    1、FTP是什么?

    2、FTP和HTTP的解释与区别

    3、在Linux中配置FTP服务器

    4、配置nginx,配合ftp服务器,保证项目的安全性

    1、FTP(file transfer protocol)就是文件传输协议,在网络上做 文件传输(以流的形式进行传输)  的一个协议。

    2、首先需要搞懂HTTP协议:

      HTTP是一种为了将位于全球各个地方的Web服务器中的内容发送给不特定多数用户而制订的协议。也就是说,可以把HTTP看作是旨在向不特定多数的用户“发放”文件的协议。
      HTTP使用于从服务器读取Web页面内容。Web浏览器下载Web服务器中的HTML文件及图像文件等,并临时保存在个人电脑硬盘及内存中以供显示。
    使用HTTP下载软件等内容时的不同之处只是在于是否以Web浏览器显示的方式保存,还是以不显示的方式保存而已。结构则完全相同。因此,只要指定文件,任何人都可以进行下载。

      而FTP是为了在特定主机之间“传输”文件而开发的协议。因此,在FTP通信的起始阶段,必须运行通过用户ID和密码确认通信对方的认证程序。

      FTP下载和HTTP下载的区别之一就在与此。 

      不过,访问下载站点并进行FTP下载时,一般情况下不会出现输入用户ID及密码的窗口。这是因为使用了Anonymous FTP的结构。
    所谓Anonymous FTP是指将用户名作为“Anonymous”(匿名之意)、将密码作为用户的邮件地址注册FTP服务器的方法。Web浏览器首先在用户名中输入Anonymous、并在密码中输入设定在自身的邮件地址来访问FTP服务器
      在下载站点的FTP服务器中,如果用户名是Anonymous,那么任何人都可以进行访问,用户无需一一输入用户名和密码也可以进行访问

    3、在Linux中配置FTP服务器:

      但这里有三个问题:

      (1)如果FTP服务器有多台,服务器无法识别问题:

        解决:在用户名表中添加字段(ftp_server),代表的是FTP服务器的编号

      (2)上传的文件名重复问题

        解决:使用用户的id+当前时间的毫秒数+任意的随机数  这样的方式修改掉原始文件名

      (3)文件存放不规律不方便后期的查询和维护:

        解决:可以根据当前日期进行分文件夹存放;如2019/09/03/

    4、开始配置FTP服务器

      要求:所有的FTP服务器都不能叫ftp,Linux中新建虚拟机以及进行配置的时候也要避免直接使用ftp作为某名称,名字冲突问题

    1)检测Linux是否已经安装了ftp:

      rpm -qa | grep vsftpd        在Linux上ftp叫做vsftpd,如果什么都没有显示,说明没有安装 

    2)安装ftp

      yum -y install vaftpd

      看到Complete说明成功!

    3)启动ftp(和防火墙的命令类似)

      service vsftpd start 

      看到以下信息说明启动成功: Starting vsftpd for vsftpd: [ OK ]

      此外还有:service vsftpd stop 停止    service vsftpd restart  重启

    4)设置ftp的开机启动

      chkconfig vsftpd on

    5)配置ftp
      linux会在ftp默认安装在/etc/目录下,对vsftpd下的vsftpd.conf目录进行配置就行了。 

      vi /etc/vsftpd/vsftpd.conf

      配置信息有:

        # 禁止匿名用户anonymous登录
        anonymous_enable=NO
        # 允许本地用户登录
        local_enable=YES
        # 让登录的用户有写权限(上传,删除)
        write_enable=YES
        # 默认umask
        local_umask=022
        # 把传输记录的日志保存到/var/log/vsftpd.log
        xferlog_enable=YES
        xferlog_file=/var/log/vsftpd.log
        xferlog_std_format=NO
        # 允许ASCII模式上传
        ascii_upload_enable=YES
        # 允许ASCII模式下载
        ascii_download_enable=YES
        # 使用20号端口传输数据
        connect_from_port_20=YES
        # 欢迎标语
        ftpd_banner=Welcome to use my test ftp server.
        # 接下来的三条配置很重要
        # chroot_local_user设置了YES,那么所有的用户默认将被chroot,
        # 也就用户目录被限制在了自己的home下,无法向上改变目录。
        # chroot_list_enable设置了YES,即让chroot用户列表有效。
        # ★超重要:如果chroot_local_user设置了YES,那么chroot_list_file
        # 设置的文件里,是不被chroot的用户(可以向上改变目录)
        # ★超重要:如果chroot_local_user设置了NO,那么chroot_list_file
        # 设置的文件里,是被chroot的用户(无法向上改变目录)
        chroot_local_user=NO(!!!!!有坑,当使用Java去连接ftp并上传的时候,如果为YES,不会自动创建文件的目录信息)
        chroot_list_enable=YES
        # touch /etc/vsftpd/chroot_list 新建(在配置完后去手动创建chroot_list这个文件)
        chroot_list_file=/etc/vsftpd/chroot_list
        # 以standalone模式在ipv4上运行
        listen=YES
        # PAM认证服务名,这里默认是vsftpd,在安装vsftpd的时候已经创建了这个pam文件,
        # 在/etc/pam.d/vsftpd,根据这个pam文件里的设置,/etc/vsftpd/ftpusers
        # 文件里的用户将禁止登录ftp服务器,比如root这样敏感的用户,所以你要禁止别的用户
        # 登录的时候,也可以把该用户追加到/etc/vsftpd/ftpusers里。
        pam_service_name=vsftpd

    6)重启ftp

      service vsftpd restart  

      看到以下信息说明重启成功:
        Shutting down vsftpd:      [OK ]
        Starting vsftpd for vsftpd:      [ OK ]

    7)执行一下5个命令,让刚才的配置生效:(执行时间较长,需等待)

      getsebool -a | grep ftpd
      setsebool -P ftp_home_dir 1
      setsebool -P allow_ftpd_full_access 1
      setsebool -P allow_ftpd_use_cifs 1
      setsebool -P allow_ftpd_use_nfs 1

    8)创建ftp用户

      useradd ftp的用户名(ftpuser)-s /sbin/nologin -d /home/ftp(此前home目录下没有ftp文件夹)

        /home/ftp是将来用户上传文件的时候所到的跟目录;

    9)为ftp用户设置密码

      passwd ftp的用户名(ftpuser

    10)使用filezilla连接ftp服务器测试

      !!!若要在/home/ftp目录创建文件夹和文件,需要使用配置的ftp用户(ftpuser),不能去使用root,可能无法识别。

    5、配置nginx,配合ftp服务器,保证项目的安全性

      1、使用xftp工具把nginx上传到Linux服务器上

      2、解压nginx:  tar -zxvf    XXX

      3、先安装nginx所必须的配置包

        yum -y install gcc pcre-devel openssl openssl-devel

        再创建快捷方式

        ./configure --prefix=/usr/local/nginx-1.17.3

      4、编译nginx

         make && make install

      5、修改nginx的配置

        /usr/local/nginx-1.17.3/conf目录修改

        vim nginx.conf

        (1)把第一行的注解打开,然后将user对应的nobody改成root

        (2)在location中修改:将root 对应的值改为:/home/ftp/www

          location /{

            root   /home/ftp/www;

          }

          这里的/home/ftp已经有了,但是www这个文件夹还没有,需要在filezilla中新建(根据ftpuser用户来创建文件夹)

      6、启动nginx

        ./nginx

    乾坤未定,你我皆是黑马
  • 相关阅读:
    (转)UIMenuController的使用,对UILabel拷贝以及定制菜单
    (转)ios多线程开发——NSOperation详解
    IOS custom statusBar 思路
    objectiveC的@property(atomic, retain)对引用计数的影响
    A Generic Particle IO Library
    RenderMan与CG生产流程简述
    Maya Mesh Relaxation Deformer
    个人黄金市场交易记录/Personal Gold Market Operation Record
    Implementation of TLRW ReadWrite Lock
    给想雇佣我的人说的话/Some words to somebody who want to hire me.
  • 原文地址:https://www.cnblogs.com/liuqijia/p/11451957.html
Copyright © 2011-2022 走看看