FTP文件传输服务

目录

工作原理 :

两种传输模式:

        文本模式:

        二进制模式:

FTP有两种模式:

     主动模式:

客户端使用随即端口与服务器的21好端口建立控制连接,服务器端主动的使用20号端口向客户端的随机端口建立据连接,经过三次握手完成

   被动模式:

三种用户登陆方式

普通本地用户模式

虚拟用户模式

匿名用户模式:

关于ftp的测试(代码模块)


ftp是一种文件传输协议:用来上传和下载,实现远程共享文件,和统一管理文件

工作原理

用于互联网上的控制文件的双向传输 是一个应用程序。工作在TCP/IP协议簇的,其传输协议是TCP协议提高文件传输的共享性和可靠性,使用C/S模式的工作方式连接时同时处理服务器和客户端的连接命令和数据传输,FTp将命令和数据分开传输,提高传输效率

两种传输模式:

        文本模式

        ASCII模式美国信息交换信息标准码 这种模式传输文件使用ASCII标准字符序列,一般只用于传输文件文件的传输

        二进制模式

又称为Binary这种模式不会转换文件中的字符序列,跟适合传输程序图片等非文本文件

Vsftpd可支持最大15000并发连接数

FTP有两种模式:

     主动模式
客户端使用随即端口与服务器的21好端口建立控制连接,服务器端主动的使用20号端口向客户端的随机端口建立据连接,经过三次握手完成

   被动模式

        客户端使用随即端口向服务器的21号端口建立管理连接,服务器使用建立好的管理通道向客户端发送一个随机的端口号,然后客户端随机的向服务器端发过来的端口经过三次握手后建立好这个数据连接

        使用两个端口:分别时控制端口和数据端口,控制端口使用21,数据端口主动模式先是20.被动模式下是一个随机的端口号

开启主动模式

connect_from_port_20=no   允许服务器主动模式(从20号端口连接)

pasv_enable=NO    ###关闭被动模式

Linux客户机上关闭防火墙执行 passive命令

被动模式需要在主配置文件中打开  默认就是被动模式:

pasv_enable=YES  ##开启被动模式,使用被动模式连接,pasv请求

Pasv_min_port=* ##设置被动模式下服务器随即端口的范围的最小值

Pasv_max_port=*  ##设置被动模式下服务器随机端口的范围的最大值

三种用户登陆方式

普通本地用户模式

Local_enable=YES   ###允许本地用户访问

Write_enable=YES  ##本地用户的科协权限

Local_umask=022    ##本地用户上传文件的权限减去这个umask值

Userlist_deny=YES  ##是否禁用user_list列表中的用户账号  若启用必须等于===NO

Userlist_enable=YES  ##是否启用user_list列表中的用户账号

黑名单和白名单:ftpusers黑名单文件,存在该文件中的用户无法登陆

  User_list 白名单文件,如果设置

userlist_deny=NO  Userlist_enable=YES则只允许该列表中的用户登录

  若一个用户同时存在两个文件中,黑名单生效,该用户不能登陆

虚拟用户模式

使用虚拟用户可以将用户的登录名和密码不相同,提高服务器的安全性

第一步:创建文本格式的用户名和密码  奇数行为用户名,偶数行为密码

第二步:建立虚拟FTP用户的数据库文件

第三步:添加虚拟用户的映射账号

第三步:为虚拟用户建立PAM认证文件

第四步:修改配置文件添加虚拟用户的支持

 Local_enable=YES  #需要映射本地用户所以启用

 Write_enable=YES  ##启用上传写入权限

  Guest_enable=YES  ##开启虚拟用户

Anon_umask=022 ### 指定上次权限掩码

 Guest_username=*  ###指定映射的本地系统用户

Pam_serrivce_name=vsftpd.vu  ##指定新的pam认证文件

User_config_dir=/*/*/*/   ###为不同的虚拟用户设置不同的权限

匿名用户模式:

anonymous_enabled=YES     ##允许匿名访问模式。默认开的

Anonumask=022     ##匿名用户上传文件或目录权限,所上传的文件或目录的权限减去022文件默认权限是644 目录的755

