一、ftp含义
FTP(File Transfer Protocol)文件传输协议,主要目的使得主机之间可以共享文件。监听在tcp的21端口,是一个文件共享服务,主要工作在应用层;FTP使用tcp生成一个虚拟连接用于控制消息,然后再生成一个单独的tcp连接用于数据传输。控制连接(命令连接)使用类似telnet协议在主机间交换命令和消息。ftp客户端可以给服务器端发出命令来下载文件、上传文件、创建或删除服务器上的目录。
二、ftp连接方式
1. 数据连接
数据连接属于按需打开,按需关闭,对于ftp服务器而言,有两种模式;
1.1主动模式:
服务器端主动连接客户端,此时服务器端监听在21/tcp,而对于客户端来讲,监听端口打开一个随机端口(端口号大于1024,在这里,我们称它为x),客户端开始打开监听端口(x+1),同时向服务器端发送一个端口命令,此命令是告诉客户端正在监听的端口号并准备好端口接受数据,服务器端打开20号端口并建立数据端口的连接。
1.2被动模式:
在被动方式中,命令连接和数据连接都是由客户端发起的,客户端打开两个任意的非特权本地端口(n>1024和n+1),第一个端口连接服务器的21端口,但与主动方式的ftp不同,客户端不会提交PORT命令并允许服务器来回连接它的数据端口,而是提交PASV命令。服务器会开启一个任意的非特权端口(P>1024),并发送命令给客户端,然后客户端发起本地端口n+1到服务器的端口的连接用来传送数据。
2.控制连接
控制连接也称为命令连接,监听在20/tcp

三、ftp服务器端服务程序vsftpd
在生产环境中主要会用到服务程序vsftpd,下面我主要对vsftpd程序的文件目录结构做个简单了解
目录
说明
/usr/sbin/vsftpd
vsftpd的主程序
/etc/rc.d/init.d/vsftpd
启动vsftpd的脚本
/etc/vsftpd/vsftpd.conf
主配置文件
/etc/pam.d/vsftpd
PAM认证文件
/var/ftp                  
匿名用户主目录
/var/ftp/pub
匿名用户的下载目录
/etc/vsftpd/ftpusers
禁止使用vsftpd的用户列表文件
/etc/vsftpd/user_list
禁止或允许使用vsftpd的用户列表文件
四、ftp用户分类
匿名用户(anonymous):主要用到的用户是ftp和anonymous用户,但最终映射为一个系统用户,同时也要注意,匿名用户登录ftp服务器时也要写上匿名用户名称
系统用户:也称为本地用户,对于系统用户来说,一般要禁锢在其家目录下
虚拟用户:虚拟用户最终也要映射为一个系统用户登录ftp服务器
五、分析vsftpd的主配置文件
##################定义匿名用户#####################
anonymous_enable={YES|NO}:是否启动匿名用户
anon_upload_enable={YES|NO}:控制是否允许匿名用户上传文件
anon_mkdir_write_enable={YES|NO}:控制是否允许匿名用户创建目录
anon_other_write_enable={YES|NO}:控制是否允许匿名用户可以执行其它操作,比如:删除目录
dirmessage_enable=yes:定义进入匿名用户的家目录下时,是否开启目录显示提示功能
message_file=.message:定义提示信息的文件名,该项只有在dirmessage_enable激活后才可以使用,一般要在匿名用户的家目录下创建一个.message文件,在此文件中定义提示信息内容
说明:为了演示效果,我将选项都设置为YES
##################################################################

以ftp匿名用户名登录ftp服务

  1. [root@ftp ~]# ftp 172.16.52.2
  2. Connected to 172.16.52.2.
  3. 220 (vsFTPd 2.0.5)
  4. 504 Unknown AUTH type.
  5. 504 Unknown AUTH type.
  6. KERBEROS_V4 rejected as an authentication type
  7. Name (172.16.52.2:root): ftp
  8. 331 Please specify the password.
  9. Password:
  10. 230 Login successful.
  11. Remote system type is UNIX.
  12. Using binary mode to transfer files.
创建目录

上传文件

删除文件
  1. #vim /var/ftp/upload/.message    ####在文件中可以自己定义提示信息,这个过程略过

#########################定义系统用户############################
local_enable={YES|NO}:是否启动系统用户
write_enable={YES|NO}:是否定义系统用户上传文件
chroot_list_enable={YES|NO}:是否禁锢指定用户在其家目录下
chroot_list_file=/etc/vsftpd/chroot_list:把禁锢用户写在定义的文件中,这个文件事先不存在,一般这个选项与上一条一起使用
chroot_local_user={YES|NO}:表示是否定义所有用户都被禁锢在家目录下
userlist_enable={YES|NO}:表示是否使用控制用户登录的用户列表,如果用户出现在此列表中,则在登录ftp服务器时被vsftpd禁止使用
userlist_deny={YES|NO}:是否允许此文件中的用户登录ftp服务,当为no时表示仅允许user_list文件中的用户登录
在/etc/vsfptd目录下有个ftpuser文件,定义在此文件中的用户都被禁止登录ftp服务,主要这个文件起作用
在/etc/vsfptd目录下还有个user_list文件,是否允许用户登录ftp可以自己定义,写在这个文件中的用户都不能登录
##################################################################
系统用户上传文件
  1. #useradd luo
  2. #echo “luo” | passwd –stdin luo

