FTP服务搭建
前言
-
FTP服务器是在互联网上提供文件存储和访问服务的计算机,它们按照FTP协议提供服务;
-
FTP作用:Internet上用来传送文件的协议,常见于FTP服务器程序;
-
Linux:FTP、LFTP
Window:FileZilla
服务端口
tcp:20/21 (20端口用于传输数据;21端口用于建立连接)
工作模式
主动模式
客户端用一个大于1024的端口(假设为1025)请求服务器的21号端口进行连接,连接成功后客户端会预先开启一个大于1024(假设为1026)端口等待服务器来发送数据。当服务器得知客户端开启了一个大于1024的端口等待传输数据时,那么服务器就会用自身的20号端口来连接客户端第二次开放的端口(1026)建立数据传输通道,这称为主动模式。
被动模式
客户端用一个大于1024的端口(假设为1025)请求服务器的21号端口进行连接,连接成功后服务器会预先开启一个大于1024(假设为1026)端口等待客户端来发送数据,这称为被动模式。
区分被动模式还是主动模式,主要是看服务器是被动还是主动。
一般情况下默认是被动模式。
连接服务器的用户分类
- 本地用户:服务器上原本就存在的用户
- 匿名用户:匿名用户实际上有一个与之对应的系统用户,匿名用户映射为ftp(即ftp这个用户默认是匿名用户所对应的用户,如果匿名用户在服务器上新建文件,则默认该文件的所有者为ftp)
- 虚拟用户
具体操作
-
操作环境:linux
server:192.168.23.128
client:192.168.23.129
-
服务器端:
-
查看软件包是否安装
[root@server ~]# rpm -qa | grep vsftpd [root@server ~]# yum install -y vsftpd # 查看软件安装产生的主要文件 [root@server ~]# rpm -ql vsftpd /etc/vsftpd #配置文件的目录 /etc/vsftpd/ftpusers #访问控制 /etc/vsftpd/user_list #访问控制 /etc/vsftpd/vsftpd.conf #配置文件 /var/ftp #匿名用户的家目录 /var/ftp/pub #默认上传下载的目录
-
启动服务
[root@server ~]# systemctl start vsftpd [root@server ~]# systemctl status vsftpd [root@server ~]# netstat -tulnp | grep ftp tcp6 0 0 :::21 :::* LISTEN 1450/vsftpd
-
提供可被下载的文件
[root@server ~]# touch /var/ftp/pub/test.txt [root@server ~]# ll /var/ftp/pub 总用量 0 -rw-r--r-- 1 root root 0 3月 9 20:42 test.txt [root@server ~]# echo "这是个测试" >> /var/ftp/pub/test.txt #注意:ftp根目录权限不可以超过755
-
-
客户端
-
安装软件包并测试
[root@client ~]# yum install -y lftp [root@client ~]# lftp 192.168.23.128 lftp 192.168.23.128:~> cd pub cd 成功, 当前目录=/pub lftp 192.168.23.128:/pub> ls -rw-r--r-- 1 0 0 0 Mar 09 12:42 test.txt lftp 192.168.23.128:/pub> cat test.txt 这是个测试 16 bytes transferred lftp 192.168.23.128:/pub>
-
常规操作测试
#客户端下载文件到本地的当前工作目录 lftp 192.168.23.128:/pub> get test.txt 16 bytes transferred [root@client ~]# ls anaconda-ks.cfg test.txt #客户端下载文件到本地的指定的工作目录 lftp 192.168.23.128:/pub> get test.txt -o /opt 601 bytes transferred #客户端上载文件到服务器的pub目录-->/var/ftp/pub lftp 192.168.23.128:/pub> put /root/a.txt 5 bytes transferred #客户端上载文件到服务器的指定目录-->/var/ftp/pub/soft/ lftp 192.168.23.128:/pub> put /root/a.txt -o /pub/soft/ 5 bytes transferred #客户端在服务器上创建目录 lftp 192.168.23.128:/pub> mkdir soft mkdir 成功, 建立 `soft' #客户端在服务器上删除文件目录 lftp 192.168.23.128:/pub> rm -rf soft rm ok, 2 files removed #客户端下载目录到本地的当前工作目录 lftp 192.168.23.128:/pub> mirror test 语法:mirror rdir #客户端上传目录到服务器的pub目录 lftp 192.168.23.128:/pub> mirror -R /tmp 语法:mirror -R ldir
-
一些讲解
- 配置文件
[root@server ~]# vim /etc/vsftpd/vsftpd.conf
----------------匿名用户----------------------------------
anonymous_enable=YES 允许匿名用户访问ftp
anon_upload_enable=YES 允许匿名用户上传文件
anon_mkdir_write_enable=YES 允许匿名用户创建文件
anon_other_write_enable=YES 允许匿名用户删除文件
当匿名用户上传文件的时候可以改变其上传文件的所有者
chown_uploads=YES
chown_username=whoever
anon_umask=077 匿名用户上传文件的umask,设置为077 创建文件的默认权限是600,创建目录的的默认权限是700
-----------------本地用户----------------------------------
local_enable=YES 允许本地用户访问ftp
write_enable=YES 允许本地用户上传文件
local_umask=022 本地用户上传文件的umask
-----------------访问控制--------------------------------------
1.支持pam认证
pam_service_name=vsftpd pam认证的名字
黑名单 在清单的用户不允许访问ftp服务
[root@server ~]# vim /etc/vsftpd/ftpusers
user1
2.所有在/etc/vsftpd/user_list文件内的用户是否允许访问ftp服务
白名单 在清单内的用户可以访问
userlist_enable=YES 启用文件控制
userlist_deny=NO 文件内的用户能访问ftp
黑名单 在清单内的用户不可以访问
[root@server ~]# vim /etc/vsftpd/ftpusers
user1
2.所有在/etc/vsftpd/user_list文件内的用户是否允许访问ftp服务
白名单 在清单内的用户可以访问
userlist_enable=YES 启用文件控制
userlist_deny=NO 文件内的用户能访问ftp
黑名单 在清单内的用户不可以访问
userlist_enable=YES