Anon_upload_enable=YES       ##允许匿名用户上传文件

Anon_mkdir_write_enable=YES         ##允许匿名用户创建目录

Anon_other_ write_enable=YES       ##允许匿名用户有其他的写入权限 (删除或者修改)

关于ftp的测试(代码模块)

一:FTP服务

1:安装

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# rpm -ivh /media/cdrom/Packages/vsftpd-3.0.2-21.el7.x86_64.rpm

[root@localhost ~]# systemctl start vsftpd

打开一个客户端,安装ftp客户端软件,并访问测试

[root@localhost ~]# rpm -ivh /media/cdrom/Packages/ftp-0.17-67.el7.x86_64.rpm

[root@localhost ~]# ftp 192.168.10.101

2:查看vsftpd的配置文件

[root@localhost ~]# grep -v "#" /etc/vsftpd/vsftpd.conf

anonymous_enable=YES

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=NO

listen_ipv6=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

备注:

以下语句可以将#号开头的行删掉

[root@localhost ~]# sed -i '/^#/d' /etc/vsftpd/vsftpd.conf

二:匿名访问FTP服务

1:准备匿名FTP访问目录

[root@localhost ~]# touch /var/ftp/test

[root@localhost ~]# chown ftp /var/ftp/pub

[root@localhost ~]# chmod 755 /var/ftp/pub

[root@localhost ~]# ls -ld /var/ftp/pub

drwxr-xr-x. 2 ftp root 6 11月  6 2016 /var/ftp/pub

2:开放匿名用户

添加如下红色内容:

anonymous_enable=YES

anon_umask=022

anon_upload_enable=yes

anon_mkdir_write_enable=yes

anon_other_write_enable=yes

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=NO

listen_ipv6=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

备注:

anonymous_enable=YES   #是否启用匿名用户

no_anon_password=YES   #匿名用户login时不询问口令

anon_upload_enable=(yes/no); #控制匿名用户对文件(非目录)上传权限

anon_world_readable_only=(yes/no); #控制匿名用户对文件的下载权限

anon_mkdir_write_enable=(yes/no); #控制匿名用户对文件夹的创建权限

anon_other_write_enable=(yes/no); #控制匿名用户对文件和文件夹的删除和重命名

[root@localhost ~]# systemctl restart vsftpd

[root@localhost ~]# netstat -anpt | grep vsftpd

tcp6       0      0 :::21                   :::*                    LISTEN      16710/vsftpd

3:测试匿名FTP服务器

(1)测试访问

[root@localhost ~]# ftp 192.168.10.101

Connected to 192.168.10.101 (192.168.10.101).

220 (vsFTPd 3.0.2)

Name (192.168.10.101:root): ftp

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> dir

227 Entering Passive Mode (192,168,10,101,221,180).

150 Here comes the directory listing.

drwxr-xr-x    2 14       0               6 Nov 05  2016 pub

-rw-r--r--    1 0        0               0 May 20 02:14 test

-rw-r--r--    1 0        0               0 May 20 02:14 text

226 Directory send OK.

ftp> lcd /opt

Local directory now /opt

ftp> get test

local: test remote: test

227 Entering Passive Mode (192,168,10,101,141,88).

150 Opening BINARY mode data connection for test (0 bytes).

226 Transfer complete.

ftp> lcd /root

Local directory now /root

ftp> cd pub

250 Directory successfully changed.

ftp> put initial-setup-ks.cfg

local: initial-setup-ks.cfg remote: initial-setup-ks.cfg

200 PORT command successful. Consider using PASV.

150 Ok to send data.

226 Transfer complete.

1638 bytes sent in 0.00327 secs (501.22 Kbytes/sec)

ftp> quit

221 Goodbye.

(2)wget测试

[root@localhost ~]# wget ftp://192.168.10.101/pub/111

--2021-11-16 09:50:15--  ftp://192.168.10.101/pub/111

           => “111”

正在连接 192.168.10.101:21... 已连接。

正在以 anonymous 登录 ... 登录成功!

==> SYST ... 完成。   ==> PWD ... 完成。

==> TYPE I ... 完成。 ==> CWD (1) /pub ... 完成。

