VSFTPD基础知识\安装\基本使用

... 3

一、      什么是VSFTPD.. 3

1       什么是FTP?. 3

1.1          原生的FTP服务的缺陷... 3

2       VSFTPD服务... 3

二、      为什么使用FTP服务... 3

1       传统WEB工程架构... 4

2       互联网架构|企业级架构... 4

2.1          文件拷贝... 4

2.2      FTP服务器搭建... 5

三、      安装VSFPTD.. 5

1       VSFTPD安装... 5

2       测试服务... 5

2.1          服务启动... 5

2.2          服务停止... 6

2.3          服务重启... 6

2.4          服务状态查看... 6

3       访问VSFTPD服务... 6

4       修改VSFTPD配置... 6

4.1          关闭匿名访问... 6

4.2          修改seLinux. 7

5       提供访问的用户... 8

5.1          新增Linux用户... 8

5.2          为用户设置密码... 8

四、      使用FTPClient实现文件上传... 8

1       资源依赖... 8

2       文件上传... 8

2.1          创建war工程... 8

2.2      JSP页面... 10

2.3      Controller定义... 11

2.4          服务代码... 12

3       ftp文件读取[图片显示] 14

五、      使用Nginx实现FTP资源访问... 14

1       什么是Nginx. 14

2       安装Nginx. 14

2.1          安装前置环境... 14

2.2          上传nginxlinux. 15

2.3          解压缩... 15

2.4          进入解压后的源码目录. 15

2.5          配置nginx软件的临时环境变量... 15

2.6          编译... 15

2.7          安装... 15

2.8          检查安装后的应用... 15

2.9          测试nginx应用... 15

3       实现静态资源映射, 访问FTP资源... 18

 

一、        什么是VSFTPD

Linux操作系统中的一个服务. 提供FTP功能.

1         什么是FTP?

文件传输协议. 使用协议的方式, 在网络中传递文件.

Linux中默认提供FTP服务.

xShell中的xFTP功能. 就是使用Linux系统中的FTP服务. 传输文件.

1.1      原生的FTP服务的缺陷

安全性 - 相对较差. FTP使用的协议是未加密的协议. 对外暴露的是操作系统的文件传输协议底层.

控制性 - FTP原生服务, 对目录,权限,文件等控制能力较差. : 使用sftp协议可以在ftp协议服务暴露的基础上,访问服务器. 实现所有的资源访问.

2         VSFTPD服务

是建立是seLinux基础上,开发的新的FTP服务插件.

本身是带有安全校验的. 可控性也非常好. 可以控制用户访问的目录. 可以控制所有暴露资源的权限. : 所有资源只读.

二、        为什么使用FTP服务

实现WEB工程中的文件上传或下载功能. 主要针对的是互联网WEB项目或大型企业架构WEB项目.

1         传统WEB工程架构

2         互联网架构|企业级架构

解决文件不同步的问题:

2.1      文件拷贝

有缺陷: 维护问题(上传的效率, 删除的维护,文件的容量). 服务器数据流混乱.

2.2      FTP服务器搭建

优点: 便于维护(一次上传,集中管理,节约存储). 没有数据量混乱问题.

缺点: 开发问题. 需要开发新的应用代码, 实现FTP服务器的读写访问.

三、        安装VSFPTD

Linux中的一个服务. 有完善的应用内容,保存在YUM中央服务器中.

YUM中央服务器 : 类似百度应用, 应用商城, APP store. 集中管理Linux系统统一发布的应用软件的. 可以通过Linux系统内置的命令:yum实现在线的安装. 服务,应用一键安装.

1         VSFTPD安装

命令 : yum install -y vsftpd

解释:

yum - 执行远程YUM中央服务器访问.

install - 安装

remove - 卸载

-y - 免互动提示.

vsfptd - 要安装的服务或应用的名称.

2         测试服务

2.1      服务启动

service vsftpd start

2.2      服务停止

service vsftpd stop

2.3      服务重启

service vsftpd restart

2.4      服务状态查看

service vsftpd status

3         访问VSFTPD服务

使用浏览器或客户端应用访问服务.

访问地址 : ftp://ip:port

默认端口号 : 21

VSFTPD服务,默认提供匿名登录能力. 匿名登录访问的目录是Linux系统中的固定目录,称为共享目录. 路径为 : /var/ftp

用户名: Linux操作系统用户名

密码: Linux操作系统用户的密码

