首页 > 其他分享 >FTP服务

FTP服务

时间:2024-09-22 17:54:28浏览次数:12  
标签:FTP lftp 服务 100.10 用户 192.168 YES

一、简介

FTP:文件传输协议(File Transfer Protocol 简称FTP),采用c/s模式工作。

控制端口:21

数据端口:20

FTP工作原理:
1、主动模式  standard

FTP客户端从任意一个非特权端口N(N>1024)发送PORT命令给FTP服务端控制端口21,

其中PORT命令包含客户端接收数据的端口N+1,此时服务器收到了这条PORT命令,

它就会让自己的数据端口20与客户端的数据端口N+1连接。此时如果传输数据的话,

就需要服务端与客户端重新建立一个新的连接来传输数据。

2、被动模式  passive

FTP客户端从任意一个非特权端口N(N>1024)发送PASV命令给FTP服务端控制端口21,

其中PASV命令包含客户端接收数据的端口N+1,此时服务端会随机开启一个

高端端口P(P>1024),并发送PORT命令给客户端,PORT命令包括服务端的数据端口P,

然后客户端从数据端口N+1发起一个请求连接服务端数据端口P,这时产生了数据连接。

使用被动模式就不需要服务端与客户端重新建立一个新的连接来传输数据。

不同点:

传输数据的连接方式不同:主动模式是服务端向客户端发起数据连接,

而被动模式是客户端向服务端发起数据连接。

相同点:

都是使用21号控制端口进行用户验证和管理。

特点:
  1. 客户端-服务器架构:FTP服务通常由一个服务器端和一个或多个客户端组成。服务器端负责存储文件,而客户端则用于请求和接收这些文件。

  2. 两个端口:FTP协议使用两个端口,一个用于命令传输(通常是端口21),另一个用于数据传输(通常是端口20)。命令端口用于发送和接收FTP命令,而数据端口用于实际的数据传输。

  3. 匿名访问:FTP允许匿名访问,这意味着用户可以不提供任何身份验证信息即可访问FTP服务器上的某些公共文件。

  4. 文件传输模式:FTP支持两种文件传输模式:ASCII模式和二进制模式。ASCII模式用于文本文件,而二进制模式用于非文本文件,如图像和程序文件。

  5. 目录列表:FTP服务器可以提供一个目录列表,显示服务器上可用的文件和目录,方便用户浏览和选择要下载的文件。

  6. 多线程支持:一些FTP客户端支持多线程下载,这意味着可以同时从服务器下载多个文件,提高了下载效率。

  7. 安全性:FTP协议本身不提供加密,因此传输的数据可能被截获。为了提高安全性,可以使用SFTP(SSH File Transfer Protocol)或FTPS(FTP Secure),它们在FTP的基础上增加了加密功能。

  8. 跨平台:FTP是一个跨平台的协议,可以在不同的操作系统之间传输文件,如Windows、Linux、macOS等。

  9. 简单易用:FTP协议的使用相对简单,用户可以通过图形界面的FTP客户端或命令行工具来访问FTP服务器。

  10. 广泛的支持:几乎所有的网络操作系统都支持FTP协议,使得FTP成为文件传输的通用标准。

二、FTP服务的配置文件和部署

1、安装FTP服务所需的软件包
[root@node1 ~]# yum -y install vsftpd

主配置文件:/etc/vsftpd/vsftpd.conf

匿名用户的主目录:/var/ftp/

匿名用户的下载目录:/var/ftp/pub/

