LinuxGod

LinuxGod.net
Linux大神网——精选每一篇高品质的技术干货
  1. 首页
  2. 开源快讯
  3. 正文

文件传输协议:文件传输的话控制端口21数据端口:20

2023年1月10日 127点热度

FTP:

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

控制端口:21

数据端口:20

FTP工作原理:

1、主动模式 standard

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

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

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

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

2、被动模式 passive

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

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

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

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

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

不同点:

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

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

相同点:

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

FTP服务器的部署与配置

1、安装FTP服务所需的软件包

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_dir

local_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表示启用。

示例:匿名用户

1、设置允许匿名用户访问FTP服务器

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=YES ---启用匿名登录

pasv_enable=YES ---启用passive被动模式

pasv_min_port=10000 ---开启最低的pasv端口,建议采用大于1024的高端口

pasv_max_port=11000 ---开启最高的pasv端口

systemctl restart vsftpd

firewall-cmd --add-service=ftp --permanent

firewall-cmd --add-port=10000-11000/tcp --permanent

firewall-cmd --reload

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

ls -ld /var/ftp/pub --查看/var/ftp/pub目录权限,发现其他用户对该目录没有写入权限

setfacl -m u:ftp:rwx /var/ftp/pub ---设置ftp用户对/var/ftp/pub目录有读写权限

setsebool -P ftpd_anon_write on

setsebool -P ftpd_full_access on

vim /etc/vsftpd/vsftpd.conf

write_enable=YES

anon_upload_enable=YES

systemctl restart vsftpd

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

vim /etc/vsftpd/vsftpd.conf

write_enable=YES

anon_mkdir_write_enable=YES

systemctl restart vsftpd

注意:除了上面设置外,还需要ftp服务账户必须对/var/ftp/pub目录具有读写的权限,

而且ftpd_anon_write和ftpd_full_access的bool设置为on。

这两步在第2题中已经完成了,所以不需要操作了。

linux安装ftp服务命令_ftp命令 linux_linux安装ftp命令

4、设置允许匿名用户访问FTP服务器时能够对/var/ftp/pub目录中的文件或

目录进行重命名或删除操作

vim /etc/vsftpd/vsftpd.conf

write_enable=YES

anon_other_write_enable=YES

systemctl restart vsftpd

注意:出了上面设置外,还需要ftp服务账户必须对/var/ftp/pub目录具有读写的权限,

而且ftpd_anon_write和ftpd_full_access的bool设置为on。

这两步在第2题中已经完成了,所以不需要操作了

示例:FTP用户

useradd ftpuser1

useradd ftpuser2

useradd ftpuser3

echo redhat | passwd --stdin ftpuser1

echo redhat | passwd --stdin ftpuser2

echo redhat | passwd --stdin ftpuser3

1、设置允许FTP用户访问FTP服务器

vim /etc/vsftpd/vsftpd.conf

local_enable=YES

write_enable=YES

systemctl restart vsftpd

注意:

1、通过FTP用户访问FTP服务器时,默认访问的主目录为FTP用户家目录,

此时FTP用户可以在自己的家目录下上传文件、下载文件、创建目录、

重命名文件或者目录、删除文件或目录,同时FTP用户可以切换至其他目录中访问

2、local_enable=YES write_enable=YES

这两个值为默认设置,另外在配置文件中提示还需要对ftp_home_dir

这个bool值进行设置为on。但是,在RHEL7版本中安装的vsftpd 3.0版本

已经没有定义这个bool值了。具体情况根据版本而定

2、设置FTP用户访问FTP服务器时,将所有FTP用户访问的目录限制在自己的主目录中,

不允许FTP用户访问其他目录( FTP用户对自己的家目录不能有写入的权限)

分析:

此时必须将ftpd_full_access的bool值设置为on,

同时FTP用户对自己家目录不能有写入权限,

否则会提示登录失败 500 OOPS:vsftpd:refusing to run with writable root

inside chroot()从2.3.5之后,vsftpd增强了安全检查,

如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!

如果检查发现还有写权限,就会报该错误。

要修复这个错误,可以用命令chmod u-w /home/ftpuser1去除用户主目录的写权限,

注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列两项中的一项

allow_writeable_chroot=YES

setsebool -P ftpd_full_access on

chmod u-w /home/ftpuser1

vim /etc/vsftpd/vsftpd.conf

chroot_local_user=YES

systemctl restart vsftpd

3、设置FTP用户访问FTP服务器时,将部分FTP用户访问的目录限制在自己的主目录中,

其他FTP用户仍然可以访问其他目录。

如果限制ftpuser1和ftpuser2用户访问的目录限制在自己的家目录中,

ftpuser3可以访问其他目录

setsebool -P ftpd_full_access on

chmod u-w /home/ftpuser1

chmod u-w /home/ftpuser2

vim /etc/vsftpd/vsftpd.conf

#chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

vim /etc/vsftpd/chroot_list

ftpuser1

ftpuser2

systemctl restart vsftpd

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用户均不受限。

ftpusers和user_list文件默认禁用这些用户访问ftp服务器

如果想仅允许某些FTP用户访问ftp服务器的话,需要将userlist_deny=NO写入

