vsftpd
为什么要安装vsftpd
同一局域网内,没有网络也可以传输文件
不需要U盘
速度超快
安全稳定
概念:
ftp是一种文件传输协议,基于这种协议的有许多ftp软件。ftp软件分为服务器:vsftpd 端和客户端:ftp
ftp使用的端口默认有20,21。所以要保证这两个端口没有被防火墙拦截,而且没有被其他软件占用
20端口用来传输数据
21端口用来服务器与客户端之间传输指令
简单安装使用
我安装的是vsftpd
yum install vsftpd -y
启动vsftpd服务
service vsftpd start
查看服务器ip
ip a
现在只要在局域网内,就可以通过浏览器访问了
浏览器输入:ftp://ip
如果你访问不了,那么先临时将防火墙关闭
service iptables stop
service firewalld stop
可以看到这里有个文件夹:pub,这个pub在服务器的那个位置?
查看这个pub在位置
find / -name pub
可以看到位置在:/var/pub
以后我们就可以将需要共享的文件放入这里,其他电脑就可以下载了
禁止匿名用户访问,指定用户访问
以上是简单的配置,接下来就进行个性化配置
这样设置之后我们发现其它人只要在局域网内都可以访问,是不安全的,所以我们想指定用户去访问(输入用户名和密码)
大部分配置文件都在 /etc/vsftpd/vsftpd.conf
这个文件中
anonymous_enable=NO #禁止匿名用户访问
anon_upload_enable=NO #禁止匿名用户上传
anon_mkdir_write_enable=NO #取消匿名写入权限
local_enable=YES #允许本地用户登录,也就是说只要是服务器端的用户都可以访问(包含root和/home下的user)
write_enable=YES #给用户写入权限
这样设置之后可能使用用户和密码仍然访问不了,所以就需要了解 /etc/vsftpd
下面其他的两个配置文件的作用了
ftpusers #这里设置黑名单 加入这里的用户都无法访问
user_list #控制配置,这个既可以是黑名单,也可以是白名单
当vsftpd.conf中 userlist_enable=YES 时,为黑名单,加入这里的用户无法访问
当vsftpd.conf中 userlist_enable=NO 时,为白名单,加入这里的用户才能访问
所以我们需要在 vsftpd.conf
中将 userlist_enable
设为 NO
userlist_enable=NO
同时在 user_list
中加入可以访问的用户名
以及确保 ftpusers
中没需要访问的用户名
优化
开启被动模式
vsftpd默认是主动模式,也就是说数据连接的请求是由服务器发起的,由于防火墙的原因,这个连接请求可能被防火墙过滤掉了。所以才有了被动模式,被动模式中连接请求是有客户端发起的,而服务器端配置了允许固定范围ip的请求,这样保证了连接的正常。
在 vsftpd.conf
中添加
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30999
这样服务器端就算配置好了。但是还没有完,这个pasv模式还需要客户端发送一条命令
其实在这之前一直都没有涉及到真正的客户端,只是使用浏览器访问了一个地址而已,真正使用客户端,是使用命令 ftp 服务器ip
ftp ip #然后输入用户名,密码来访问
passive #开启被动模式
ftp客户端使用
vsftpd安装时默认就已经创建了一个匿名用户 ftp
,所以我们可以只输入用户名,不输入密码登录ftp
ftp ip #登录
ftp #输入用户名
当然了,在我们禁止匿名用户之后就需要使用设置的用户去登录了
ftp 用户名:密码@ip
help #查看所有命令
put #上传
get #下载
mkdir #创建文件夹
pwd #查看当前目录
ls #列出目录下的文件
在命令前面加上 l
表示在本机操作(local)
lcd #本机目录中移动
lpwd #本机当前目录
错误解决
如果用户登录后创建文件夹出现:550 Create directory operation failed错误
vim /etc/selinux/config
SELINUX=disabled
开心啊
老师让我讲linux上的vsftpd,我在archlinux上照着教程做,发现在浏览器中始终无法访问ftp服务器,都差点崩溃了。明明是照着教程做的,为什么就是不行呢。后来我终于放弃了,转到centos下面去弄,照着教程,慢慢配置,发现也没差啊,最后我差点怀疑是archlinux有问题。确实,它和大多数教程上的都不一样,安装完成之后就只有一个配置文件 /etc/vsftpd.conf
你说气不气。
不过坚持的人总有回报,今天google到了这个错误的原因,那就是这是archlinux上的一个bug,所以不能怪我咯
错误如下:
500 OOPS: 421 Service not available, remote server has closed connection
解决办法:在 /etc/vsftpd.conf
中添加一行配置
seccomp_sandbox=NO
然后重启一下vsftp服务就好了
sudo systemctl restart vsftpd
那么什么是seccomp?维基百科这么解释的:
seccomp(安全计算模式的简称)是Linux内核的计算机安全功能。它被集成到2.6.12版本的主Linux内核分支中,该分支于2005年3月8日发布1。
而vsftpd在版本3.0.0之后就开始使用它了,这就是bug产生的原因?
学这个vsftpd的过程真的相当艰难
我想如果我一开始就在centos上面来安装的话,那么就不会有这么多的问题了
首先我觉得很疑惑的是ftp不是一个协议吗,为什么我电脑上输入ftp竟然进入了交互模式?
ftp同时也是ftp传输协议的一个客户端,取的名字相同而已
然后是我明明安装的是vsftpd为什么可以启动ftpd这个服务?它和vsftpd有什么关系
安装gnome时默认就安装了一个组件 inetutils ,而它就包含了这个tftp,没错,它叫tftp也是一个ftp的server
然后就是遇到了那个让人脑壳疼的bug
疑问?
1.作为日常使用,你觉得有必要设置个账号密码登录吗?
我觉得是没这个必要的,怎么简单怎么来
2.如果你需要给别人分享一个很大的软件,你觉得有必要将那个软件复制到默认的 /ser/ftp
或者 /var/ftp
下吗?
没这个必要,需要分享那个软件,就将那个软件所在的目录设置为别人访问的目录就好了
设置也很简单,修改 vsftpd.conf
文件
anon_root=要分享软件所在目录路径
例如我要分享我家目录下的Downloads文件夹下的东西,就这么设置
anon_root=/home/narcissus/Downloads/
设置好了之后启动vsftpd服务
sudo systemctl start vsftpd #archlinux命令
或者
sudo service vsftpd start #centos命令
最后我们来看一下,它到底能有多快,同一局域网下的测试,下载一个2.7GB的文件,平均速度为100M/s