FTP协议1.协议实现文件传输的实例分析及解决办法!

目录

一、FTP 合约1.FTP 合约介绍

与大多数 Internet 服务一样,FTP 也是一个 c/s 框架。用户通过支持 FTP 合约的客户端程序连接到远程主机上的 FTP 服务器程序。用户通过客户端计算机程序向服务器程序发出命令,服务器程序执行用户发出的命令并将执行结果返回给客户端计算机。例如,如果用户发出命令要求服务器向用户发送文件的副本,服务器将响应该命令并将指定的文件发送到用户的机器。客户端程序代表用户接收该文件,并将其存储在用户目录中。

2.FTP文件传输过程

默认情况下,FTP 服务器使用 TCP 合约的 20、21 端口与客户端通信

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服务(最大权限)。

一系列关键变化的剖析

anonymous_enable=YES

启用匿名用户访问(默认启用)

write_enable=YES

开启服务器写权限(上传必须开启,默认开启)

anon_umansk=022

设置匿名用户上传数据的权限网段(反网段)

anon_upload_enable=YES

允许匿名用户上传文件(默认为注释,需要取消注释)

anon_mkdir_write_enable=YES

允许匿名用户创建(上传)目录(默认注释,需取消注释)

anon_other_write_enable=YES

允许删除、重命名、覆盖等操作(需添加)

//修改配置文件,这里标注了行号,只展示关键配置的字段
 [root@localhost vsftpd]#vim /etc/vsftpd/vsftpd.conf
 12 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_dir
 16 local_enable=YES
 17 #
 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=022
 24 anon_umask=022       --设置匿名用户所上传数据的权限掩码(反掩码)
 25 #
 26 # Uncomment this to allow the anonymous FTP user to upload files. This only
 27 # has an effect if the above global write enable is activated. Also, you wil    l
 28 # 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_access
 30 anon_upload_enable=YES     --允许匿名用户上传文件(默认已注释,需取消注释)
 31 #
 32 # Uncomment this if you want the anonymous FTP user to be able to create
 33 # new directories.
 34 anon_mkdir_write_enable=YES   --允许匿名用户创建(上传)目录(默认已注释,需取消注释)
 35 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

windows客户端:在桌面新建Test文件夹并创建hello文件

5.使用windows客户端测试访问之前配置的FTP服务器,完成文件互传。

进入getftptest后,文件夹中获取到服务器的ftptest

输入puthello.txt后,服务端获取hello.txt文件

示例 2:本地用户访问

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

1.安装等操作(同例1)

2.更改个人资料

一系列关键变化的剖析

local_enable=YES

启用本地用户(默认开启)

anonymous_enable=否

关闭匿名用户访问(需要更改)

write_enable=YES

开启服务器写权限(上传必须开启,默认开启)

local_umask=077

可以设置只有host用户(即访问ftp服务器的本地用户)才有上传文件的权限(反网段)(需改)

chroot_local_user=YES

绑定用户主机目录的访问权限(为保证安全,严禁切换到其他目录,需添加)

allow_writeable_chroot=YES

允许受限的 homeowner 目录有写权限(需要添加)

//修改配置文件,这里标注了行号,只展示关键配置的字段
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
 12 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_dir
 16 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,并在其home目录下创建一个文件,用于测试本地用户的客户端访问

[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 客户端本地用户访问传输文件

进入getlocaltest后,文件夹中得到zhangsan家目录的localtest文件

进入puthello.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用户列表文件中的用户访问

(默认为YESc ftp下载文件到本地,用于黑名单c ftp下载文件到本地,禁用)

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 网站程序 FTP协议1.协议实现文件传输的实例分析及解决办法! https://www.wkzy.net/game/8343.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务