OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3850|回复: 1

Linux文件传输之ftp服务器

[复制链接]

31

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2020-7-7
在线时间
8 小时
发表于 2020-8-5 17:06:42 | 显示全部楼层 |阅读模式
  一、FTP工作原理
  (1)FTP使用端口
  [root@localhost ~]# cat /etc/services | grep ftp
  ftp-data 20/tcp #数据链路:端口20
  ftp 21/tcp #控制链路:端口21
  (2)FTP连接方式
  支持两种连接模式:主动模式(Port)和被动模式(Pasv),这两种模式都是针对数据链路进行的,与控制链路无关。
  主动模式工作过程:
  1.客户端从自己的一个任意端口(N > 1024)和FTP服务器的21端口建立控制链路
  2.然后客户端发出Port指令告诉服务器连接自己的N+1端口来建立一条数据通道
  3.当FTP服务器接到这一指令时,会使用20端口连接用户在Port指令中指定的端口号N+1来发送数据
  被动模式工作过程:
  1.客户端从自己的一个任意端口(N > 1024)和FTP服务器的21端口建立控制链路
  2.然后客户端发送Pasv指令,告诉服务器自己要连接服务器的某一个端口
  3.如果服务器上的这个端口是空闲可用的,那么服务器会返回确认信息,之后数据传输通道被建立;但如果服务器上的这个端口被另一个资源所使用,那么服务器返回不确认的信息,那么这是客户端会再次发送Pasv命令。
  注意:
  在FTP客户连接服务器的整个过程中,控制信道是一直保持连接的,而数据传输通道是临时建立的;
  主动模式建立数据传输通道是由服务器端发起的,服务器使用20端口连接客户端某一个大于1024的端口;
  被动模式中建立数据传输通道是由客户端发起的,它使用一个大于1024的端口连接服务器的1024端口以上的某一个端口。
  二、ftp服务器搭建
  需求:在Linux中搭建一个ftp服务器在存储文件,创建一个ftp用户:test,主目录是:/home/test,设置该用户不允许登录服务器,并需要限制该用户不能离开自己的主目录。
  【实现步骤】
  1.查看系统有没有安装vsftpd
  # rpm -qa | grep vsftpd
  vsftpd-3.0.2-21.el7.x86_64
  注:vsftp(Very Secure FTP)是Linux系统下使用最多的FTP服务端。
  2.查看vsftpd服务是否开机自启
  # chkconfig --list vsftpd
  vsftpd 0ff 1ff 2n 3n 4n 5n 6ff
  3.建立一个新用户账户test,-d 参数指定用户登入时的主目录,参数-m 表示如果主目录不存在则自动创建
  # useradd -d /home/test -m test
  为用户设置密码,输入命令:
  # passwd 密码
  4.vsftpd的配置
  安装完成后,执行命令【rpm -ql vsftpd】可以查看与vsftpd相关的配置文件和文档,其中在/etc/vsftpd目录下有三个主要配置文件:
  vsftpd.conf 主配置文件
  ftpusers 指定哪些用户不能访问FTP服务器
  user_list 指定的用户是否可以访问ftp服务器
  查看vsftpd.conf配置文件
  内容如下:


  1 [root@localhost ~]# cat /etc/vsftpd/vsftpd.conf | grep -v '^#'
  2 #----匿名用户设置----
  3 anonymous_enable=NO #禁止匿名用户登录
  4
  5 #----本地用户设置----
  6 local_enable=YES #允许本地用户登录ftp服务器
  7 write_enable=YES #允许用户想服务器执行写入操作
  8 local_umask=022 #设置服务器上本地用户创建文件的权限掩码
  9
  10 #----欢迎语设置----
  11 dirmessage_enable=YES #启用目录提示消息
  12
  13 #----日志文件设置----
  14 xferlog_enable=YES #启用日志文件功能,记录于/var/log/xferlog
  15 xferlog_std_format=YES #启用标准的日志格式
  16
  17 #----FTP工作方式与端口设置----
  18 connect_from_port_20=YES #主动模式下,是否启用默认的20端口进行数据传输
  19
  20 #----与连接相关的设置----
  21 listen=NO #vsftpd不是以独立的服务运行,要受到xinetd服务的管控,功能上会受到限制
  22 listen_ipv6=YES
  23
  24 #----控制用户是否允许切换到上级目录----
  25 chroot_list_enable=YES #开启限制用户在主目录的功能
  26 chroot_list_file=/etc/vsftpd/chroot_list #在chroot_list文件中加入你要限制的用户名,一行一个用户
  27
  28 #----虚拟用户设置----
  29 pam_service_name=vsftpd #虚拟用户使用PAM认证方式
  30
  31 #----控制用户访问(通过vsftpd.user_list和ftpusers文件来实现)----
  32 userlist_enable=YES #是否启用userlist_file文件
  33 userlist_file=/etc/vsftpd/user_list #允许user_list文件中加入的用户访问ftp服务器
  34
  35 #----控制主机访问----
  36 tcp_wrappers=YES #vsftpd服务器检查/etc/hosts.allow和/etc/hosts.deny中的设置,来决定请求连接的主机,是否允许访问该FTP服务器
  37
  38 #----其它设置----
  39 allow_writeable_chroot=YES #去除用户主目录的写权限


  在上述vsftpd.conf的相关选项的配置下,对ftpuser文件和user_list文件的配置如下:
  ftpusers文件:不添加test用户,表示该用户不能访问ftp服务器
  user_list文件:在/etc/vsftpd.conf主配置文件中设置了userlist_deny=YES(默认情况),则不添加test用户,表示该用户不能访问ftp服务器
  5.开启vsftpd服务
  #service vsftpd start
  6.访问ftp服务器方法
  浏览器:ftp://ip地址
  ftp客户端软件,比如FileZilla,输入ftp服务器IP,用户名,密码,端口:21
  命令行终端:ftp 用户名@ftp服务器IP,或 ftp 127.0.0.1
  注意:关闭ftp服务器上的防火墙及Selinux(防止端口限制)
  -------------------------------
  补充知识点
  FTP日志功能配置
  xferlog_enable=YES //开启日志功能
  xferlog_file=/var/log/xferlog //日志文件的存放位置
  xferlog_std_format=YES //使用标准格式记录日志
  xferlog该日志文件记录了FTP会话,可以显示出用户向从FTP服务器拷贝了什么文件。其中一条记录如下:
  Thu Feb 16 10:09:05 2017 1 10.10.10.9 990 ./home/ftpie.txt b _ o r test ftp 0 * c
  含义:在某个时间test用户向主机10.10.10.9上传了哪些文件
  数据参数说明
  记录数据参数名称参数说明
  Thu Feb 16 10:09:05当前时间当前服务器本地时间
  1传输时间传送文件所用时间,单位为秒
  10.10.10.9远程主机名称/IP远程主机名称/IP
  990文件大小传送文件的大小,单位为byte
  ./home/ftpie.txt文件名传输文件名,包括路径
  b传输类型传输方式的类型,包括两种:
  a以ASCII传输 b以二进制文件传输
  –特殊处理标志特殊处理的标志位,可能的值包括:
  _ 不做任何特殊处理
  C 文件是压缩格式
  U 文件是非压缩格式
  T 文件是tar格式
  o传输方向文件传输方向,包括两种:
  o 从FTP服务器向客户端传输
  i 从客户端向FTP服务器传输
  r访问模式用户访问模式,包括:
  a 匿名用户
  g 来宾用户
  r 真实用户,即系统中的用户
  test用户名用户名称
  ftp服务名所使用的服务名称,一般为FTP
  0认证方式认证方式,包括:
  0 无
  1 RFC931认证
  *认证用户id认证用户的id,如果使用*,则表示无法获得该id
  c完成状态传输的状态:
  c 表示传输已完成
  i 表示传输示完成
  匿名用户ftp
  服务器安装完成vsftpd后是允许匿名用户访问的,匿名访问的用户名是ftp,密码为空。这个用户可以在/etc/passwd文件中找到
  ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
  数据参数说明:
  在ftp用户这行中,一共有七个字段,每个字段之间用冒号分割;
  ftp 用户名
  x 密码字段,是隐藏的
  14 用户的UID字段,是唯一的
  50 用户组的GID,是唯一的
  FTP User 是用户说明字段
  /var/ftp 是ftp用户的家目录
  /sbin/nologin 表示不能登录系统;如果把/sbin/nologin改为/bin/bash,这样ftp用户可以通过本地或远程工具ssh或telnet以真实用户身份登录到系统。
  默认情况下,匿名用户登录所访问的文件夹一般是/var/ftp,当然也可以由用户自行添加或删除。而且,匿名用户的权限只能是下载,而不能上传或是其它写操作。
  配置vsftpd服务器在非标准端口(非21端口)工作
  在/etc/vsftpd.conf中,将list_port=10034或者其它端口号选项加入该文件中即可,然后重新启动vsftp守护进程。
  注:此时测试以前使用的21端口,该端口已经不再有用;如果要使用ftp默认的21端口工作,需要删除或者使用#屏蔽掉前面加入的选项即可。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2018-1-23
在线时间
13 小时
发表于 2020-8-16 08:55:46 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 22:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表