首页 > 其他 > 详细

ftp服务及配置

时间:2020-10-14 22:52:08      阅读:39      评论:0      收藏:0      [点我收藏+]

FTP介绍

FTP文件传输协议(File Transfer Protocol),用于Internet上的控制文件的双向传输,是一个应用程序。工作在TCP/IP协议族的应用层,其传输层协议是TCP协议,目的在于提高文件传输的共享性和可靠性,是基于客户/服务器模式工作的

FTP协议

FTP会建立两个连接,将命令与数据分开传输,正是因为这样,提高了传输效率。

连接端口 作用
控制端口:21 基于tpc协议,建立控制连接
传输端口:20 上传/下载文件

每一个FTP命令发送后,FTP服务器就会返回一个字符串,其中包含一个响应码和一些说明信息,其中响应码主要用于判断命令是否被成功执行。

FTP客户端与服务端的沟通流程

步骤:

  • 建立控制连接

客户端以一个随机端口(大于1023)以TCP层根据服务器的IP,三次握手之后与服务端的21端口建立连接。这个TCP连接称为控制连接,用户发出的FTP命令和服务器的回应都是依靠该连接来传送的,在用户退出前一直存在。

  • 建立数据连接

在控制连接的基础上,客户端会以控制连接的随机端口+1的端口号来对服务端进行连接

  • 关闭FTP

当用户退出FTP时,客户端发送退出命令,之后控制连接被关闭,FTP服务结束。

文件传输方式

传输方式 解释
ASCLL传输方式 文件传输时FTP会自动调整文件的内容以便于把文件解析为另外那台计算机存储文本文件的格式。
二进制传输方式 二进制传输时,在拷贝任何非文本文件时,FTP会逐字拷贝,不会对这些文件进行处理。

文件传输模式

Port模式(主动模式)

技术分享图片

  • 三次握手建立控制连接,PortA 为随机端口号
  • 由于客户端的端口是随机的,所以客户端要先告知服务端自己的控制传输的端口号
  • 服务端根据提供的端口号主动连接客户端

Passive模式(被动模式)

技术分享图片

  • 客户端传输PASV给服务端,表明这是一次被动传输
  • 由于被动模式的服务端端口号是随机的,所以服务端需要告知客户端传输控制的端口号
  • 客户端得知端口号后,访问服务端

认证方式

  1. 匿名登录
  2. 服务器上系统用户登录
  3. 虚拟账户登录

三种登录方式的服务配置及实例

匿名登录

[root@localhost ~]# yum install -y vsftpd  安装服务

[root@localhost vsftpd]# vim /etc/vsftpd/vsftpd.conf     修改主配置文件

......
anonymous_enable=YES
......

local_umask=022
anon_umask=022         为上传的文件设置默认权限
......
anon_upload_enable=YES   设置上传权限
#
......
# new directories.
anon_mkdir_write_enable=YES  为ftp用户设置写权限

anon_other_write_enalbe=YES   为ftp账户设置删除权限

[root@localhost vsftpd]# setfacl -m u:ftp:rwx /var/ftp/pub/  设置文件特殊控制,将匿名用户ftp设置与共享文件的高级权限
[root@localhost vsftpd]# getfacl /var/ftp/pub/
getfacl: Removing leading ‘/‘ from absolute path names
# file: var/ftp/pub/
# owner: root
# group: root
user::rwx
user:ftp:rwx
group::r-x
mask::rwx
other::r-x

[root@localhost vsftpd]# systemctl enable --now vsftpd   启动服务


windows效果
技术分享图片

windows上传文件
技术分享图片

系统用户登录

[root@localhost vsftpd]# useradd ftp_user  添加用户,共享用户的家目录

[root@localhost vsftpd]# id ftp_user
uid=1002(ftp_user) gid=1002(ftp_user) groups=1002(ftp_user)
[root@localhost vsftpd]# passwd ftp_user 为用户设置密码
Changing password for user ftp_user.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully

windows效果

技术分享图片

上传文件
技术分享图片

linux服务端查看上传的文件

[root@localhost vsftpd]# ll /home/ftp_user
total 0
drwxr-xr-x. 2 ftp_user ftp_user 6 Oct 14 16:09 新文件夹

虚拟账户登录

vsftpd配置目录下新建虚拟账户及密码
[root@localhost vsftpd]# vim vu.list
it
123456
it2
123456
it3
123456

[root@localhost vsftpd]# db_load -T -t hash -f /etc/vsftpd/vu.list /etc/vsftpd/vu.db   对虚拟账号进行加密操作

[root@localhost vsftpd]# chmod 600 vu.*  安全起见,为两个用户文件设置权限

[root@localhost vsftpd]# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak  备份用户配置文件


[root@localhost pam.d]# vim vsftpd
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vu
account required pam_userdb.so db=/etc/vsftpd/vu    为虚拟用户进行认证


[root@localhost pam.d]# cd /etc/vsftpd/
[root@localhost vsftpd]# vim vsftpd.conf 
.......
# Make sure, that one of the listen options is commented !!
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
guest_enable=YES
guest_username=ftp_user    指定用户名
user_config_dir=/etc/vsftpd/share_dir   指定虚拟账户配置文件的地址
allow_writeable_chroot=YES

[root@localhost vsftpd]# cd /etc/vsftpd/share_dir/
[root@localhost share_dir]# touch it 在配置文件下新建单个虚拟账户的配置文件
[root@localhost share_dir]# vim it 
anon_upload_enable=YES   为虚拟用户it配置上传权限
anon_mkdir_write_enable=YES   写入权限

windows效果

利用虚拟用户it登录共享目录,并写入123文件
技术分享图片

ftp服务及配置

原文:https://www.cnblogs.com/sawyer95/p/13816637.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!