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

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

2023年1月10日 54点热度

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大神网

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

最新 热点 随机
最新 热点 随机
英伟达将LinuxGPU内核模块作为开放源码/MIT双重许可证(图) virtualboxlinux官方版免费、小巧,同时支持Windows、Linux和Mac系统主机 Linux平台下的嵌入式软件要具备说明技能吗? 图解linuxlinux内核结构框图对内核框图有个总体的把握 linux虚拟机的安装步骤是什么?虚拟机和服务器的区别 精通Linux程序设计的高级程序员并非一件可望不可及的事情 linux虚拟机软件 Linux在安装的时候要注意什么?Linux安装注意事项 Python都有哪些应用,学习完成Python后能的工作方向 微软考虑用Rust开发内核的Linux内核-Hartman Linux内核和文件系统权限管理的基本用法——ACL权限 Linux内核启动有次引导程序Grub 小白在阿里云云服务器上如何发布自己的网站(建站|详细) 阿里云>社区>主题地图S>查看存储推荐 Linux的内核放在了哪里?/boot的启动目录一览 Linux中修改文件权限的命令、创建者所在组、所有人 linux到底难不难学呢?推荐可以查看Linux命令大全 Linux下修改文件权限的权限与所有权的实现就显得很有必要 国内性价比很高的Linux虚拟主机系统安装的流程是什么? 1.Linux磁盘分区和目录Linux发行版本之间的差别很少? 基于命令修改文件的权限命令-ld
Linux5.12的推送请求不断涌入新开放的合并窗口预计4月底看到它的稳定版本go语言被称作互联网时代的c语言,用来开发嵌入式linux的理由腾讯云服务器上也搭建一套环境,安装成功自动启动个人笔记本安装Ubuntu20.04LTS下载地址启动第一步--加载BIOS当你打开计算机电源(组图)虚拟机安装Ubuntu操作系统-Ubuntu空间20G镜像下载指令中各个make-C~/linuxM=`pwd编译Linux启动过程中的几个部分内核的引导(图)如何在Linux上安装虚拟机的结果大多都是怎么安装的一个免费软件时间跟进的小白鼠是什么鬼?专题计算机是如何启动的?、内核操作系统的启动流程学习Linux最简单、最实用的环境就是虚拟机环境(上)linux系统位数最简单的命令--linux基于命令修改文件的权限命令-lddf显示指定磁盘文件和目录的磁盘使用空间命令参数《构建高性能web站点》推荐理由及方法都能找到1.Linux磁盘分区和目录Linux发行版本之间的差别很少?centos系统版本详细信息解决方案与操作系统版本兼容的重要性分析国内性价比很高的Linux虚拟主机系统安装的流程是什么?Linux下修改文件权限的权限与所有权的实现就显得很有必要
娃白天睡觉不太踏实,搞一个局域网实时监控,怎么办? Linux进程中的基本概念程序是什么?进程的定义? 如何在Linux系统上下载和安装Steam呢?如何操作 Linux下安装Redis服务的方法 腾讯云服务器上也搭建一套环境,安装成功自动启动 英伟达将LinuxGPU内核模块作为开放源码/MIT双重许可证(图) Linux总结出来的11个炫酷的Linux终端命令大全! Windows中命令提示符批量修改文件名称没有直接的方法是什么? Linux云主机无法SSH远程登录,上午还用得挺好 Linux账号密码过期导致无法登录CentOS7模式重置root用户密码 Linux中国荣誉研究生申请之cron定时器 老男孩教育怎么样有哪些课程?-八维教育 Linux常用应用工具软件安装管理——RedHatEnterprise存储库 统信UOS为啥火?国产操作系统又该如何发展?(组图) 《Linux命令全集》之Linux命令解释和例子 Linux计算机的防火墙必需运行OpenSSH服务器软件 Ubuntu和其他Linux中安装最新的LibreOffice版本的快速指南 2022年最适合旧PC的10款轻量级Linux发行版 问在线客服扫码选项配置选项选项 如何将普通用户添加到sudo组以及给定的权限使其成为普通用户
标签聚合
linux系统 linux服务器 软件 电脑 shell sudo 虚拟机 命令模式 文件目录 unix
书籍
课程
技术群
技术干货大合集↓
  • 2023年2月 / 1篇
  • 2023年1月 / 161篇
  • 2022年12月 / 187篇
  • 2022年11月 / 76篇

COPYRIGHT © 2023 linuxgod.net ALL RIGHTS RESERVED.