到vsftpd.conf这个配置文件中,然后把允许访问的ftp用户写入user_list文件中即可

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: ftp ftp命令 vsftpd配置 客户端服务器 文件目录
最后更新:2023年1月10日

Linux大神网

每日更新,欢迎收藏♥ 不积跬步无以至千里,加油,共勉。

点赞
< 上一篇
下一篇 >

Linux大神网

每日更新,欢迎收藏♥
不积跬步无以至千里,加油,共勉。

最新 热点 随机
最新 热点 随机
写入数据覆盖的分析与执行 解读Rainbond集群的安装和运维的原理,便于用户搭建Rainbond Linux基础知识:文件描述符、文件指针、索引节点 如何解决Linux下的无线网卡驱动的问题? linux 文件描述符 (师)-unused-fdKernel:2.6.14CPUarchitecture Linux系统下如何搭建SVN服务器,详细说明各配置项的功能 修改软件源文件、UI界面设置换源操作|Ubuntu Ubuntu14.04.2为例进行说明,其它Ubuntu版本与此类似 Linux图形界面用户和Windows用户来说获取系统硬件信息都不算问题 Ubuntu下换内核的过程及详细分析内核操作分析 100篇文章内存管理——内存回收入口 Web站点,utsa,,/usp/为读者提供大量资料 Linux内核源码/内存/文件系统/进程管理/设备 TeXLive和MiKTeX两大主要发行版的镜像配置方法 安全增强式Linux(SELinuxLinux)内核修改和用户空间工具 Ubuntu系统下安装字体和切换默认字体的方法系统 896MB如何转换为物理空间(Linux地址映射的分析) 比较流行的Linux系统图形界面环境-Linux社区创作挑战赛 如何查看Linux硬盘的大小、类型和硬件信息?方法 Linux内核中的虚拟服务器集合:ipvsadm命令
Android官方网站:OpenHandsetAlliance源码模式:开发源码内核linux中makefile文件 cdeveloper的第21篇原创技术文章建议横屏Makefile简介Fedora17新特色特色说明桌面环境28bata集成了GNOMELinux嵌入式系统智能手机系统的硬件设计Unix或者类Unix文件系统中的每个文件(或者目录)打开U盘什么文件都看不到小编总结了基于嵌入式Linux的智能手机系统软件的设计与实现如何在Linux中使用Firejail运行应用程序访问某个目录基于嵌入式��闹悄苁只�长沙理工大学C语言教程-Qt.12安装教程05-27Linux有7个运行级别(关机,停机模式、DellG3)(Linux基础知识)文件压缩、打包命令解析的Linux操作系统怎样执行?LinuxDNS服务器,如何安装、配置和维护它?AMD2950x+技嘉x399免驱USB网卡,我的无线网卡linux解压gz文件命令 蓝易云香港五网CN2网络压缩比率的测试环境Linux系统中用于管理和控制系统服务的强大工具介绍围绕API创建封装器的开源项目正变得越来越流行主频93.75MHz的MIPS64NECVR4300处理器在N64上运行如何在Linux系统中实现开机自启动呢?
快速解决Java服务线上CPU问题,掌握排查思路! Linux中如何查看分区的文件系统类型的方法-乐题库 Linux嵌入式系统智能手机系统的硬件设计 基于linux搭建一个,记录一下关键的坑怎么处理? 【知识点】如何记录常用的linux命令?(二) GCC在Linux内核方面的速度比LLVM/Clang更快 开发者学堂|Linux企业运维实战-入门及常用命令 虚拟机安装Ubuntu操作系统-Ubuntu空间20G镜像下载 10.5内核定时器编程TIMER_SOFTIRQ软中断,运行当前处理器CPU上到期的所有定时器 linux下mysql中可以使用REVOKE语句来删除某个用户的权限 kxJ红软基地软件说明(2014年10月更新) 不同服务器启动不同端口一样修改教程 什么是Linux命令的用处-八定时间和日期安排一次性工作 Linux启动过程中的几个部分内核的引导(图) 一个使用容器的最佳范例是使用Docker[1]_ Linux入门学习教程:如何一次性执行多个Linux命令 cron定时器 virtualbox安装virtualbox增强功能,虚拟机下载 再传到linux2.配置数据库的环境和路径3.登陆数据库修改 对比Linux和Windows,那macOS和Linux有什么区别?
标签聚合
linux系统 命令 虚拟机 电脑 linux服务器 命令模式 文件目录 sudo 软件 linux脚本
书籍
课程
技术群
技术干货大合集↓
  • 2023年6月 / 16篇
  • 2023年5月 / 93篇
  • 2023年4月 / 90篇
  • 2023年3月 / 129篇
  • 2023年2月 / 84篇
  • 2023年1月 / 161篇
  • 2022年12月 / 187篇
  • 2022年11月 / 76篇
友情链接:

Linux书籍 | Linux命令 | Linux系统 | RHCE红帽认证 | Linux软件 | Linux教程 | CentOS系统 | Linux内核 | Linux服务器 | Linux大神 | IT资源

COPYRIGHT © 2023 linuxgod.net ALL RIGHTS RESERVED.