FTP-Linux中ftp服务器搭建
一、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 0:off 1:off 2:on 3:on 4:on 5:on 6:off
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 | 传输类型 |
传输方式的类型,包括两种: |
– | 特殊处理标志 |
特殊处理的标志位,可能的值包括: |
o | 传输方向 |
文件传输方向,包括两种: |
r | 访问模式 |
用户访问模式,包括: |
test | 用户名 | 用户名称 |
ftp | 服务名 | 所使用的服务名称,一般为FTP |
0 | 认证方式 |
认证方式,包括: |
* | 认证用户id | 认证用户的id,如果使用*,则表示无法获得该id |
c | 完成状态 |
传输的状态: |
匿名用户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守护进程。
# ftp 127.0.0.1 10034 注:此时测试以前使用的21端口,该端口已经不再有用;如果要使用ftp默认的21端口工作,需要删除或者使用#屏蔽掉前面加入的选项即可。
FTP-Linux中ftp服务器搭建的更多相关文章
- linux 中 svn 服务器搭建 重启
鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此总结 /******开始****** ...
- [PXE] Linux(centos6)中PXE 服务器搭建,PXE安装、启动及PXE理论详解
[PXE] Linux(centos6)中PXE 服务器搭建,PXE安装.启动及PXE理论详解 本篇blog主要讲述了[PXE] linux(centos)PXE无盘服务器搭建,安装,启动及pxe协议 ...
- Linux下DNS服务器搭建详解
Linux下DNS服务器搭建详解 DNS 即Domain Name System(域名系统)的缩写,它是一种将ip地址转换成对应的主机名或将主机名转换成与之相对应ip地址的一种机制.其中通过域名解析 ...
- Linux下SVN服务器搭建配置
Linux下SVN服务器搭建配置 1.SVN服务安装 yum install subversion 2.创建SVN代码仓库 mkdir /data/svn svnadmin create /data/ ...
- linux下的服务器搭建集成环境
linux下的服务器搭建集成环境 ——写给初学者的我们 1.准备工具 1.1 SecureCRT SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录 ...
- Linux下dns服务器搭建
Linux下dns服务器搭建1-环境Red Hat Enterprise Linux Server release 6.7 (Santiago)2-配置本地yum源安装dns相关包yum -y ins ...
- Linux - CentOS6.5服务器搭建与初始化配置详解(下)
传送带:Linux - CentOS6.5服务器搭建与初始化配置详解(上) 继续接着上面的安装,安装完后会出现下面界面 点击reboot重启 重启后可以看到下面的tty终端界面 因为这就是最小化安装 ...
- Linux中ftp服务器搭建
一.FTP工作原理 (1)FTP使用端口 [root@localhost ~]# cat /etc/services | grep ftp ftp-data 20/tcp #数据链路:端口20 ftp ...
- Linux中ftp服务器的安装与部署
一.ftp简介FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一.FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端.其中FTP ...
- Linux中ftp不能上传文件/目录的解决办法
在linux中不能上传文件或文件夹最多的问题就是权限问题,但有时也不一定是权限问题了,像我就是空间不够用了,下面我来总结一些ftp不能上传文件/目录的解决办法 在排除用户组和权限等问题后,最可能引 ...
随机推荐
- df and du
1.若有进程在占用某个文件,而其他进程把这文件删掉,只会删除其在磁盘中的标记,而不会释放其占用的磁盘空间:直到所有访问该文件的进程退出为止: 2.df 是从内核中获取磁盘占用情况数据的,而du是统计当 ...
- 《MYSQL必知必会》
1. 同一个数据库中不允许出现同名表:不同的数据库中可以出现同名表2. 每一行记录都用有一个key(一列或一组列作为key)3. 作为key的列不允许值为空(NULL)4. 多个列作为key时,多个列 ...
- CGPoint->NSValue
http://blog.sina.com.cn/s/blog_65a8ab5d0101c0n2.html CGPoint point = CGPointMake(self.superview.nim_ ...
- webpack初步了解
webpack是一个打包工具,基于nodeJS Webpack 可以将多种静态资源 js.css.less 转换成一个静态文件,减少了页面的请求. 安装 Webpack 由于 npm 安装速度慢,本教 ...
- mysql 权限管理 对所有库 所有表 授权 *.*
对miek这个账号localhost 授予了所有库,所表的select权限 mysql> grant select on *.* to 'mike'@'localhost'; Query OK, ...
- utf8 与 utf-8区别
在使用中常常遇到 utf-8 和 utf8,现在终于弄明白他们的使用不同之处了,现在来和大家分享一下,下面我们看一下 utf8 和 UTF-8 有什么区别. "UTF-8" 是标准 ...
- [LeetCode] 225. Implement Stack using Queues_Easy tag: Design
Implement the following operations of a stack using queues. push(x) -- Push element x onto stack. po ...
- Bootstrap学习笔记-栅格系统
栅格系统的原理就是在这个界面中这个栅格被分成12个格子,你根据自己的想要的布局就把这个界面分割成你想要的部分就行了.一般如果我们用电脑作为显示器的我们用的样式是col-md 如果你用的显示期变小的情况 ...
- ATG精准科技-前端面试题
1.请写出以下结果 for(var i=0; i<10; i++){ setTimeout(function () { console.log(i) },10) } 结果:打印10次190解析: ...
- CFA
拜耳色彩滤波阵列(Bayer Color Filter Array, CFA)是非常有名的彩色图片的数字采集格式.由1/2的G,1/4得R,1/4的B组成. 当Image Sensor向外逐行输出数据 ...