FTP文件传输协议

FTP协议特点

  • 基于C/S结构
  • 双通道协议:数据和命令连接
  • 数据传输格式:二进制(默认)和文本(w文本格式会修改文件内容)

两种模式:服务器角度

主动(PORT style):服务器主动连接

通信:客户端使用随机端口连接服务端21号端口通信

数据传输:服务端使用20号端口传输数据

** 被动(PASV style):客户端主动连接**

通信:客户端使用使用随机端口连接服务器端21号端口

数据传输:服务端使用客户端连接信息中的随机端口向客户端发送数据

  • 服务器被动模式数据端口示例:

    227 Entering Passive Mode (192,168,175,138,224,59)

    服务器数据端口为:224*256+59

FTP服务

状态码

  • 1XX:信息 125:数据连接打开
  • 2XX:成功类状态 200:命令OK 230:登录成功
  • 3XX:补充类 331:用户名OK
  • 4XX:客户端错误 425:不能打开数据连接
  • 5XX:服务器错误 530:不能登录

用户认证类型

  • 匿名用户:ftp,anonymous,对应Linux用户ftp
  • 系统用户:Linux用户,用户/etc/passwd,密码/etc/shadow,共享目录为用户家目录
  • 虚拟用户:特定服务的专用用户,独立的用户/密码文件,共享目录位置为其映射的系统用户的家目录

    nsswitch:network service switch名称解析框架

    pam:pluggable authentication module 用户认证

    /lib64/security /etc/pam.d/ /etc/pam.conf

vsftpd服务应用

  • 用户认证配置文件:/etc/pam.d/vsftpd
  • 服务脚本: /usr/lib/systemd/system/vsftpd.service

    /etc/rc.d/init.d/vsftpd
  • 配置文件:/etc/vsftpd/vsftpd.conf
  • 查看配置文件参数使用: man 5 vsftpd.conf
  • 格式:option=value 注意:= 前后不要有空格

vsftpd服务配置

安装vsftpd

yum install vsftpd -y

yum install ftp -y (当做客户端命令行工具)

默认使用被动模式传输:可以使用ftp用户登录,默认的共享目录在/var/ftp下

[root@yufu opt]# ftp 192.168.214.130
Connected to 192.168.214.130 (192.168.214.130).
220 (vsFTPd 3.0.2)
Name (192.168.214.130:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,214,130,154,121).
150 Here comes the directory listing.
drwxr-xr-x 2 0 0 4096 Jun 25 12:13 pub
226 Directory send OK.

修改传输模式

主动传输

listen_port=21      # 命令端口
connect_from_port_20=YES #主动模式端口为20
ftp_data_port=20 #指定主动模式的端口

使用当地时间

默认客户端下载的ftp文件时间与服务端时间是不一样的。指定客户端下载使用的时间与服务端一致

use_localtime=YES 使用当地时间(默认为NO,使用GMT)

匿名用户

anonymous_enable=YES 支持匿名用户 no_anon_password=YES(默认NO) 匿名用户略过口令检查 anon_world_readable_only (默认YES)只能下载全部读的文件

  • anon_upload_enable=YES 匿名上传,注意:文件系统权限
  • anon_mkdir_write_enable=YES
  • anon_umask=077 指定匿名上传文件的umask
  • anon_other_write_enable=YES 可删除和修改上传的文件

    指定上传文件的默认的所有者和权限
  • chown_uploads=YES(默认NO)
  • chown_username=wang
  • chown_upload_mode=0644

系统用户

  • guest_enable=YES 所有系统用户都映射成guest用户
  • guest_username=ftp 配合上面选项才生效,指定guest用户
  • local_enable=YES 是否允许linux用户登录
  • write_enable-YES 允许linux用户上传文件
  • local_umask=022 指定系统用户上传文件的默认权限
  • local_root=/ftproot 非匿名用户登录所在目录

禁锢所有用户在家目录中

chroot_local_user=YES(默认NO,不禁锢)禁锢系统用户

禁锢或不禁锢特定的系统用户在家目录中,与上面设置功能相反

  • chroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_list
  • 当chroot_local_user=YES时,则chroot_list中用户不禁锢
  • 当chroot_local_user=NO时,则chroot_list中用户禁锢

wu-ftp日志:默认启用

  • xferlog_enable=YES (默认)启用记录上传下载日志
  • xferlog_std_format=YES (默认)使用wu-ftp日志格式
  • xferlog_file=/var/log/xferlog (默认)可自动生成

vsftpd日志:默认不启用

  • dual_log_enable=YES 使用vsftpd日志格式,默认不启用
  • vsftpd_log_file=/var/log/vsftpd.log(默认)可自动生成

登录提示信息

  • ftpd_banner=“welcome to mage ftp server"
  • banner_file=/etc/vsftpd/ftpbanner.txt 优先上面项生效

