VSFTPD基础知识\安装\基本使用
一、 什么是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 上传nginx到linux. 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配置的问题.需要修改seLinux对VSFTPD服务的管理.
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协议, 会影响vsftpd对linux操作系统的权限管理.
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