2、主配置文件/etc/vsftpd/vsftpd.conf解释
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO     ------控制匿名用户访问权限,YES表示允许匿名访问FTP服务器。
#
# Uncomment this to allow local users to log in.
# When SELinux is enforcing check for SE bool ftp_home_dirlocal_enable=YES    ---控制FTP用户是否可以访问FTP服务器,YES表示允许FTP用户访问FTP服务,同时当selinux处于enforcing状态时,需要调整ftp_home_dir的bool值。(但是从RHEL7上安装vsftpd3.0版本后,就是没有ftp_home_dir这个bool值了,所以就不需要修改此bool值)
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES     ----控制FTP用户对FTP服务器的可写权限,YES表示可写。
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022      ----FTP用户创建目录或文件时的umask值
# When SELinux is enforcing check for SE bool allow_ftpd_anon_write, allow_ftpd_full_access
#anon_upload_enable=YES       ----控制匿名用户上传文件的权限,YES表示允许匿名用户上传文件。当selinux处于enforcing状态时,需要调整ftpd_anon_write和ftpd_full_access的bool值。
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
#anon_mkdir_write_enable=YES   ---控制匿名用户创建目录的权限,YES表示允许匿名用户创建目录
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES          ---显示说明性文件
#
# Activate logging of uploads/downloads.
xferlog_enable=YES           ---控制文件在传输过程中是否被日志记录,YES表示记录
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES        ----强制使用20端口进行数据传输
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES           --设置为YES时,默认匿名用户上传文件的所有者为FTP
#chown_username=whoever   ---whoever修改为ftp用户,匿名用户上传文件的所有者将变成该FTP用户。
#
# You may override where the log file goes if you like. The default is shown
# below.
#xferlog_file=/var/log/xferlog          ---设置FTP服务日志文件位置
#
# If you want, you can have your log file in standard ftpd xferlog format
# Note that the default log file location is /var/log/xferlog in this case.
xferlog_std_format=YES        ---设置标准的FTP Xferlog模式
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600    ---控制连接超过600秒空闲时,自动断开连接
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120    ---控制数据连接建立后120秒内无交互时,自动断开连接。
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpsecure    ---非特权状态下使用ftpsecure用户
You may fully customise the login banner string:
#ftpd_banner=Welcome to blah FTP service.   ---成功连接FTP服务器时的提示语
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES            ---禁止下载文件到指定的邮箱地址中
# (default follows)
#banned_email_file=/etc/vsftpd/banned_emails     ---设置电子邮箱地址
# the user does not have write access to the top level directory within the
# chroot)
#chroot_local_user=YES        ---控制FTP用户能否离开自己的FTP主目录,
YES表示禁止FTP用户离开自己的FTP主目录。
#chroot_list_enable=YES        ---控制列表中的FTP用户能否离开自己的FTP主目录,
YES表示禁止列表中的FTP用户离开自己的FTP主目录。默认是允许
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list    ---FTP用户列表文件,每一行一个用户名
#ls_recurse_enable=YES   ---控制FTP用户是否能使用类似 ls -R命令,
默认是禁止的,YES表示允许使用
# When "listen" directive is enabled, vsftpd runs in standalone mode and
# listens on IPv4 sockets. This directive cannot be used in conjunction
# with the listen_ipv6 directive.
listen=NO            ---控制是否侦听ipv4套接字,NO表示不侦听ipv4套接字,
不能同时设置侦听ipv4和ipv6套接字
listen_ipv6=YES   --控制是否侦听ipv6套接字,YES表示侦听ipv6套接字,
默认情况下侦听ipv6的任意地址,此时能够接受来自客户端ipv6的连接和ipv4的连接
pam_service_name=vsftpd    ---设置PAM认证文件的名称
userlist_enable=YES         ---控制是否启动/etc/vsftpd/user_list文件,YES表示启动
tcp_wrappers=YES    ---控制是否启用/etc/hosts.allow和/etc/hosts.deny配置文件
管理网络主机对FTP服务的访问,YES表示启用。
3、配置文件主要功能解释: 
anonymous_enable=NO         # 禁止匿名用户访问FTP服务器。
local_enable=YES            # 允许本地用户(linux系统用户)通过其用户名登录FTP服务器。
write_enable=YES            # 允许FTP用户在服务器上写入文件。
local_umask=022             # 设置新创建文件的权限,通常用于确保文件有适当的权限。
 
