文章目录

  • 一、FTP协议
  • 二、Linux系统配置FTP协议实现文件传输
    • 实例1:匿名用户
  • 实例2:本地用户访问

一、FTP协议

1.FTP协议简介
与大多数 Internet服务一样,FTP也是一个c/s架构。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。

2.FTP文件传输过程
FTP服务器默认使用TCP协议的20、21端口与客户端进行通信

  • 20端口用于建立数据连接,并传输文件数据。
  • 21端口用于建立控制连接,并传输FTP控制命令。
    FTP文件传输的两种模式

主动模式

  • 客户端先与服务器建立TCP连接
  • 客户端先向服务器发送FTP控制指令
  • 服务器主动从20号端口发送数据给客户端

被动模式

  • 客户端先与服务器建立TCP连接
  • 客户端先向服务器发送FTP控制指令
  • 服务器先等客户端开放一个端口连接,再通过端口将数据传输给客户端

二、Linux系统配置FTP协议实现文件传输

实例1:匿名用户

1.首先安装在Linux系统中安装ftp软件,找到配置文件并备份。

/安装vsftpd
[root@localhost ~]#yum install -y vsftpd//备份配置文件
[root@localhost ~]#cd /etc/vsftpd
[root@localhost vsftpd]#ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[root@localhost vsftpd]#cp vsftpd.conf vsftpd.conf.bak

2.修改配置文件使匿名用户访问ftp服务(最大权限)。

//修改配置文件,这里标注了行号,只展示关键配置的字段[root@localhost vsftpd]#vim /etc/vsftpd/vsftpd.conf12 anonymous_enable=YES    -- 开启匿名用户访问(默认已开启)13 #14 # Uncomment this to allow local users to log in.15 # When SELinux is enforcing check for SE bool ftp_home_dir16 local_enable=YES17 #18 # Uncomment this to enable any form of FTP write command.19 write_enable=YES      --开放服务器的写权限(若要上传,必须开启,默认已开启)20 #21 # Default umask for local users is 077. You may wish to change this to 022,22 # if your users expect that (022 is used by most other ftpd's)23 local_umask=02224 anon_umask=022       --设置匿名用户所上传数据的权限掩码(反掩码)25 #26 # Uncomment this to allow the anonymous FTP user to upload files. This only27 # has an effect if the above global write enable is activated. Also, you wil    l28 # obviously need to create a directory writable by the FTP user.29 # When SELinux is enforcing check for SE bool allow_ftpd_anon_write, allow_f    tpd_full_access30 anon_upload_enable=YES     --允许匿名用户上传文件(默认已注释,需取消注释)31 #32 # Uncomment this if you want the anonymous FTP user to be able to create33 # new directories.34 anon_mkdir_write_enable=YES   --允许匿名用户创建(上传)目录(默认已注释,需取消注释)35 anon_other_write_enable=YES   --允许删除、重命名、覆盖等操作(需添加)
关键字段解析
anonymous_enable=YES       //开启匿名用户访问(默认已开启)
write_enable=YES           //开放服务器的写权限(若要上传,必须开启,默认已开启)
anon_umansk=022                //设置匿名用户所上传数据的权限掩码(反掩码)
anon_upload_enable=YES     //允许匿名用户上传文件(默认已注释,需取消注释)
anon_mkdir_write_enable=YES    //允许匿名用户创建(上传)目录(默认已注释,需取消注释)
anon_other_write_enable=YES    //允许删除、重命名、覆盖等操作(需添加)

3.赋予匿名用户目录最高权限,关闭防火墙和selinux,开启服务并检验。

匿名用户访问ftp服务器的默认目录为/var/ftp,此目录下自带一个pub目录可以放用于传输的文件(也可以自行创建),需要赋予权限才能实现文件的传输。

[root@localhost vsftpd]#cd /var/ftp/
[root@localhost ftp]#ls
pub
[root@localhost ftp]#chmod 777 pub
[root@localhost ftp]#systemctl stop firewalld
[root@localhost ftp]#setenforce 0[root@localhost ftp]#systemctl start vsftpd[root@localhost ftp]#ss -nltp |grep ftp
LISTEN     0      32        [::]:21                    [::]:*                   users:(("vsftpd",pid=59399,fd=4))