禁锢所有用户都在自己的家目录下
  1. [root@ftp ~]# ftp 172.16.52.2
  2. Connected to 172.16.52.2.
  3. 220 (vsFTPd 2.0.5)
  4. 530 Please login with USER and PASS.
  5. 530 Please login with USER and PASS.
  6. KERBEROS_V4 rejected as an authentication type
  7. Name (172.16.52.2:root): luo
  8. 331 Please specify the password.
  9. Password:
  10. 230 Login successful.
  11. Remote system type is UNIX.
  12. Using binary mode to transfer files.
  13. ftp> pwd
  14. 257 "/"
不允许user_list文件中的用户登录ftp服务
  1. 设置userlist_deny=YES,并在/etc/vsftpd/user_list文件中添加系统用户luo
  2. [root@ftp ~]# ftp 172.16.52.2
  3. Connected to 172.16.52.2.
  4. 220 (vsFTPd 2.0.5)
  5. 530 Please login with USER and PASS.
  6. 530 Please login with USER and PASS.
  7. KERBEROS_V4 rejected as an authentication type
  8. Name (172.16.52.2:root): luo
  9. 530 Permission denied.
  10. Login failed.
允许user_list文件中的用户登录ftp服务
  1. 设置userlist_deny=NO,表示除了user_list文件中的用户都不可以访问ftp服务
  2. [root@ftp ~]# ftp 172.16.52.2
  3. Connected to 172.16.52.2.
  4. 220 (vsFTPd 2.0.5)
  5. 530 Please login with USER and PASS.
  6. 530 Please login with USER and PASS.
  7. KERBEROS_V4 rejected as an authentication type
  8. Name (172.16.52.2:root): luo
  9. 331 Please specify the password.
  10. Password:
  11. 230 Login successful.
  12. Remote system type is UNIX.
  13. Using binary mode to transfer files.
  14. ###此时的系统用户luo还在user_list文件中,大家可以多设置几个系统用户测试一下
开启日志功能,使用系统用户上传、下载文件
上传文件到系统用户的家目录下
  1. ftp> lcd /etc
  2. Local directory now /etc
  3. ftp> put fstab
  4. local: fstab remote: fstab
  5. 227 Entering Passive Mode (172,16,52,2,41,90)
  6. 150 Ok to send data.
  7. 226 File receive OK.
  8. 608 bytes sent in 0.0002 seconds (2.9e+03 Kbytes/s)
  9. ftp> ls
  10. 227 Entering Passive Mode (172,16,52,2,151,90)
  11. 150 Here comes the directory listing.
  12. -rw-r--r--    1 2531     2531          608 Apr 21 08:04 fstab
下载文件到/var目录下
  1. ftp> pwd
  2. 257 "/"
  3. ftp> lcd /var
  4. Local directory now /var
  5. ftp> get fstab
  6. local: fstab remote: fstab
  7. 227 Entering Passive Mode (172,16,52,2,74,110)
  8. 150 Opening BINARY mode data connection for fstab (608 bytes).
  9. 226 File send OK.
  10. 608 bytes received in 0.00036 seconds (1.6e+03 Kbytes/s)
  11. ftp> ls
  12. 227 Entering Passive Mode (172,16,52,2,57,76)
  13. 150 Here comes the directory listing.
  14. -rw-r--r--    1 2531     2531          608 Apr 21 08:04 fstab
查看上传、下载日志的记录信息

六、ftps安全通信的实现
1.生成CA私钥
  1. #cd /etc/pki/CA
  2. CA#(umask 077; openssl genrsa –key private/cakey.pem 2048)
2.生成CA自签证书

3.创建文件和目录
  1. CA#mkdir newcerts certs crl
  2. CA#touch index.txt
  3. CA#echo 01 > serial
4.在/etc/vsftpd/目录下创建ssl目录,并在目录下生成密钥
  1. #cd /etc/vsftpd
  2. vsftpd#mkdir ssl
  3. vsftpd#cd ssl
  4. ssl#(umask 077; openssl genrsa -out vsftpd.key 2048)

5.vsftpd签署申请证书请求,同时在配置文件/etc/pki/tls/openssl.cnf修改指定的目录

  1. #vim /etc/pki/tls/openssl.cnf
  2. dir             = /etc/pki/CA

6.CA机构为vsftpd服务签署请求的证书

7.在vsftpd配置文件中添加内容

8.测试非认证用户

还可以使用openssl模拟客户端连接ftp服务器

9.安装客户端软件

我这里使用的是FlashFXP.zip压缩包,大家可以下载一下