anon_upload_enable=YES      # 控制匿名用户上传文件的权限,YES表示允许匿名用户上传文件
dirmessage_enable=YES       # 允许用户在进入新目录时显示目录消息
connect_from_port_20=YES:使用端口20作为数据连接的源端口。
 
 
 
#chroot_local_user=YES        # 控制FTP用户能否离开自己的FTP主目录,
YES表示禁止FTP用户离开自己的FTP主目录。
 
#chroot_list_enable=YES       # 控制列表中的FTP用户能否离开自己的FTP主目录,
YES表示禁止列表中的FTP用户离开自己的FTP主目录。默认是允许
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list   # FTP用户列表文件,每一行一个用户名
 
 
chroot_local_enable=YES时:
chroot_list_enable=YES  代表/etc/vsftpd/chroot_list文件中定义的FTP用户不受限,
其他的ftp用户受限
chroot_list_enable=NO  代表所有的FTP用户受限
 
chroot_local_enable=NO时:
chroot_list_enable=YES  代表只限制/etc/vsftpd/chroot_list文件中定义的FTP用户
chroot_list_enable=NO  所有的FTP用户均不受限。

三、示例

1、匿名用户

先打开服务端配置文件中的匿名访问,启动ftp服务

anonymous_enable=YES

使用客服端匿名访问服务端,此时只能下载,不能上传

[root@node2 ~]# lftp 192.168.100.10
lftp 192.168.100.10:~> ls
drwxr-xr-x    2 0        0              19 Jul 22 11:04 pub
lftp 192.168.100.10:/> cd pub/
lftp 192.168.100.10:/pub> ls
-rw-r--r--    1 0        0               0 Jul 22 11:04 file1
lftp 192.168.100.10:/pub> get file1                  // 默认只允许下载
lftp 192.168.100.10:/pub> exit
[root@node2 ~]# ls
anaconda-ks.cfg  file1

 设置允许匿名用户访问FTP服务器时能够在/var/ftp/pub目录下进行文件上传

打开服务端的配置文件修改 

anon_upload_enable=YES    # 匿名上传

 修改/var/ftp/pub目录权限

setfacl -m u:ftp:rwx /var/ftp/pub/

重启服务

客服端上传文件

[root@node2 ~]# lftp 192.168.100.10
lftp 192.168.100.10:~> cd pub/
lftp 192.168.100.10:/pub> ls
-rw-r--r--    1 0        0               0 Jul 22 11:04 file1
lftp 192.168.100.10:/pub> put file2
lftp 192.168.100.10:/pub> ls
-rw-r--r--    1 0        0               0 Jul 22 11:04 file1
-rw-------    1 14       50              0 Jul 22 11:20 file2
lftp 192.168.100.10:/pub>

设置允许匿名用户访问FTP服务器时能够在/var/ftp/pub目录下创建目录

修改配置文件,重启服务

write_enable=YES
anon_mkdir_write_enable=YES

测试

[root@node2 ~]# lftp 192.168.100.10
lftp 192.168.100.10:~> cd pub/
lftp 192.168.100.10:/pub> mkdir file3
mkdir ok, `file3' created
lftp 192.168.100.10:/pub> ls
-rw-r--r--    1 0        0               0 Jul 22 11:04 file1
-rw-------    1 14       50              0 Jul 22 11:20 file2
drwx------    2 14       50              6 Jul 22 11:24 file3
lftp 192.168.100.10:/pub> 

设置允许匿名用户访问FTP服务器时能够对/var/ftp/pub目录中的文件或目录进行重命名或删除操作

修改配置文件

anon_other_write_enable=YES

测试

[root@node2 ~]# lftp 192.168.100.10
lftp 192.168.100.10:~> cd pub/
lftp 192.168.100.10:/pub> ls
-rw-r--r--    1 0        0               0 Jul 22 11:04 file1
-rw-------    1 14       50              0 Jul 22 11:20 file2
drwx------    2 14       50              6 Jul 22 11:24 file3
lftp 192.168.100.10:/pub> rm -rf file1
rm ok, `file1' removed
lftp 192.168.100.10:/pub> ls
-rw-------    1 14       50              0 Jul 22 11:20 file2
drwx------    2 14       50              6 Jul 22 11:24 file3
2、FTP用户