==> SIZE 111 ... 完成。

==> PASV ... 完成。   ==> RETR 111 ... 完成。

    [                                   ] 0           --.-K/s 用时 0s      

2021-11-16 09:50:15 (0.00 B/s) - “111” 已保存 [0]

4:用户验证的FTP服务

(1)本地用户验证配置

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=YES

anon_umask=022

#anon_upload_enable=yes

#anon_mkdir_write_enable=yes

#anon_other_write_enable=yes

local_enable=YES

write_enable=YES

local_umask=022

chroot_local_user=yes

allow_writeable_chroot=yes

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=NO

listen_ipv6=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

[root@localhost ~]# systemctl restart vsftpd

[root@localhost ~]# useradd zhangsan

[root@localhost ~]# passwd zhangsan

(2)客户端测试

[root@localhost ~]# touch aaa

[root@localhost ~]# ftp 192.168.10.101

Connected to 192.168.10.101 (192.168.10.101).

220 (vsFTPd 3.0.2)

Name (192.168.10.101:root): zhangsan

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> put aaa

local: aaa remote: aaa

227 Entering Passive Mode (192,168,10,101,114,218).

150 Ok to send data.

226 Transfer complete.

ftp> quit

221 Goodbye.

(3)开启root访问权限

默认root等内置的账户不许访问FTP服务

[root@localhost ~]# vi /etc/vsftpd/user_list

在root账号前价格注释符

#root

[root@localhost ~]# vi /etc/vsftpd/ftpusers

在root账号前价格注释符

#root

客户端用root账号登录测试

(4)使用user_list用户列表

[root@localhost ~]# vi /etc/vsftpd/user_list

添加几个账号

zhangsan

lisi

wangwu

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=YES

anon_umask=022

#anon_upload_enable=yes

#anon_mkdir_write_enable=yes

#anon_other_write_enable=yes

local_enable=YES

write_enable=YES

local_umask=022

chroot_local_user=yes

allow_writeable_chroot=yes

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=NO

listen_ipv6=YES

pam_service_name=vsftpd

userlist_enable=YES

userlist_deny=no

tcp_wrappers=YES

[root@localhost ~]# systemctl restart vsftpd

在客户端用列表中的账号登录(登录成功)

用列表中不存在的账号登录(无法登录)

5:其他配置

(1)修改监听地址与端口

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf

    listen=YES

    listen_address=192.168.10.101     \\添加监听地址

listen_port=2121              \\添加监听端口

listen_ipv6=no

[root@localhost ~]# systemctl restart vsftpd

(2)客户端测试

[root@localhost ~]# ftp 192.168.10.101 2121

(3)使用ftp的被动模式

    pasv_enable=yes

    pasv_min_port=24500

    pasv_max_port=24600

[root@localhost ~]# systemctl restart vsftpd

注意:

ftp默认使用被动模式

如果用被动模式,是客户端向服务器发起数据连接,要保证服务器的防火墙是关闭的

如果用主动模式,是服务器向客户端发起数据连接,要保证客户端的防火墙是关闭的

扩展:

1:修改匿名用户的目录

注意:默认的ftp匿名用户的目录在/var/ftp下

[root@localhost ~]# mkdir -p /opt/ftp/myftp

[root@localhost ~]# chown ftp /opt/ftp/myftp

注释:在新版本(2.3.5的版本后)的ftp服务中,ftp的根目录不能有写的权限,对于匿名用户来说,需要在ftp根目录下创建一个文件夹,给这个文件夹写的权限即可

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf

添加以下字段:

anon_root=/opt/ftp

2:修改系统用户的ftp根目录

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf

添加以下字段:

#anon_root=/opt/ftp

local_root=/opt/ftp

注释:在新版本(2.3.5的版本后)的ftp服务中,ftp的根目录不能有写的权限,对于系统用户来说,可以让系统用户对ftp根目录有写权限

[root@localhost ~]# chmod a+w /opt/ftp

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf

添加以下字段:

local_root=/opt/ftp

chroot_local_user=yes

allow_writeable_chroot=yes

  • 22
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值