Vsftpd服务器

FTP是很常用的在计算机直接传输文件的协议,一方作为服务器,一方作为客户端。这里主要说下在Linux上一个常见的FTP服务器——vsftpd

FTP工作方式

FTP是有状态的协议,在FTP会话期间,客户端和服务端保持开放状态。客户端可以通过命令从服务端上传或者下载文件。

有两种类型的连接:

  • 控制连接:也叫做命令连接
  • 数据连接

当我们登陆FTP服务器的21端口时,发送用户名和密码进行认证,这个连接叫做控制连接。当开始传输文件的时候,数据连接就开始了。

数据连接有两种类型:

  • Passive mode. 被动模式:客户端等待服务器的请求,服务器初始化连接
  • Active mode. 主动模式:服务器等待客户端的请求,客户端初始化连接

当FTP客户端开始传输文件的时候,在客户端有一个选项可以控制是使用Active或者Passive 模式

vsftpd

特性

有很多FTP服务器可以使用,收费的,免费的,但是vsftpd的一些特性让它一直都很流行

  • 支持SSL/TLS的FTP连接
  • 可以限制用户只在自己的家目录内使用
  • 可以进行权限隔离

安装

# Centos
yum install -y vsftpd ftp

# Ubuntu,Debian
sudo apt-get install vsftpd ftp

启动:

systemctl start vsftpd

使用

有两种方式访问FTP服务器:

  • 匿名模式: 所有人都可以使用anonymous 用户登录,不需要输入密码
  • 本地用户模式:在/etc/passwd文件中的合法用户都可以访问FTP服务器

配置文件位于/etc/vsftpd/vsftpd.conf

  • 开启匿名模式:anonymous_enable=YES
  • 开启本地用户模式:local_enable=YES

典型配置

开启日志
xferlog_file=/var/log/xferlog  #操作日志
dual_log_enable=YES   # 登录日志
vsftpd_log_file=/var/log/vsftpd.log  #登录日志

日志内容:

1565615412089.png

说明:

当前服务器本地时间   Mon Aug 12 21:04:17 2019
传输时间            1
远程主机名称        10.65.204.106
文件大小            130235
文件名称            /1803431034_20190812211038_0000054376_100.jpg
传输类型            a 以ASCII传输; b 以二进制传输
特殊处理标志        _ 不做任何处理; C 文件是压缩格式; U 文件是非压缩格式; T 文件是tar格式
传输方向            o 从FTP服务器向客户端传输(下载); i 从客户端向FTP服务器传输(上传)
访问模式            a 匿名用户; g 来宾用户; r 真实用户,即系统中的用户
用户名             这里是ibos
服务名             所使用的服务名称,一般为ftp
认证方式           0 无; 1 RFC931认证
认证用户id         如果用 *,则表示无法获得该id,但是仍然可以上传成功
完成状态           c 表示传输完成; i 表示传输未完成
限制用户在家目录内操作

修改vsftpd.conf

chroot_local_user=yes   #本地用户进行chroot操作
chroot_list_enable=YES  #chroot_list_file中进行chroot操作
chroot_list_file=/etc/vsftpd/chroot_list  #在文件中指定用户名
local_root=/var/ftp     #  虚拟用户根目录,根据实际情况修改

# 以下配置在用户上传到根目录失败的时候可以加上。
virtual_use_local_privs=NO  # 虚拟用户的权限是否符合他们的宿主用户  
guest_enable=YES  # 启用虚拟用户功能
guest_username=ibos   # 将虚拟用户映射为本地ibos用户
allow_writeable_chroot=YES # 在choot之后允许可写

参考:https://serverfault.com/questions/544850/create-new-vsftpd-user-and-lock-to-specify-home-login-directory

匿名用户读写
listen=NO
listen_ipv6=NO
anonymous_enable=YES
local_enable=NO
write_enable=YES

最后

今天在调试设备的时候需要操作FTP服务器,期间用到知识记录下来

参考:

Create new vsftpd user and lock to (specify) home / login directory

Install, Configure, And Secure FTP Server In Linux

Vsftp的安装部署

你可能感兴趣的:(Vsftpd服务器)