ftp 基础服务器基础知识

ftp有三种登录方式。匿名登录(所有用户)、本地用户、虚拟用户(guest)。

FTP工作模式

主动模式:服务端从20端口主动向客户端发起链接。 控制端口21;数据传输端口20

过程:客户端从一个任意的非特权端口N(N>1024)向FTP服务器的命令端口(默认是21)发送请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端开始监听端口N+1,并在命令链路上用PORT命令发送N+1端口到FTP服务器,于是服务器会从自己的数据端口(20)向客户端指定的数据端口(N+1)发送连接请求,建立一条数据链路来传送数据。

被动模式:服务端在指定范围内某个端口被动等待及客户端链接。 控制端口21;数据传输端口 随机

过程:客户端从一个任意的非特权端口N(N>1024)向FTP服务器的命令端口(默认是21)发送请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PASV命令发送。于是服务器会开启一个任意的非特权端口P(P>1024),并在命令链路上把端口发送给客户端,然后客户端从自己的数据端口(N+1)向服务器的数据端口(P)发送连接请求,建立一条数据链路来传送数据。

优缺点

主动FTP对服务器管理有利,但对客户端管理不利,因为会在客户端产生随机端口建立连接,可能会被防火墙阻止。

被动FTP对客户端管理有利,但对服务球管理不利,因为在服务端建立连接时为随机端口,也可能会被防火墙阻止。

设置方式

主动模式
Port_enable=YES #开启主动模式
Connect_from_port_20=YES #当主动模式开启的时候 是否启用默认的20端口监听
Ftp_date_port=%portnumber% #上一选项使用NO参数时 指定数据传输端口 被动模式
PASV_enable=YES          #开启被动模式
PASV_min_port=%number%       #被动模式最低端口
PASV_max_port=%number%       #被动模式最高端口

传输方式

文本模式:ASCII模式,以文本序列传输数据

二进制模式:Binary模式,以二进制序列传输数据

设置虚拟用户登录ftp服务器
  1. yum 安装 vsftpd 服务,启动。

  2. 创建本地用户指定 shell 和本地目录。方便映射虚拟用户

    useradd load -s /sbin/nologin -d /var/ftp/work
    chmod 755 /var/ftp/work
  3. 创建虚拟用户文件,并生成db文件,加入到pam 认证模块中

    vim /etc/vsftpd/v_users
    #这个文件中一行账户名,一行密码

    db_load -T -t hash -f v_users vusers.db

    vim /etc/pam.d/vsftpd #注释上面的原文件,加入下面的配置
    auth       required   /usr/lib64/security/pam_userdb.so   db=/etc/vsftpd/vusers
    account     required   /usr/lib64/security/pam_userdb.so   db=/etc/vsftpd/vusers
  4. 创建虚拟用户的配置目录,管理不同的虚拟账号。

    #在主配置文件中设置虚拟用户的配置目录
    vim /etc/vsftpd/vsftpd.conf
    ser_config_dir=/etc/vsftpd/vconf.d

    allow_writeable_chroot=YES ##允许对 禁锢的ftp根目录执行写入操作,而且不拒绝用户的登录请求

    再到目录中去创建和账号名一样的文件。

    vim /etc/vsftpd/vconf.d/userf
    guest_enable=YES #允许这个虚拟账号访问
    guest_username=load #此虚拟账号映射的本地账号
    local_root=/data/ftp/work #可以设置登录后禁锢的目录,此项这次没有使用

    anon_world_readable_only=no #下载的权限
    anon_upload_enable=YES #上传的权限
    anon_mkdir_write_enable=YES #创建文件夹
    anon_other_write_enable=YES #删除和重命名



    #tips:在自己的配置文件中不允许有空格,特别是最后一行不能为空

最新文章

  1. EF操作多数据库
  2. [Android Pro] Android开发实践:自定义ViewGroup的onLayout()分析
  3. Go语言 获取get、post参数
  4. Linux 使用iftop命令查看服务器流量
  5. JAVA实现多线程入门
  6. centos中设置apache显示目录列表
  7. Java中基本数据类型和包装器类型的关系
  8. Linux基础系列—Linux内核源码目录结构
  9. GetSystemTime API可以得到毫秒级时间
  10. osgi实战学习之路:8. Service-3之ServiceTracker
  11. How I Mathematician Wonder What You Are!(poj 3130)
  12. Bookmark
  13. JavaScript控制输入框只能输入非负正整数
  14. 【Netty源码学习】EventLoopGroup
  15. Spark-RDD之Partition源码分析
  16. authentication plugin caching_sha2
  17. 关于opencv中的颜色模型转换之CV_BGR2HSV
  18. Material Design(原质化设计)视觉设计语言规范 踏得网镜像
  19. ubuntu查询命令行安装的软件的安装路径
  20. nodejs入门开发与常用模块

热门文章

  1. PHP中的文件系统函数(二)
  2. swiper-wrapper轮滑组件(多组轮滑界面)间隔无效问题
  3. Java中的三大特性:封装、继承、多态
  4. 基于pgpool搭建postgresql集群
  5. Loj#3026-「ROIR 2018 Day1」管道监控【Trie,费用流】
  6. 一、mybatis入门案例
  7. HCNP Routing&Switching之路由引入
  8. 【C++ Primer Plus】编程练习答案——第5章
  9. 简单介绍session,cookie,token以及区别
  10. ch_nginx.sh