一、FTP基础
软件包: vsftpd
FTP端口: 控制端口 command 21/tcp
配置文件: /etc/vsftpd/vsftpd.conf
ftp主动模式:
ftp主动模式:客户端开启一个端口N(>1023)向服务端的21端口,建立连接,同时开启一个N+1,告诉服务端,我监听的是N+1端口,服务端接到请求之后,用自己的20端口连接到客户端的N+1端口,进行传输
ftp被动模式:
ftp被动模式:客户端同时开启两个端口(1024,1025),一个端口(1024)跟服务端的21端口建立连接,并请求,大哥,我连上了,你再开一个端口呗。服务端接到请求之后,随机会开启一个端口(1027)并告诉客户端我开启的是1027端口,客户端用另一个端口(1025)与服务端的(1027)端口进行连接,传输数据
二、vsftpd默认配置
FTP Server(服务端)
[root@youngfit ~]# yum -y install vsftpd //下载ftp服务
[root@youngfit ~]# systemctl start vsftpd //启动ftp服务
==centos7==
[root@iZwz9f17um10wphrf38ni8Z ~]# touch /var/ftp/test.txt
[root@iZwz9f17um10wphrf38ni8Z ~]# systemctl enable vsftpd //将ftp服务设置为开机启动
默认firewalld/SELinux已关闭,如果未关闭:
[root@aliyun ~]# systemctl stop firewalld
[root@aliyun ~]# setenforce 0
FTP默认共享目录:/var/ftp
FTP Clinet(客户端):
lftp命令
[root@youngfit ~]# yum -y install lftp
[root@youngfit ~]# vim /etc/hosts
10.18.40.100 youngfit.com
get命令(下载,首先要开启下载功能)
[root@youngfit ~]# lftp youngfit.com
lftp youngfit.com:~> ls
drwxr-xr-x 2 0 0 4096 Mar 31 2016 pub
-rw-r--r-- 1 0 0 0 Nov 22 03:53 test.txt
lftp youngfit.com:/> get test.txt //从服务端上下载test.txt文件
put命令(上传命令,上传之前请在服务端进行配置,将上传功能打开)
[root@youngfit ~]# lftp 10.18.40.100
lftp 10.18.40.100:/pub> put /home/upload.txt //上传文件
[root@youngfit ~]# lftp 10.18.40.100
lftp 10.18.40.100:/pub> put -r /home //上传目录及下面的子目录
wget(下载命令,下载之前请在服务端进行配置,将下载功能打开)
服务端:
[root@ftp ftp]# ls /var/ftp/
pub test test.txt
客户端:
[root@youngfit ~]# wget --help |less
[root@youngfit ~]# wget ftp://10.18.40.100/test.txt
[root@youngfit ~]# wget ftp://10.18.40.100/test.txt -P /tmp/ //-P参数 下载到指定路径
[root@youngfit ~]# wget ftp://10.18.40.100/test.txt -O /tmp/a.sh //-O 参数,下载到指定路径并修改名称
[root@youngfit ~]# wget -m ftp://youngfit.com/test //-m 参数,将目录一并下载
[root@youngfit ~]# lftp alice@youngfit.com //默认看到的是alice家目录下的内容
Password:
lftp alice@youngfit.com:~> ls
-rw-r--r-- 1 0 0 1523 Nov 22 04:25 alice.txt
lftp alice@youngfit.com:~> pwd
ftp://alice@youngfit.com/%2Fhome/alice
lftp alice@youngfit.com:~> put /etc/hosts
默认使用匿名用户 ftp访问,HOME(家目录)为/var/ftp,默认仅能下载文件
系统用户: alice,HOME /home/alice,默认可下载及上传
三、基本配置,例如实现访问控制
注意: 指令中的空格,指令错误,指令重复
!!!!!这些功能都是服务端控制,所以修改的是服务端的配置文件!
[root@fanhua ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES //是否允许匿名用户登录ftp YES为允许 NO为拒绝
local_enable=YES //是否允许本地用户登录(比如alice)
write_enable=YES //是否允许写(全局)
local_umask=022 //控制本地用户上传文件的默认权限,umask表示要减掉的权限(666-)
anon_umask=022 //控制匿名用户上传文件的默认权限
download_enable=YES //是否允许下载文件
anon_upload_enable=YES //允许上传文件
anon_mkdir_write_enable=YES //允许上传目录
anon_max_rate=500000 //匿名用户限速
local_max_rate=80000 //本地用户限速
max_clients=500 //ftp最大连接数
max_per_ip=2 //单个IP最大连接数,线程数
服务器关闭被动模式:
#vim /etc/vsftpd/vsftpd.conf
pasv_enable=NO
配置测试(每次加入新配置,都需要重启ftp服务)