Linux :ftp

Ftp简介

  • 文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,由客户端和服务端两部分组成
  • 可以操作任意类型的文件,而不用进行进一步的处理,但是有着极高的延时性
  • 提供用户认证:本地用户,虚拟用户,匿名用户
  • 传输模式:ASCLL传输、二进制传输
  • 基于C/S(客户/服务器)架构实现
  • 应用于 TCP/IP 模型的第四层, 应用层
  • 传输数据使用TCP
  • FTP也是一个应用程序,基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。可以使用FTP进行下载和上传。

工作方式:传输一次信息,有多条线路交互的过程,所以有延时

端口

  • TCP21 命令:是指文件管理类命令,始终在线的持久性连接,直到用户退出登录为止
  • TCP20 数据:是指数据传输,按需创建及关闭的连接

port:主动工作方式,数据主动响应

  • FTP客户端的高位随机端口和FTP服务器的TCP21端口建立连接
  • 服务端返回一个确认
  • 服务器端主动通过自己的TCP20端口连接至客户端的指定端口发送数据
  • 客户端返回一个确认
  • 服务器断开连接(数据响应后断开连接,并不实时连接)
    在这里插入图片描述

passive:被动工作方式,数据被动响应

  • FTP客户端的高位随机端口和FTP服务器的TCP21端口建立连接
  • FTP服务器收到命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求
  • 客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送

在这里插入图片描述


用户分类

本地用户

  • 可以登录系统的真实用户,系统用户通过ftp访问的资源位置为用户的家目录
  • 访问特点:用户、密码进行验证后可以访问

虚拟用户

  • 仅用于访问某特定服务中的资源,虚拟用户通过ftp访问的资源位置为给虚拟用户指定的映射成为的系统用户的家目录

匿名用户

  • 不要求用户事先在该服务器进行登记注册,也不用取得FTP服务器的授权,可以访问公共资源
  • 匿名用户的共享资源位置是/var/ftp/pnb

配置

  1. 安装vsftpd
dnf install vsftpd -y
  1. 启动服务
systemctl restart vsftbd			启动ftp服务
  1. 关闭防火墙,Linux
systemctl stop firewalld		关闭防火墙
setenforce 0
  1. 配置vsftpd
rpm -ql vsftpd		显示ftb的所有文件(配置文件在etc)
vim /etc/vsftpd/vsftpd.conf #主配置文件

connect_from_port_20=YES
		参数		  值
# recommended!			注释
#chown_uploads=YES		命令
访问个人资源
local_enable=YES		本地用户可以访问(下载)
write_enable=YES		写权限(上传、删除)
local_umask=022			权限掩码

allow_writeable_chroot=YES	允许被禁锢的用户家目录有写权限
chroot_local_user=YES	    禁锢所有的ftp本地用户于其家目录中
公共网络资源		/var/ftp/pnb
anonymous_enable=NO				匿名用户启动

write_enable=YES				写权限
anon_upload_enable=YES			匿名用户的上传
anon_mkdir_write_enable=YES		匿名用户上传目录的权限

anon_umask=077					权限掩码
anon_other_write_enable=YES  	允许匿名用户删除目录
虚拟用户
基于本地用户可以正常访问,禁锢家目录
chroot_local_user=YES	    禁锢所有的ftp本地用户于其家目录中

创建系统用户,禁止系统用户进行登录
useradd -s /sbin/nologin ce 创建账户ce
		
修改主配置文件,增加以下三个选项 
vim /etc/ysftpd/ysftp.d.conf	
guest_enable=YES 				虚拟用户模式开启
guest_username=ce  				ce为系统用户(真实本地用户)
yirtuaLuse_local privs=YES 		本地虚拟用户特权开启 
pam_service_name=ysftpd			设置PAM认证模块使用名称预设为vsftpd 

创建虚拟用户
格式为一行用户名,一行密码,示例中abc为用户名redhat为密码
vim /etc/ysftpd/vfile						位置随意(建议在/etc/ysftpd)
ha1											账号
redhat										密码

将虚拟用户文件转换成用户数据库文件
db_load -T-t hash -f /etc/ysftpd/vfile /etc/ysftpd/vfile.db 

修改虚拟用户数据库文件权限
shmod 600 /etc/ysftpd/vfile.db 


编辑认证配置文件
vim /ets/pam.d/vsftpd
注释掉所有行,并添加以下两行:
auth required pam_userdb.so db=/etc/ysftpd/xfile
account required pam_userdb.so db=/etc/ysftpd/xfile
  1. 重启服务
systemctl restart vsftpd 	重启ftp服务	

参数 作用
dirmessage_enable=YES 目录基本信息
xferlog_enable=YES 上传下载日志
connect_from_port_20=YES 20号数据端口
chown_uploads=YES
xferlog_file=/var/log/xferlog 开启日志文件
xferlog_std_format=YES 开启日志标准格式
listen=NO 监听(IPV4)
listen_ipv6=YES 监听(IPV6+IPV4)
pam_service_name=vsftpd 用户认证模块
userlist_enable=YES 开启用户列表
anonymous_enable=YES 启用匿名用户登录
anon_upload_enable=YES 允许匿名用户上传
anon_mkdir_write_enable=YES 允许匿名用户创建目录,但是不能删除
local_enable=YES 启用本地用户登录
write_enable=YES 允许本地用户有写权限
chroot_list_enable=YES 开启禁锢文件列表 需要与chroot_list_file参数一起使用
chroot_list_file=/etc/vsftpd/chroot_list 指定禁锢列表文件路径 在此文件里面的用户将被禁锢在其家目录中
allow_writeable_chroot=YES 允许被禁锢的用户家目录有写权限
xferlog_enable=YES 是否启用传输日志,记录ftp传输过程
xferlog_std_format=YES 传输日志是否使用标准格式
xferlog_file=/var/log/xferlog 指定传输日志存储的位置
chown_uploads=YES 是否启用改变上传文件属主的功能
chown_username=whoever 指定要将上传的文件的属主改为哪个用户 此用户必须在系统中存在
pam_service_name=vsftpd 指定vsftpd使用/etc/pam.d下的 哪个pam配置文件进行用户认证
userlist_enable=YES 是否启用控制用户登录的列表文件: 默认为/etc/vsftpd/user_list文件
userlist_deny=YES 是否拒绝userlist指定的列表文件中存在的用户登录ftp
max_clients=# 最大并发连接数
max_per_ip=# 每个IP可同时发起的并发请求数
anon_max_rate 匿名用户的最大传输速率,单位是“字节/秒”
local_max_rate 本地用户的最大传输速率,单位是“字节/秒”
dirmessage_enable=YES 启用某目录下的.message描述信息 假定有一个目录为/upload,在其下创建一个文件名为.message, 在文件内写入一些描述信息,则当用户切换至/upload目录下时会自动显示.message文件中的内容
message_file 设置访问一个目录时获得的目录信息文件的文件名,默认是.message
idle_session_timeout=600 设置默认的断开不活跃session的时间
data_connection_timeout=120 设置数据传输超时时间
ftpd_banner=“Welcome to chenlf FTP service.” 定制欢迎信息,登录ftp时自动显示
anon_umask 设置匿名用户创建的文件或目录的遮罩码

/etc/vsftpd/ #配置文件目录

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

vsftpd常见的配置参数

访问

  • 我的电脑
ftp://192.168.203.130
  • Linux 命令界面
yum install lftp

lftp 192.168.203.130 -u v1	

猜你喜欢

转载自blog.csdn.net/m0_55778885/article/details/118680716
今日推荐