目录访问提示信息

  • dirmessage_enable=YES (默认)
  • message_file=.message(默认)信息存放在指定目录下.message

使用pam模块认证

使用完成用户认证

  • pam_service_name=vsftpd
  • pam配置文件:/etc/pam.d/vsftpd
  • /etc/vsftpd/ftpusers 默认文件中用户拒绝登录

是否启用控制用户登录的列表文件

  • userlist_enable=YES 默认有此设置
  • userlist_deny=YES(默认值)黑名单,不提示口令,NO为白名单
  • userlist_file=/etc/vsftpd/users_list 此为默认值

    连接限制
  • max_clients=0 最大并发连接数
  • max_per_ip=0 每个IP同时发起的最大连接数

    vsftpd服务指定用户身份运行
  • nopriv_user=nobody

传输速率配置

传输速率:字节/秒

  • anon_max_rate=0 匿名用户的最大传输速率
  • local_max_rate=0 本地用户的最大传输速率

连接时间:秒为单位

  • connect_timeout=60 主动模式数据连接超时时长
  • accept_timeout=60 被动模式数据连接超时时长
  • data_connection_timeout=300 数据连接无数据输超时时长
  • idle_session_timeout=60 无命令操作超时时长

优先以文本方式传输

  • ascii_upload_enable=YES
  • ascii_download_enable=YES

基于SSL传输的FTPS

查看是否支持SSL

  • ldd which vsftpd 查看到libssl.so

创建自签名证书

  • cd /etc/pki/tls/certs/
  • make vsftpd.pem
  • openssl x509 -in vsftpd.pem -noout –text

配置vsftpd服务支持SSL:/etc/vsftpd/vsftpd.conf

  • ssl_enable=YES 启用SSL
  • allow_anon_ssl=NO 匿名不支持SSL
  • force_local_logins_ssl=YES 本地用户登录加密
  • force_local_data_ssl=YES 本地用户数据传输加密
  • rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem

用filezilla等工具测试

实现基于文件验证的vsftpd虚拟用户

1. 创建用户数据库文件

[root@yufu ~]# vim /etc/vsftpd/vuser.txt
testuser1
testuser1passwd
yufu
123456
#奇数行写用户名,偶数行写用户密码

2. 转换数据文件为指定格式 设定600权限

[root@yufu ~]# cd /etc/vsftpd/
[root@yufu vsftpd]# db_load -T -t hash -f vuser.txt vuser.db
[root@yufu vsftpd]# chmod 600 vuser.db

3. 创建用户和访问FTP目录

创建系统的用户 vuser (将上面vuser.db中的账号映射成vuser)

[root@yufu vsftpd]# useradd -d /var/ftproot vuser -s /sbin/nologin
[root@yufu vsftpd]# chmod +rx /var/ftproot/

4. 创建pam配置文件

[root@yufu vsftpd]# vim /etc/pam.d/vsftpd.db

auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser

5. 指定pam配置文件

vim /etc/vsftpd/vsftpd.conf

guest_enable=YES
guest_username=vuser
pam_service_name=vsftpd.db

6. 禁用selinux

setenforce 0

7 .虚拟用户建立独立的配置文件

[root@yufu vsftpd]# mkdir /etc/vsftpd/vuser.d

在主配置文件vsftpd.conf中添加新建的配置文件目录路径如下

user_config_dir=/etc/vsftpd/vuser.d/

8. 配置虚拟用户文件

cd /etc/vsftpd/vuser.d/
#
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

重启vsftpd服务测试虚拟用户登录

service vsftpd restart

在服务器端的/var/ftproot目录下创建几个文件留作远程客户端登录测试下载

客户端登录

[root@yufu ~]# ftp 192.168.214.187
Connected to 192.168.214.187 (192.168.214.187).
220 (vsFTPd 2.2.2)
Name (192.168.214.187:root): yufu
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,214,187,252,108).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 0 May 09 08:03 yufu
-rw-r--r-- 1 0 0 0 May 09 08:14 yufu_files
226 Directory send OK.
ftp>

测试下载

ftp> lcd /opt/
Local directory now /opt
ftp> get yufu_files
local: yufu_files remote: yufu_files
227 Entering Passive Mode (192,168,214,187,45,7).
150 Opening BINARY mode data connection for yufu_files (0 bytes).
226 Transfer complete.
ftp> quit
221 Goodbye.
[root@yufu ~]# ls /opt/yufu_files
/opt/yufu_files