4.在ftp服务器和windows客户端测试目录下新建文件用于测试。
linux系统ftp服务端:切换到pub目录,新建ftptest文件

[root@localhost ~]#cd /var/ftp/pub/
[root@localhost pub]#touch ftptest

5.使用windows客户端测试访问上一个配置的FTP服务器,完成文件相互传输。

5.使用windows客户端测试访问上一个配置的FTP服务器,完成文件相互传输。


输入get ftptest后,文件夹里获取到了服务端的ftptest

输入put hello.txt后,服务端获取到了hello.txt文件

实例2:本地用户访问

设置本地用户验证访问ftp,并禁止切换到ftp以外的目录(客户端默认登录的根目录为本地用户的家目录)

local_enable=YES    启用本地用户(默认已开启)
anonymous_enable=NO    关闭匿名用户访问(需要修改)
write_enable=YES   开放服务器的写权限(若要上传,必须开启,默认已开启)
local_umask=077    可设置仅宿主用户(即访问ftp服务器的本地用户)拥有被上传的文件的权限(反掩码)(需要修改)
chroot_local_user=YES  将访问禁锢在用户的宿主目录中(保证安全性,禁止切换到其他目录,需要添加)
allow_writeable_chroot=YES 允许被限制的用户主目录具有写权限(需要添加)
//修改配置文件,这里标注了行号,只展示关键配置的字段
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf12 anonymous_enable=NO     --关闭匿名用户访问13 #14 # Uncomment this to allow local users to log in.15 # When SELinux is enforcing check for SE bool ftp_home_dir16 local_enable=YES     --启用本地用户17 #18 # Uncomment this to enable any form of FTP write command.19 write_enable=YES        --开放服务器的写权限(若要上传,必须开启,默认已开启)20 chroot_local_user=YES       --将访问禁锢在用户的宿主目录中(保证安全性,禁止切换到其他目录,需要添加)21 allow_writeable_chroot=YES    --允许被限制的用户主目录具有写权限(需要添加)22 #23 # Default umask for local users is 077. You may wish to change this to 022,24 # if your users expect that (022 is used by most other ftpd's)25 local_umask=077    --可设置仅宿主用户(即访问ftp服务器的本地用户)拥有被上传的文件的权限(反掩码)(需要修改)

3.重启服务使修改过的配置生效,关闭防火墙和selinux(实验1中已经关闭了防火墙)

[root@localhost ~]#systemctl restart vsftpd

4.新建本地用户zhangsan,并在其家目录创建文件,用于测试客户端通过本地用户访问

[root@localhost ~]#useradd zhangsan
[root@localhost ~]#passwd zhangsan
更改用户 zhangsan 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]#cd /home/zhangsan
[root@localhost zhangsan]#touch localtest
[root@localhost zhangsan]#ls
localtest

5.windows客户端本地用户访问,实现传输文件

输入get localtest后,文件夹里获取到了zhangsan家目录的localtest文件

输入put hello.txt后,服务端zhangsan家目录获取到了hello.txt文件

修改配置:
修改匿名用户、本地用户登录的默认根目录
anon_root=/var/.../...            anon_root 针对匿名用户
local_root=/var/.../...             local_root 针对系统用户使用user_list 用户列表文件限制ftp访问的用户
vim /etc/vsftpd/user_list
添加用户名(如zhangsan)userlist_enable=YES           设置黑名单,不允许user_list用户列表文件中的用户访问
userlist_deny=NO                设置白名单,仅允许user_list用户列表文件中的用户访问(默认为YES,为黑名单,禁用)