创建三个ftp用户user1,user2,user3,在user1家目录下创建一个file123
通过FTP用户访问FTP服务器时,默认访问的主目录为FTP用户家目录

lftp 192.168.100.10:/pub> user user1
Password: 
lftp [email protected]:~> ls
-rw-r--r--    1 0        0               0 Jul 23 01:22 user123
lftp [email protected]:~> 

设置FTP用户访问FTP服务器时,将所有FTP用户访问的目录限制在自己的主目录中,不允许FTP用户访问其他目录( FTP用户对自己的家目录不能有写入的权限)

更改配置文件

chroot_local_user=YES
allow_writeable_chroot=YES   # 插入在配置文件任何地方都可以

测试

[root@node2 ~]# lftp 192.168.100.10
lftp 192.168.100.10:~> user user1
Password: 
lftp [email protected]:~> ls
-rw-r--r--    1 0        0               0 Jul 23 01:22 user123
lftp [email protected]:/> cd ..                // 此时已经不能退出去了
lftp [email protected]:/> ls
-rw-r--r--    1 0        0               0 Jul 23 01:22 user123
lftp [email protected]:/> 

设置FTP用户访问FTP服务器时,将部分FTP用户访问的目录限制在自己的主目录中,其他FTP用户仍然可以访问其他目录。

如果限制user1和user2用户访问的目录限制在自己的家目录中,user3可以访问其他目录

 修改配置文件

chroot_list_enable=YES
 
chroot_list_file=/etc/vsftpd/chroot_list

更改/etc/vsftpd/chroot_list    FTP用户列表文件

[root@node1 ~]# cat /etc/vsftpd/chroot_list
user1
user2

测试

lftp 192.168.100.10:~> user user1
Password: 
lftp [email protected]:~> ls
-rw-r--r--    1 0        0               0 Jul 23 01:22 user123
lftp [email protected]:/> cd ..
lftp [email protected]:/> ls
-rw-r--r--    1 0        0               0 Jul 23 01:22 user123    # user1没有退出
lftp [email protected]:/> user user2
Password: 
lftp [email protected]:~> ls
-rw-r--r--    1 0        0               0 Jul 23 01:44 1234
lftp [email protected]:/> cd ..
lftp [email protected]:/> ls
-rw-r--r--    1 0        0               0 Jul 23 01:44 1234       # user2没有退出
lftp [email protected]:/> user user3
Password: 
lftp [email protected]:~> ls
-rw-r--r--    1 0        0               0 Jul 23 01:45 user321
lftp [email protected]:~> cd ..
cd ok, cwd=/home                                                   # user3可以退出
lftp [email protected]:/home> 
3、需要注意的是

chroot_local_enable=YES时:
chroot_list_enable=YES  代表/etc/vsftpd/chroot_list文件中定义的FTP用户不受限,其他的ftp用户受限
chroot_list_enable=NO  代表所有的FTP用户受限

chroot_local_enable=NO时:
chroot_list_enable=YES  代表只限制/etc/vsftpd/chroot_list文件中定义的FTP用户
chroot_list_enable=NO  所有的FTP用户均不受限

四、思维导图 

标签:FTP,lftp,服务,100.10,用户,192.168,YES
From: https://blog.csdn.net/2301_78088515/article/details/142439710