vsftpd文件服务参数汇总和虚拟用户使用的更多相关文章

  1. vsftpd搭建ftp服务,并实现虚拟用户访问

    安装vsftpd服务: yum install vsftpd -y [root@wadeson ~]# rpm -ql vsftpd /etc/logrotate.d/vsftpd /etc/pam. ...

  2. centos6.5下vsftpd服务的安装及配置并通过pam认证实现虚拟用户文件共享

    FTP的全称是File Transfer Protocol(文件传输协议),就是专门用来传输文件的协议.它工作在OSI模型的第七层,即是应用层,使用TCP传输而不是UDP.这样FTP客户端和服务器建立 ...

  3. 在wdcp环境下架设VSFTPD虚拟用户只上传功能服务器

    检查系统是否已安装vsftp rpm -q vsftpd package vsftpd is not installed #说明系统没有安装vsftpd 如果生成虚拟用户数据文件的时候出现以下错误 u ...

  4. vsftpd配置虚拟用户为登录用户02

    1.安装vsftpd 安装依赖包: yum -y install pam pam-devel db4 de4-devel db4-uitls db4-tcl 新建vsftpd系统用户: #建立Vsft ...

  5. vsftpd虚拟用户【公司系统部分享】

    一,安装相关工具包 #yum -y install pam vsftpd db4 db4-utils -- pam 是用来提供身份验证的 -- vsftpd 是ftp服务的主程序 -- db4支持文件 ...

  6. Linux:FTP服务匿名用户,本地用户,虚拟用户配置

    匿名用户  FTP协议占用两个端口号: 21端口:命令控制,用于接收客户端执行的FTP命令. 20端口:数据传输,用于上传.下载文件数据. 实验:匿名访问,服务器192.168.10.10    客户 ...

  7. 【VSFTP服务】vsftpd文件传输协议

    vsftpd文件传输协议 系统环境:CentOS Linux release 7.6.1810 (Core) 一.简介 FTP(文件传输协议)全称是:Very Secure FTP Server.   ...

  8. Vsftpd: 基于PAM认证的虚拟用户和匿名用户

    目录 环境说明效果说明及截图①. 安装组件②. 系统账户建立③. 编辑vsftpd的配置文件④. 生成虚拟用户的数据库文件⑤. 生成一个使用vsftpd_login.db数据文件的PAM认证文件⑥. ...

  9. Linux云计算-07_Linux文件服务器之vsftpd服务器

    本章向读者介绍企业vsftpd服务器实战.匿名用户访问.系统用户访问及虚拟用户实战等. 1 vsftpd服务器企业实战 文件传输协议(File Transfer Protocol,FTP),基于该协议 ...

随机推荐

  1. Django的路由层(URLconf)

    URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于客户端发来的某个URL调用哪一段逻辑代码 ...

  2. JavaScript中8个容易犯的错误

    这里dbestech针对JavaScript初学者给出一些技巧和列出一些陷阱. 1. 你是否尝试过对数组元素进行排序? JavaScript默认使用字典序(alphanumeric)来排序.因此,[1 ...

  3. Informatica学习笔记

    Informatica学习笔记1:UPDATE AS INSERT 问:要求实现每天抽取数据,而且是如果有改变才抽取更新,没有就不更新,因为源表中有最后修改时间的字段,我让它 和SESSION上次运行 ...

  4. 理解及快速测定 Azure 虚拟机的磁盘性能

    随着越来越多的用户将生产系统迁移到 Azure 平台的虚拟机服务中,Azure 虚拟机的性能愈发被关注.传统的数据中心中,我们通常使用 CPU,内存,存储和网络的性能来衡量生产压力.特别是对于 IO ...

  5. 通过 Powershell 来调整 ARM 模式下虚拟机的尺寸

    需求描述 在部署完 ARM 模式的虚拟机以后,可以通过 PowerShell 命令来调整虚拟机的尺寸,以下是通过 PowerShell 命令来调整 ARM 模式的虚拟机尺寸. Note 本文只限于 A ...

  6. (三)svn 服务器端之创建仓库

    创建仓库 svn服务端创建完成需要创建仓库,仓库中存放 要被管理的文件. 通过开始菜单进入  VisualSVN server manager: 主界面为: 右键点击Repositories创建仓库 ...

  7. 会话cookie中缺少HttpOnly属性 解决

    会话cookie中缺少HttpOnly属性 解决   只需要写一个过滤器即可 1 package com.neusoft.streamone.framework.security.filter; 2 ...

  8. tdf sample

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net ...

  9. 2.安装 Android SDK

    安装Android SDK Android SDK(Software Development Kit,软件开发工具包)提供了 Android API 库和开发工具构建,测试和调试应用程序.简单来讲,A ...

  10. Windows装系统

    这几天电脑频繁崩溃,自己尝试着装了几次系统,遇到一些问题.有的解决了,有的没解决.将其一一记录在这里,作为经验参考. 自己以前最常用的方式是直接通过ultraiso将IOS文件解压到到U盘,会将U盘做 ...