Linux利用FTP服务传输文件(山有木兮木有枝,心悦君兮君不知)相关推荐

  1. 利用SecureCRT在linux与Windows之间传输文件

    From: http://blog.csdn.net/sungblog/article/details/7274716 利用SecureCRT在linux与Windows之间传输文件         ...

  2. LinuxProbe 0x14 虚拟网站主机功能(基于端口)、Vsftpd服务传输文件、TFTP简单文件传输协议

    虚拟网站主机功能 基于端口号 基于端口号的虚拟主机功能可以让用户通过指定的端口号来访问服务器上的网站资源.在使用Apache配置虚拟网站主机功能时,基于端口号的配置方式是最复杂的. 因此我们不仅要考虑 ...

  3. linux下ftp服务阶段实验(3)

    linux下ftp服务阶段实验(3) 3.  (1)匿名用户的FTP根目录是/ftp,只能下载,下载速度为100Kbps     (2)本地用户hello的FTP根目录为/hello,可以上传下载,家 ...

  4. 【转】Linux开启FTP服务和修改FTP密码

    这里写自定义目录标题 原文链接 Linux开启FTP服务和修改FTP密码 2021-03-18 17:43:08 一.Linux开启FTP服务 首先服务器要安装ftp软件,查看是否已经安装ftp软件下 ...

  5. Linux开启FTP服务和修改FTP密码

    一.Linux开启FTP服务 1. 首先服务器要安装ftp软件,查看是否已经安装ftp软件下: [root@VM_0_2_centos ~]# which vsftpd 若未安装,则安装并启动. 1. ...

  6. 《探错笔记》之Linux的FTP服务

    Linux下FTP服务 FTP服务的安装和配置 FTP服务的安装和开启 添加用户配置权限和指定目录 FTP的配置详解 常见问题 启动vsftpd服务,报错:Job for vsftpd.service ...

  7. 配置scp在Linux或Unix之间传输文件无需密码

    如何配置scp文件传输 实现scp在Linux或Unix之间传输文件,首先需要配置好scp,默认scp要使用密码的,通过以下配置可以不用输入密码,就完成Linux或Unix之间的文件传输 假设有2台L ...

  8. linux传输文件scp自动接密码,配置scp在Linux或Unix之间传输文件无需密码

    如何配置scp文件传输 实现scp在Linux或Unix之间传输文件,首先需要配置好scp,默认scp要使用密码的,通过以下配置可以不用输入密码,就完成Linux或Unix之间的文件传输 假设有2台L ...

  9. linux ftp 查找文件,Linux shell ftp命令根据文件日期下载文件的方法

    需求:ftp获取远程数据的文件,根据文件的创建时间点下载文件. 可以自行扩展根据文件的大小等其他需求. 知识点总结: 1.获取文件的时间: ls -lrt|awk '{print $6" & ...

最新文章

  1. 理解JVM如何使用Windows和Linux上的本机内存
  2. 如何解决数据倾斜问题?
  3. 创建python的虚拟环境(图文教程),并使用。
  4. virtualbox安装android6.0并设置分辨率为1920x1080x32
  5. jquery ajax php中 css样式不显示,Chrome浏览器在Ajax同步调用之前不会显示Jquery的动态css Propery更改...
  6. esb接口测试_接口测试用例.docx
  7. 自定义可扩展叠加头部的下拉控件
  8. error page怎么解决_Firefox 登录feedly时出现PR_CONNECT_RESET_ERROR的解决方案
  9. 经典SQL语句大全(1)
  10. QQ客户端聊天窗口输入/自动变成表情 - 解决方案
  11. dell emc isilon环境 Windows共享文件下生成.snapshot无法删除
  12. Nginx的优点和缺点
  13. 468、Java框架122 -【Spring + SpringMVC + MyBatis - JSON】 2021.01.27
  14. ERR_NETWORK_CHANGED
  15. Python实现“维基百科六度分隔理论“之基础爬虫
  16. JAVA程序员常用访问网址
  17. 计算机win10内存,win10系统电脑可用内存异常的解决方法
  18. win10搜索功能不能用解决方案
  19. 陈岷愿做中华的守护者
  20. C语言实现数据结构——链队列

热门文章

  1. OSChina 周一乱弹 ——妹子知道去哪儿找男友了么
  2. LVGL笔记(6)-电子相册使用手势切换图片(windows仿真)
  3. 【PEST++】02 新安江模型参数自动率定
  4. 教妹学Java:什么是 Java?
  5. python中logger_Python实现Logger打印功能的方法详解
  6. 零点工作室暑假集训(AtCoder--ABC310)
  7. 【经验总结】手机微信测试网页清除缓存的方法
  8. 【WSN通信】基于Matlab LEACH融合树多跳传输协议【含Matlab源码 1897期】
  9. Oracle sql 去除重复 和 字段去除空格
  10. java中char到底占几个字节的问题