相关文章

  • 软件开发与外包,多元化技术服务,数字技术服务与信息安全
    多元化技术服务:公司经营范围广泛,包括技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广等多个方面,能够为客户提供全方位的技术支持。软件开发与外包:专注于软件开发和软件外包服务,能够根据客户需求定制化开发软件产品,满足客户的特定需求。数字技术服务与信息安全:提供......
  • 使用 SAP BTP Document Information Extraction 服务,处理老师发到家长群里的成绩单
    笔者之前的文章提到,老师会把班上周考的成绩单,发送到家长群里。成绩单包含了每位同学的学号和分数。成绩单的格式为图片即png或者jpg格式。开学已经一个月了,老师把最近考试成绩发到了微信群里,我用ChatGPT简单分析一下我用ChatGPT识别这些图片,把里面的信息提取出来,......
  • 有服务器后怎么测试自己的写的代码
    后端程序员,如果想要测试自己写的代码肯定是需要一个工具的,这边我推荐的是广受好评的测试工具:ApiFox这款测试工具不仅美观功能还非常的强大,今天保姆级教学,如果有自己服务器的情况下该怎么去安装测试!!!该篇文章是有了服务器后的教学,如果需要服务器,可以看我下面链接的文章,阿里......
  • 微服务技术(一)概述
    微服务技术的重要性目前各大电商平台,国企,事业单位,银行,都在建立高并发稳定的信息系统,基本都在使用微服务框架技术作为架构。已经不是趋势,而是实实在在用到的技术,标书里明确要求要使用云平台,微服务技术。应聘去做单机版系统的程序员工资一般不会高JAVA工程师拿到高薪必须掌握的......
  • Android轻量级RTSP服务使用场景分析和设计探讨
    技术背景好多开发者,对我们Android平台轻量级RTSP服务模块有些陌生,不知道这个模块具体适用于怎样的场景,有什么优缺点,实际上,我们的Android平台轻量级RTSP服务模块更适用于内网环境下、对并发要求不高的场景,实现低成本、低延迟的音视频实时传输。本文就上述问题,做个技术探讨,先说......
  • 本地服务器怎样安装帝国CMS模版网站
    要在本地服务器上安装帝国CMS模板网站,你需要按照以下步骤操作:准备工作搭建本地服务器环境如果你还没有搭建本地服务器环境,可以选择使用集成开发环境(IDE)如XAMPP、WAMP、MAMP或LaravelValet等。这些工具可以快速搭建PHP、MySQL和Apache/Nginx服务器环境。下载帝国CMS安装......
  • kubernetes集群公共服务 DNS
    1.我们先按照之前的方式新增加一个虚拟机。一、软件安装#yum-yinstallbind二、软件配置2.1主配置文件修改#vim/etc/named.conf#cat-n/etc/named.conf1//2//named.conf3//4//ProvidedbyRedHatbindpackagetoconfiguretheISCB......
  • 听说ChatGPT o1推理模型即将问世,传统问答系统是否还有存在的必要?毕业设计:基于知识图谱
     OpenAI隆重推出全新一代的o1模型,该模型在多个领域展现出了非凡的能力,标志着人工智能技术的又一次飞跃。该模型专门解决比此前的科学、代码和数学模型能做到的更难的问题,实现复杂推理。那来看看并体验以下我们传统的问答系统的设计流程和具体面貌吧!!!1.1系统架构设计1.1.1......
  • 3、多通道FTP、ASPF
    在TCP/IP模型中,应用层提供常见的网络应用服务,如Telnet、HTTP、FTP等协议。而应用层协议根据占用的端口数量可以分为单通道应用层协议与多通道应用层协议。1、单通道应用层协议:通信过程中只需占用一个端口的协议。例如:Telnet只需占用23端口,HTTP只需占用80端口;2、多通道应用层......
  • python+flask计算机毕业设计+vue的服装售后服务系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着电子商务的蓬勃发展,服装行业作为其中的重要组成部分,其售后服务质量已成为影响消费者购买决策的关键因素之一。传统的服装售后服务模式......