一、安装VSFTP
在开源操作系统中常用的FTPD套件主要还有vsftp、ProFTPD、PureFTPd和wuftpd等。
vsftpd 是"very secure FTP daemon"的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开发源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。
vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。
附vsftp的wiki:
https://en.wikipedia.org/wiki/Vsftpd
1
2
|
# yum -y install vsftpd ##直接yum安装
# systemctl start vsftpd.service ##启动vsftp服务器
|
二、配置VSFTP
vsftpd提供了standalone和inetd(inetd或xinetd)两种运行模式。standalone一次性启动,运行期间一直驻留在内存中,优点是对接入信号反应快,缺点是损耗了一定的系统资源,经常应用于对实时反应要求较高的专业FTP服务器;inetd恰恰相反,由于只在外部连接发送请求时才调用FTP进程,因此不适合应用在同时连接数量较多的系统。此外,inetd模式不占用系统资源。
1
|
[root@localhost ~]
# vi /etc/xinetd.d/vsftpd
|
wait = 0 表示设备是激活的,它正在使用标准的TCP Sockets。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
[root@localhost ~]
# cat /etc/vsftpd/vsftpd.conf |grep ^[^#] ##查看其默认配置
anonymous_enable=YES
##允许匿名账号登录
local_enable=YES
##允许本地用户(即linux系统中的用户帐号)
write_enable=YES
##允许本地用户对FTP服务器文件具有写权限
local_umask=022
##设置本地用户默认文件掩码022
dirmessage_enable=YES
##激活目录欢迎信息功能
xferlog_enable=YES
##激活上传、下载日志文件,默认在/var/log/vsftpd.log下
connect_from_port_20=YES
##启用FTP数据端口的连接请求
xferlog_std_format=YES
##以标准xferlog的格式书写传输日志文件
listen=NO
##关闭监听(开启vsftpd将以独立模式运行,由vsftpd自己监听和处理 IPv4端口的连接请求)
listen_ipv6=YES
##开启IPv6端口监听
pam_service_name=vsftpd
##设置PAM外挂模块提供的认证服务所使用的配置文件名, 即/etc/pam.d/vsftpd文件
userlist_enable=YES
###允许ftpusers文件中的用户登录FTP服务器
tcp_wrappers=YES
##使用tcp_wrappers作为主机访问控制方式(tcp_wrappers
可以实现linux系统中网络服务的基于主机地址的访问控制)
|
三、关闭SELinux和防火墙
a、临时关闭(不用重启机器):
1
2
|
# setenforce 0 ##设置SELinux 成为permissive模式 (关闭SELinux)
# setenforce 1 ##设置SELinux 成为enforcing模式 (开启SELinux)
|
b、修改配置文件需要重启机器:
1
|
# vi /etc/selinux/config
|
将SELINUX=enforcing 改为SELINUX=disabled(需重启机器)
c、可自己做策略开放相应端口,这里我直接关闭:
1
2
|
# systemctl status firewalld.service ##查看防火墙状态
# systemctl stop firewalld.service ##关闭防火墙
|
四、客户端登录验证
Ubuntu登录:
Windows登录:
网页登录:
五、VSFTP应用
默认的,ftp的根目录在服务器的/var/ftp下.
1
|
[root@localhost ~]
# echo "abcd" >/var/ftp/123.txt
|
1.使用help命令查看帮助
2.使用put命令上传,get命令下载(账号:anonymous,密码为空)
①提示找不到文件,原因:该文件没有在当前目录下,使用lcd命令查看
②将文件移动至当前目录下进行上传操作,提示550,原因:没有开放权限,不能上传
③从ftp服务器下载文件,提示226,下载成功
3.更改vsftp.conf的设置,使其允许匿名用户下载:
1
2
3
4
5
6
7
8
9
|
# vi /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES
##允许匿名用户上传文件(须将全局的write_enable=YES,默认YES)
anon_mkdir_write_enable=YES
##允许匿名用户创建目录
use_localtime=YES
##使用本地时(自行添加)
anon_umask=022
##设置匿名用户的掩码(自行添加)
anon_other_write_enable=YES
##允许匿名用户删除和重命名权限(自行添加)
# mkdir /var/ftp/upload ##在/var/ftp下新建一个目录来实现匿名用户上传
# chmod -R 777 /var/ftp/upload/ ##赋予其权限
# systemctl restart vsftpd.service ##重启vsftp
|
状态码:
230-----登录成功
200-----命令执行成功
150-----文件状态正常,开启数据连接端口
250-----目录切换操作完成
226-----关闭数据连接端口,请求的文件操作成功
mkdir------>创建目录文件
delete------>删除文件
rm------>删除目录文件
附1:SFTP
SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议,可以为传输文件提供一种安全的加密方法。SFTP是SSH的一部份,在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。
SFTP连接方法跟FTP连接方法相同。
附2:Ubuntu下安装vsftp的wiki:
1
|
http:
//wiki
.ubuntu.com.cn
/Vsftpd
|
附3:vsftpd配置详解
本文转自 结束的伤感 51CTO博客,原文链接:http://blog.51cto.com/wangzhijian/1692834