4         修改VSFTPD配置

4.1      关闭匿名访问

修改配置文件 : /etc/vsftpd/vsftpd.conf

# 匿名访问是否有效, 修改为NO. 关闭匿名访问能力.

anonymous_enable=YES

 

修改配置文件,保存后. 需要重启服务.

 

访问VSFTPD服务,使用的是Linux操作系统的用户.

访问的目录就是登录用户在Linux系统中的主目录.

root用户 - /root

xxx用户 - /home/xxx

 

访问VSFPTD服务. 会有无法登录或无法访问登录用户主目录的问题.

seLinux配置的问题.需要修改seLinuxVSFTPD服务的管理.

4.2      修改seLinux

4.2.1        查看seLinux配置信息

getsebool -a | grep ftp

结果如下:

[root@localhost   vsftpd]# getsebool -a | grep ftp

allow_ftpd_anon_write   --> off

allow_ftpd_full_access --> off  # 开启ftpd服务的所有访问权限, 可登录

allow_ftpd_use_cifs   --> off

allow_ftpd_use_nfs   --> off

ftp_home_dir --> off    # 开启ftp登录用户主目录访问权限.

ftpd_connect_db   --> off

ftpd_use_fusefs   --> off

ftpd_use_passive_mode   --> off

httpd_enable_ftp_server   --> off

tftp_anon_write   --> off

tftp_use_cifs   --> off

tftp_use_nfs   --> off

 

4.2.2        修改seLinux配置信息

setsebool se配置名称 新的值

setsebool allow_ftpd_full_access on

setsebool ftp_home_dir on

4.2.3        重启服务

 

4.2.4        root用户登录

是系统的根用户. 理论上只运行物理机本地访问操作.

如果使用ftp协议,通过root用户登录. 必须使用加密的ftp协议.

sftp://ip:port

默认端口是: 22

不推荐使用. 加密的ftp协议, 会影响vsftpdlinux操作系统的权限管理.

5         提供访问的用户

5.1      新增Linux用户

useradd 用户名

useradd ftpuser

5.2      为用户设置密码

passwd 用户名

输入两次密码

 

passwd ftpuser

ftpuser

四、        使用FTPClient实现文件上传

1         资源依赖

使用commons-net. commons-net包中.包含FTPclient技术. java代码通过编程的方式, 实现FTP服务远程访问的技术.

<dependency>

      <groupId>commons-net</groupId>

      <artifactId>commons-net</artifactId>

    <version>3.3</version>

</dependency>

 

2         文件上传

2.1      创建war工程

pom文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0   http://maven.apache.org/xsd/maven-4.0.0.xsd">

         <modelVersion>4.0.0</modelVersion>

         <groupId>com.bjsxt</groupId>

         <artifactId>ftp</artifactId>

         <version>1.0</version>

         <packaging>war</packaging>

 

         <dependencies>

                   <dependency>

                            <groupId>commons-net</groupId>

                            <artifactId>commons-net</artifactId>

                            <version>3.3</version>

                   </dependency>

                   <!-- Spring -->

                   <dependency>

                            <groupId>org.springframework</groupId>

                            <artifactId>spring-context</artifactId>

                            <!-- 使用XML配置文件中的脚本语法, 获取properties定义的版本数据 -->

                            <version>4.3.10.RELEASE</version>

                   </dependency>

                   <!-- 切面相关 -->

                   <dependency>

                            <groupId>org.springframework</groupId>

                            <artifactId>spring-aspects</artifactId>

                            <version>4.3.10.RELEASE</version>

                   </dependency>

                   <!-- jdbc相关, 数据源, 事务管理器等. -->

                   <dependency>

                            <groupId>org.springframework</groupId>

                            <artifactId>spring-jdbc</artifactId>

                            <version>4.3.10.RELEASE</version>

                   </dependency>

                   <!-- spring mvc相关 -->

                   <dependency>

                            <groupId>org.springframework</groupId>

                            <artifactId>spring-webmvc</artifactId>

                            <version>4.3.10.RELEASE</version>

                   </dependency>

                   <!-- servlet-api   -->

                   <dependency>

                            <groupId>javax.servlet</groupId>

                            <artifactId>servlet-api</artifactId>

                            <version>2.5</version>

                            <scope>provided</scope>

                   </dependency>

                   <!-- jsp-api   -->

文章来源:

Author:芸诺
link:http://yuuuo.com/?id=39