FTP入门和进阶
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FTP入门和进阶相关的知识,希望对你有一定的参考价值。
一、简介
1、FTP 是什么
FTP "File Transfer Protocol"(文件传输协议) 用来实现文件的传输及共享,在RFC 959有说明。
ftp 工作在应用层,基于tcp,是C/S 架构。
2、会话连接:
控制连接:端口为21, 和FTP服务器沟通,连接FTP,发送指令[ 客户端不断开,持久保持连接]
数据连接:端口为20[ 只有在主动模式下是20 ], 和FTP服务器进行文件传输[ 有数据请求时连接]
3、工作模式
FTP协议中,控制连接均由客户端发起,而数据连接有两种工作方式:PORT方式和PASV方式
主动、被动 是基于服务器的角度。
PORT【Active 】模式(主动方式)
FTP客户端使用随机端口N(1024以上)连接到FTP服务器的21端口,发送用户名和密码登录。登录成功后要list列表或者读取数据时,客户端发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口N+1;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口N+1连接,发送数据。
PASV【Passive】模式(被动方式) - 推荐使用
FTP客户端使用随机端口N(1024以上)连接到FTP服务器的21端口,发送用户名和密码登录。登录成功后要list列表或者读取数据时,客户端发送 PASV命令到FTP服务器,告诉服务器客户端采用被动模式,FTP服务器收到PASV被动模式命令后,打开一个随机端口,并通知客户端,我已经打开N端口,可以进行连接,客户端连接到服务器的N端口获取数据。
* ftp 防火墙的配置(生产环境中的C/S端均需设置)
4、数据传输模式:(服务器自动)
文本
二进制
二、服务端程序:
windows: serv-U、FileZilla
linux: vsftpd "Very Secure FTP Daemon", 是一个UNIX类操作系统上运行的服务器的名字
支持三种用户:匿名用户(默认),系统用户,虚拟用户
基于PAM实现用户认证
/etc/pam.d/* /lib64/security/*
安装Vsftpd并配置
yum install vsftpd -y service vsftp start chkconfig vsftpd on
生成的安装文件
/etc/vsftpd/vsftp.conf: 配置文件 /etc/init.d/vsftpd: 服务脚本 /usr/sbin/vsftpd: 主程序 /etc/vsftpd/ftpusers:黑名单, 不受任何配置项的影响,它总是有效 /etc/vsftpd/user_list:由配置文件中userlist_enable和userlist_deny决定是白名单还是黑名单 /var/log/xferlog:默认日志文件
配置文件解析
listen=YES 定义ftp为独立守护进程 listen_port=21 设置FTP服务的端口号 #anonymous_enable=YES 是否允许匿名用户登录(anonymous/ftp) local_enable=YES 是否允许本地用户登录 write_enable=YES 是否允许本地用户写入 local_umask=022 本地用户上传文件的默认权限掩码值 local_root=/var/ftp 设置本地用户的FPT根目录(缺省为用户的宿主目录) local_max_rate 限制本地用户的最大传输速率(0为无限制),单位为字节 download_enable=YES 是否允许下载文件(仅限于浏览、上传的FTP服务器可将其设为NO) #anon_upload_enable=YES 是否允许匿名用户上传文件 #anon_mkdir_write_enable=YES 是否允许匿名用户创建目录 #anon_other_write_enable=YES 是否允许匿名用户有其他写入权限,如改名、覆盖、删除 #anon_root=/var/ftp 匿名用户根目录(缺省/var/ftp) #anon_umask=022 匿名用户上传文件的默认权限掩码值 #anon_world_readable_only=NO 允许匿名用户浏览文件的权限 #anon_max_rate=0 匿名用户的最大传输速率(0为无限制),单位为字节 dirmessage_enable=YES 是否显示目录说明文件,默认是YES但需要手工创建.message文件 xferlog_enable=YES 是否记录ftp传输过程,即启用FTP日志,默认/var/log/xferlog xferlog_std_format=YES 启用标准的xferlog日志格式,若禁用此项,将使用vsftpd自已的日志格式 connect_from_port_20=YES 主动模式数据传输使用20端口 #chown_upload=YES 是否改变上传文件的属主 #chown_username=username 将属主改为那个用户 #idle_session_timeout=600 设置控制连接超时时间 #data_connection_timeout=120 设置数据传输超时时间 #accept_timeout=60 设置客户端超时时间 #chroot_list_enable=YES 使用文件将特定用户锁定在家目录 #chroot_list_file=/etc/vsftpd.chroot_list 用户列表文件 #以上两项可用下面这个配置代替 chroot_local_user=yes 是否将FTP本地用户禁锢在宿主目录中 pam_service_name=vsftpd 设置用于用户认证的PAM文件位置 userlist_enable=YES 是否启用user_list用户列表文件 userlist_deny=YES 是否禁止user_list列表文件中的用户账号,启用后这个文件内的用户不能登录ftp tcp_wrappers=YES 是否启用tcp_wrappers访问控制 max_clients=0 最多允许多少个客户端同进连接FTP服务器(0为无限制) max_per_ip=0 对来自相同IP地址的客户端,最多允许多少个并发连接(0为无限制) pasv_enable=YES 打开被动模式连接 pasv_min_port=10000 设置被动模式服务器最小端口号 pasv_max_port=11000 设置被动模式服务器最大端口号
以上是关于FTP入门和进阶的主要内容,如果未能解决你的问题,请参考以下文章