centos 6.5 ftp服务配置及客户端使用
一、ftp服务简介
FTP是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
二、ftp服务搭建
1. 安装vsftpd
yum -y install vsftpd
2. 关闭iptables
为了方便测试,先将iptables关闭,后面如果有需要开iptables再加规则:
service iptables stop
3. 配置vsftpd服务器
默认的配置文件是/etc/vsftpd/vsftpd.conf,编辑这个文件进行配置
3.1 配置vsftpd
将原文件下面注释的几句改为:
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES
参数解释:
|
chroot_local_user=YES |
chroot_local_user=NO |
chroot_list_enable=YES |
1.所有用户都被限制在其主目录下 |
1.所有用户都不被限制其主目录下 “例外”,受到限制 |
chroot_list_enable=NO |
1.所有用户都被限制在其主目录下 |
1.所有用户都不被限制其主目录下 “例外”用户 |
关于最后一个参数:
从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列两项中的一项:
allow_writeable_chroot=YES
3.2 关于ftp用户
ftp服务可以配置三种用户。
1. Real用户
这类用户是指在FTP服务上拥有帐号。当这类用户登录FTP服务器的时候,其默认的主目录就是其帐号命名的目录。但是,其还可以变更到其他目录中去。如系统的主目录等等。
2. Guest用户
在FTP服务器中,我们往往会给不同的部门或者某个特定的用户设置一个帐户。但是,这个账户有个特点,就是其只能够访问自己的主目录。服务器通过这种方式来保障FTP服务上其他文件的安全性。这类帐户,在Vsftpd软件中就叫做Guest用户。拥有这类用户的帐户,只能够访问其主目录下的目录,而不得访问主目录以外的文件。
3. Anonymous(匿名)用户
这也是我们通常所说的匿名访问。这类用户是指在FTP服务器中没有指定帐户,但是其仍然可以进行匿名访问某些公开的资源。
下面主要讲Guest用户的建立与配置。
3.3 增加用户
增加系统用户ftpuser,禁止登录SSH权限:
useradd -d /home/ftpuser -g ftp -s /sbin/nologin ftpuser
一般来说,这个用户文件可以根据实际情况进行权限配置。
3.4 设置用户口令
passwd ftpuser
3.5 编辑文件chroot_list
vi /etc/vsftpd/chroot_list
内容为ftp用户名,每个用户占一行,如:
ftpuser
3.6 重新启动vsftpd
service vsftpd restart
三、客户端
1. 安装ftp客户端
yum -y install ftp
2. 连接ftp服务器并操作
ftp ftp服务器ip
按照指示输入账号密码,登录,如果正常登录,证明前面设置的ftp服务正确。
可以使用put命令上传一个文件试试是否正常:
put test_up
3. 常用操作
1) HELP、 ?、RHEIP、REMOTEHELP
- HELP显示LOCAL端的命令说明,若不接受则显示所有可用命令;
- ?相当于HELP,例如:?CD:
- RHELP同HELP,只是它用来显示REMOTE端的命令说明;
- REMOTEHELP相当于RHELP。
2) ASC(ASCll)、Bm(BmARY)、IMAGE、TYPE
- ASCII切换传输模式为文字模式(只能用来传送DOC文件,因为是7-BIT);
- BINARY切换传输模式为二进制模式(除文字文件外皆用此模式);
- IMAGE相当于BINARY:
- TYPE让你更改或显示目前传输模式。
3)BYE、QUIT
- BYE退出FTP:
- QUIT相当于BYE。
4)CD、CDUP、LCD、P~WD、 !
- CD改变当前工作目录,例如:CD\PUB;
- CDUP回到上一层目录,相当于你打CD..;
- LCD让你更改或显示LOCAL端的工作目录,例如:LCD\TMP;
- PWD显示目前的工作目录(REMOTE端);
- !让你执行外壳命令,例如:!LS。
5)DELETE、MDELETE、RENAME
- DELETE删除REMOTE端的文件;
- MDELETE批量删除文件,需配合?或,*;
- RENAME更改REMOTE端的文件名。
6)GET、MGET、PUT、MPUT、RECV、SEND
- GET下传文件;
- MGET批量下传文件,需配合万用字元,例如:MGET*.GZ;
- PUT上传文件;
- MPUT批量上传文件,需配合万用字元;
- RECV相当于GET(RECV为RECEWE的简写);
- SEND相当于PUT。
7)HASH、PROMPT、VERBOSE、STATUS、BELL
- HASH切换#字号的出现,每一个#字号表示传送了1024/8192BYTES;
- PROMPT切换iNTERACTIVEON/OFF;
- VERBOSE切换所有文件传输过程的显示;
- STATUS显示目前的一些参数;
- BELL当指令做完时会发出叫声。
8)LS、DIR、MLS、MDIR、MKDIR、RMDIR
- LS有点象UNIX下的LS(LIST)命令:
- DIR相当于LS-L(LIST-LONG);
- MLS只是将远端某目 录下的文件存于LOCAL端的某文件里;
- MDIR相当于MLS;
- MKDIR象DOS下的MD(创建子目录)一样:
- RMDIR象DOS下的RD(删除子目录)一样。
9)OPEN、CLOSE、DISCONNECT、USER ·
- OPEN连接某个远端FTP服务器;
- CLOSE关闭目前的连接; DISCONNECT相当于CLOSE;
- USER再输入一次用户名和口令(有点像UNIX下的SU)。
- RETR
- STOR
4. 使用脚本上传文件
脚本主要使用数据流重定向进行操作,示例如下:
#!/bin/sh
PUTFILE=test_up_sh
ftp -v -n ftp服务器ip<<EOF
user ftp账号 密码
binary
prompt
put $PUTFILE
bye
#here document
EOF
echo "commit to ftp successfully"
注意,ftp不支持自动创建目录和多目录上传,也就是如果你上传的文件路径是绝对路径,是会传输失败的。
如果使用“put /home/user1/test.txt”这样的命令,而没有单独指定一个REMOTE-FILE,那么REMOTE-FILE就原样拷贝LOCAL-FILE参数。
而传文件使用的FTP命令叫STOR。当这个命令有remote这个参数(如STOR)的时候,就原封不动地把remote这个变量放在命令后。所以,实际向服务器发送的命令是“STOR /home/user1/test.txt”。
所以,服务器会试图按照/home/user1/test.txt这个绝对路径来储存文件。当然,服务器不会允许你创建这么一个文件,起码它不在ftp服务器可以写的目录中。
四、关于主动模式和被动模式
1. 端口
利用ftp传输过程中,主要使用到两个端口,一个是数据端口,一个是控制端口,控制端口一般为21,而数据端口不一定是20,这和FTP的应用模式有关,如果是主动模式,应该为20,如果为被动模式,由服务器端和客户端协商而定。
2. 主动模式与被动模式
FTP具有两种模式,分别是port模式(也叫主动模式)和pasv模式(也叫被动模式),怎么来理解这两种模式呢?
在主动模式下:客户端给服务器端的21端口发命令说,我要下载什么什么,并且还会说我已经打开了自己的某个端口,你就从这里把东西给我吧,服务器知道后就会通过另外一个数据端口把东西传给客户端,这就是主动模式,可以理解为服务端主动给客户端传输文件。
在被动模式下:客户端给服务器端的21端口发命令说,我要下载什么什么,服务器端知道后,就打开一个端口,然后告诉客户端,我已经打开了某某端口,你自己进去拿吧,于是客户端就从那个端口进去拿文件了,这就是被动模式,可以理解为服务端被客户端拿走了东西。
3. 从主动模式到被动模式
在很久以前没有共享上网这种技术,也就是一个电脑一个ip。但是后来出现了,所以也就有了下面的问题。
大家都知道,共享上网就是很多台电脑共享一个公网IP去使用internet,再打个比喻吧,某个局域网共享210.33.25.1这个公网IP上网,当一个内网用户192.168.0.100去访问外网的FTP服务器时,如果采用主动模式的话,192.168.0.1告诉了FTP服务器我需要某个文件和我打开了x端口之后,由于共享上网的原因,192.168.0.1在出网关的时候自己的IP地址已经被翻译成了210.33.25.1这个公网IP,所以服务器端收到的消息也就是210.33.25.1需要某个文件并打开了x端口,FTP服务器就会往210.33.25.1的x端口传数据,这样当然会连接不成功了,因为打开x端口的并不是210.33.25.1这个地址,在这种情况下被动模式就有用了。
在主动模式中,FTP的两个端口是相对固定的,如果命令端口是x的话,那数据端口就是x-1,也就是说默认情况下,命令端口是21,数据端口就是20;你把命令端口改成了600,那么数据端口就是599。这样使用防火墙就很方便了,只要开通这两个端口就可以了,但是如果客户端是共享上网的话那岂不是不能正常使用FTP了,这样还是不行,一定需要被动模式。
在被动模式中,默认情况下命令端口是21,但是数据端口是随机的。不过,因为被动模式中数据端口的范围是可以自定义的,因此也可以通过端口范围去配置防火墙。
五、参考
2. 百度百科:ftp
3. FTP命令大全
(完)
centos 6.5 ftp服务配置及客户端使用的更多相关文章
- 如何对CentOS FTP服务配置
根据很多人对CentOS FTP服务的不解,我觉得应该对CentOS FTP服务做出一定的解释. 1.安装 一般在CentOS上都自动安装了vsftd,若没有安装则可以使用以下步骤进行安装yum -y ...
- CentOS 6.8 ftp服务安装配置 基于本地用户和虚拟用户
CentOS 6.8 ftp服务安装配置 基于本地用户和虚拟用户 一.安装ftp服务 1.检查是否已经安装 # rpm -qa | grep ftp ftp-0.17-54.el6.x86_64 vs ...
- linux Centos 6.5 FTP服务原理及vsfptd的安装、配置(转)
本篇随笔将讲解FTP服务的原理以及vsfptd这个最常用的FTP服务程序的安装与配置... 一.FTP服务原理 FTP(File Transfer Protocol)是一个非常古老并且应用十分广泛的文 ...
- window配置ftp服务,代码客户端上传下载文件
1 开启ftp服务 打开控制面板,点击程序,找到程序和功能,点击”打开或关闭windows功能” 找到“Internet信息服务”,点击前面的加号,展开功能,勾选”FTP服务”,“FTP扩展性”,“I ...
- centos下开启ftp服务
如果要ftp访问linux需要安装ftp服务,vsftpd是Linux下比较好的的FTP服务器. 一.检查安装vsftp //检查是否安装vsftpd rpm -qa | grep vsftpd // ...
- Linux SSH,FTP服务配置
CentOS-6.4-x86_64-minimal 0.网卡配置 参考:Linux系统\Centos没有网卡eth0配置文件怎么办? - http://jingyan.baidu.com/articl ...
- ftp服务配置
文件传输协议(File Transfer Protocol,FTP),基于该协议FTP客户端与服务端可以实现共享文件.上传文件.下载文件. FTP 基于TCP协议生成一个虚拟的连接,主要用于控制F ...
- Centos 7 搭建FTP详细配置步骤方法
vsftpd的安裝使用: ftp概述:FTP(File Transfer protocol,文件传输协议)是经典的C/S架构的应用层协议,需要有服务端软件,客户端软件两个部共同组成实现文件传输功能. ...
- 用户管理和FTP服务配置
批量创建用户 python脚本:creuser.py import osulist=open('usernames','r')for x in ulist: cmd="useradd -g ...
随机推荐
- Python 天气预报+微信
""" Description: 需要提供以下三个信息,在申请到的微信企业号当中可以找到 agentid corpid corpsecret Author:Nod Dat ...
- Maven报错找不到jre
常规配置maven环境变量,报错: The JAVA_HOME environment variable is not defined correctly. This environment vari ...
- php如何判断IP为有效IP地址
不需要正则表达式来判断,因为在php5.2.0之后,有专门的函数来做这个判断了. 判断是否是合法IP if(filter_var($ip, FILTER_VALIDATE_IP)) { // it's ...
- js如何获取数字占的位数~
获取整数的长度可以用以下几种方法实现: 1.调用toString方法转为字符串后取长度 var num = 123; alert(num.toString().length); 2.隐式转字符串后取长 ...
- 理解Storm Metrics
在hadoop中,存在对应的counter计数器用于记录hadoop map/reduce job任务执行过程中自定义的一些计数器,其中hadoop任务中已经内置了一些计数器,例如CPU时间,GC时间 ...
- 序列化 ,hashlib ,configparser ,logging ,collections模块
# 实例化 归一化 初始化 序列化 # 列表 元组 字符串# 字符串# .......得到一个字符串的结果 过程就叫序列化# 字典 / 列表 / 数字 /对象 -序列化->字符串# 为什么要序列 ...
- 13.mysql基本查询
1. 给表起个别名:但是,前面的也是需要进行修改的,否则会报错的: select * from s.name from students as s; 2. 为字段起别名 select s,name a ...
- OpenACC 简单的直方图
▶ 简单的直方图,强调原子操作的使用 ● 代码 #include <stdio.h> #include <stdlib.h> #include <openacc.h> ...
- el 表达式的比较和包含
相等( equal ) :eq 不相等( not equal ): ne / neq 大于( greater than ): gt 小于( less than ): lt 大于等于( great th ...
- Virus
c:\windows\syswow64\rundll32.exe C:\Users\Administrator.mt1-PC\AppData\Roaming\FishSearch