关于ftp服务器的这几个操作是很常用的,也是在生产环境中非常重要的操作,所谓小小的操作,会制造出大大的效果;如果在这次演示中有什么不太完整的地方,希望好朋友们提出来,这也算是一种进步吧!

转载于:https://blog.51cto.com/luowenjing/1182869

ftp文件传输协议的匿名用户、系统用户的实现详解过程相关推荐

  1. Linux运维系列总结-Linux系统启动过程、WEB工作原理、DHCP工作原理、DNS解析原理、NFS网络文件系统、FTP文件传输协议、PXE+KICKSTART自动安装系统

    Linux运维系列总结-Linux系统启动过程.WEB工作原理.DHCP工作原理.DNS解析原理.NFS网络文件系统.FTP文件传输协议.PXE+KICKSTART自动安装系统 1.Linux系统的启 ...

  2. 计算机网络 P43 网络应用模型 P44 DNS系统 P45 FTP文件传输协议

    DNS系统: FTP文件传输协议  

  3. 网络编程之FTP文件传输协议

    FTP文件传输协议: 一.简述: 1.TCP/IP协议簇,应用层协议,采用服务端与客户端通信方式共享文件. 2.FTP根目录:/            (如路径: /hello/) 3.现在的FTP一 ...

  4. FTP文件传输协议(实现windows与linux文件互传)

    FTP文件传输协议(实现windows与linux文件互传) 目录 FTP文件传输协议(实现windows与linux文件互传) 一.FTP概述 二.FTP通信端口 三.FTP数据连接 四.FTP连接 ...

  5. Day4:应用层——FTP :文件传输协议、电子邮件(EMail)、DNS(Domain Name System)、P2P应用(一类应用)

    加油!偷博人! 一.FTP文件传输协议  向远程主机上传输文件或从远程主机接收文件  客户/服务器模式  客户端:发起传输的一方  服务器:远程主机  ftp: RFC 959  ftp服 ...

  6. FTP文件传输协议原理详解(两种工作模式)

    初始FTP     文件传输协议(File Transfer Protocol,缩写:FTP)是一个用于在计算机网络上在客户端和服务器之间进行文件传输的应用层协议.文件传送(file transfer ...

  7. 浅谈FTP(文件传输协议)

    FTP(文件传输协议) FTP(File Transfer Protocol) ,是一种处于应用层的用于文件传输的协议.是基于TCP协议的应用层协议,用于在网络上传输文件. 该协议使用的端口号为20和 ...

  8. 网络协议从入门到底层原理(10)WebSocket、WebService、RESTful、HTTPDNS、FTP文件传输协议、邮件相关协议、IPv6

    其他协议 WebSocket WebSocket - 建立连接 WebService RESTful HTTPDNS FTP文件传输协议 邮件相关的协议(SMTP.POP.IMAP) POP vs I ...

  9. FTP文件传输协议与部署,包括Linux系统、Windows系统和H3C路由交换设备部署

    1.FTP 1.1 定义 文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用 ...

最新文章

  1. 使用 EclEmma 来显示代码覆盖率
  2. Yii框架官方指南系列43——专题:URL(创建、路由、美化及自定义)
  3. JStorm与Storm源码分析(八)--计时器工具-mk-timer
  4. tp3.2.3权限控制二之后台管理部分,及菜单栏目显示问题
  5. Socket编程小结(续)
  6. 理解C语言声明的优先级规则
  7. 16_Android生命周期再介绍,通过androidconfigChanges属性让界面旋转时不改变状态中保留的值
  8. 管窥MVVMLight Command参数绑定和事件传递
  9. 吉林大学计算机科学与技术学院王欣,应用改进迭代最近点方法的点云数据配准...
  10. Envoy实现.NET架构的网关(四)集成IdentityServer4实现OAuth2认证
  11. 合泰单片机c语言halt指令,holtek单片机图文全面详解
  12. 使用no-gui 模式执行分布式测试
  13. 海底捞:今年年底前将关停约300家经营未达预期门店
  14. 花旗银行文章解释DeFi的好处
  15. lc 297. Serialize and Deserialize Binary Tree
  16. Ansible入门使用
  17. Hbase+JAVAWeb实现超市仓库管理系统
  18. ZXing条码扫描-竖屏解决方案
  19. android 4.4.2海信电视,ROOT海信电视Android4.0的详细步骤
  20. C语言——单词精确查找

热门文章

  1. JSON对象中的JSONObject和JSONArray以及与Map、String、数组的转化
  2. SecureCRT 中文显示乱码
  3. 无人机送货新方式?只为解决“最后一公里”
  4. angular2之pdf文件操作大全
  5. Jenkins+Github(Robotframework代码)
  6. ceph集群报错:HEALTH_ERR 1 pgs inconsistent; 1 scrub errors
  7. RFID技术为智能轮胎在未来车联网领域的应用奠定了基础
  8. Android--Activity的跳转及Activity之间的数据传递
  9. 从代码到上线, 云端Docker化持续交付实践
  10. 如何更改rhevm中admin的密码