Fork me on GitHub

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

 

posted @ 2019-09-03 11:24  秋刀  阅读(947)  评论(0编辑  收藏  举报