Linux命令学习—FTP 服务器

1.1、FTP

1.1.1、FTP 协议

FTP(File Transfer Protocol),是文件传输协议的简称。用于 Internet 上的控制文件的双向传输。同时, 它也是一个应用程序(Application)。用户可以通过它把自己的 PC 机与世界各地所有运行 FTP 协议的服 务器相连,访问服务器上的大量程序和信息。

在 FTP 的使用当中,用户经常遇到两个概念:"下载"(Download)和"上载"(Upload)。"下载"文件就是 从远程主机拷贝文件至自己的计算机上;"上载"文件就是将文件从自己的计算机中拷贝至远程主机上。用 Internet 语言来说,用户可通过客户机程序向(从)远程主机上载(下载)文件。

TCP/IP 协议中,FTP 标准命令 TCP 端口号为 21,Port 方式数据端口为 20。FTP 协议的任务是从一台计算机 将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统 无关。假设两台计算机通过 ftp 协议对话,并且能访问 Internet, 你可以用 ftp 命令来传输文件。每种操 作系统使用上有某一些细微差别,但是每种协议基本的命令结构是相同的。

1.1.2、FTP 协议的传输方式

FTP 的传输有两种方式:ASCII 传输模式和二进制数据传输模式。

1.ASCII 传输方式:假定用户正在拷贝的文件包含的简单 ASCII 码文本,如果在远程机器上运行的不 是 UNIX,当文件传输时 ftp 通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文 件的格式。

但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处 理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非 打印字符)。在拷贝任何非文本文件之前,用 binary 命令告诉 ftp 逐字拷贝,不要对这些文件进行处理, 这也是下面要讲的二进制传输。

2.二进制传输模式:在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使 目的地机器上包含位序列的文件是没意义的。例如,macintosh 以二进制方式传送可执行文件到 Windows 系 统,在对方系统上,此文件不能执行。

如果你在 ASCII 方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢 ,也会损坏数 据,使文件变得不能用。(在大多数计算机上,ASCII 方式一般假设每一字符的第一有效位无意义,因为 ASCII 字符组合不使用它。如果你传输二进制文件,所有的位都是重要的。)如果你知道这两台机器是同样 的,则二进制方式对文本文件和数据文件都是有效的。

1.1.3、Ftp 命令

1、FTP 服务器的登陆
匿名用户:FTP 口令:FTP
用户 :ANONYMOUS 口令:任何电子邮件
2、显示文件信息:DIR/IS
3、下载文件:GET 文件名 (下载到当前目录)
4、上传文件:PUT 文件名
5、多文件下载:MGET
6、多文件上传:MPUT
7、退出:BYE
8、帮助:HELP

1.2、linux 下的相关文件和服务

1、vsftpd 包的安装

vsftpd-2.0.5-10.el5.386.rpm

2、vsftpd 服务名称 vsftpd

3、相关文件

/etc/vsftpd/vsftpd.conf vsftpd 的主配置文件
/etc/vsftpd.user_list 用户登录配置文件
/etc/vsftpd.ftpusers 该文件中的用户绝对不能登录到主机
/etc/vsftpd.chroot_list 用户被限制其家目录,不允许向上级目录查看,默认情况下该文件并没有建立
/var/ftp 匿名 ftp 账户的家目录

1.3、vsftpd 主配置文件的参数介绍

/etc/vsftpd/vsftpd.conf 文件的相关参数如下:
anonymous_enable=YES 是否允许匿名 ftp,如否则选择 NO 
local_enable=YES 是否允许本地用户登录 
local_umask=022 默认的 umask 码
anon_upload_enable=YES 是否允许匿名 ftp 用户访问
anon_upload_enable=YES 是否允许匿名上传文件 
anon_mkdir_write_enable=YES 是否允许匿名用户有创建目录的权利
dirmessage_enable=YES 是否显示目录说明文件,默认是 YES 但需要手工创建.message 文件 
xferlog_enable=YES 是否记录 ftp 传输过程 
connect_from_port_20=YES 是否确信端口传输来自 20(ftp-data) 
chown_username=username 是否改变上传文件的属主,如果是需要输入一个系统用户名,你可以把上传的文
件都改成 root 属主 
xferlog_file=/var/log/vsftpd.log ftp 传输日志的路径和名字默认是/var/log/vsftpd.log 
xferlog_std_format=YES 是否使用标准的 ftp xferlog 模式 
idle_session_timeout=600 设置默认的断开不活跃 session 的时间 
data_connection_timeout=120 设置数据传输超时时间 
ascii_upload_enable=YES ascii_download_enable=YES 是否使用 ascii 码方式上传和下载文件 
ftpd_banner=Welcome to chenlf FTP service. 定制欢迎信息 

1.4、配置匿名的 ftp 服务器

1.4.1、基本的匿名 ftp 服务器

启动 vsftpd 服务即可使用

使用命令行和浏览器进行测试

1.4.2、配置允许匿名用户上传的 ftp 服务器

1、在匿名用户的主目录下,给默认的 pub 目录添加写权限

2、编辑 ftp 的主配置文件,添加允许上传语句第 27 行和 31 行分别定义允许匿名用户上传文件和上传目录

write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES

3、重新启动服务

1.4.3、配置匿名用户的完全权限

在用户可以上传的基础上,对匿名用户开放所有权限,如续传,删除等,然后重新启动服务即可。

anon_world_readable_only=NO
anon_other_write_enable=YES

1.4.4、配置基于端口的匿名虚拟 ftp 服务器

1、生成虚拟的 ftp 服务器主配置文件

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/port.conf

2、编辑虚拟的 ftp 主配置文件/etc/vsftpd/port.conf

vi /etc/vsftpd/port.conf
添加虚拟服务器的端口和匿名用户
listen_port=2121
ftp_username=ftpguest

3、创建虚拟 ftp 服务器的匿名用户和登录的主目录

useradd -d /var/port ftpguest

4、重新启动 vsftpd 服务

1.5、配置本地用户的 ftp 服务器

需要使用用户和密码来访问的 ftp 服务器

1、编辑主配置文件/etc/vsftpd/vsftpd.conf,第 97 行,锁定所有用户的主目录

chroot_local_user=YES

2、重新启动服务

1.6、对用户限制下载速度

1、编辑主配置文件

anon_max_rate=50000
local_max_rate=200000
单位为 byte/s

2、重新启动服务即可

相关推荐
川石课堂软件测试2 分钟前
性能测试|docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台
运维·javascript·深度学习·jmeter·docker·容器·grafana
龙哥说跨境11 分钟前
如何利用指纹浏览器爬虫绕过Cloudflare的防护?
服务器·网络·python·网络爬虫
AltmanChan11 分钟前
大语言模型安全威胁
人工智能·安全·语言模型
马船长22 分钟前
红帆OA iorepsavexml.aspx文件上传漏洞
安全
数据与后端架构提升之路24 分钟前
从神经元到神经网络:深度学习的进化之旅
人工智能·神经网络·学习
懒大王就是我26 分钟前
C语言网络编程 -- TCP/iP协议
c语言·网络·tcp/ip
一行133 分钟前
电脑蓝屏debug学习
学习·电脑
Elaine20239139 分钟前
06 网络编程基础
java·网络
星LZX1 小时前
WireShark入门学习笔记
笔记·学习·wireshark
阑梦清川1 小时前
在鱼皮的模拟面试里面学习有感
学习·面试·职场和发展