zoukankan      html  css  js  c++  java
  • Centos7下将FTP用户锁定在指定目录的解决办法

    需求描述

    • 用vsftpd搭建一台文件服务器

    • 限制用户user1在/home/user1/screen目录,在其他目录上传输文件均失败

    一、ftp基础知识

    1.1 主动模式及被动模式

    1、ftp采用两个端口控制:

    A 20端口用于数据传输.

    B 21端口用于控制,或指建立TCP连接.

    2、主动方式连接过程:

    [注意]:C表示客户端 S表示服务器端

    A、 S端要开启20、21端口;

    B、 C端一个随机端口连接S端21,这个随机范围1024-65536,同时发送命令port+x,指明数据端口C(X)->S(21);

    C、 S端收到命令后,将返回一个ACK,S(21)->C(X);

    D、 S端将用自己的20端口与C端的X+1端口相连,S(20)->C(X+1);

    E、 C给S返回ACT,C(X+1)->S(20).

    3、被动方式连接过程:

     

    [注意]:C表示客户端 S表示服务器端

    A、 S服务器端要开启21端口和大于1024tcp端口;

    B、 C以一个随机端口X与S的21端口相连, 这个随机端口范围为1024~65535, 并发送命令 PASV. C(X) -> S(21)

    C、 S收到命令, 返回一个ACK, 并在其中指明一个新的高位端口y. S(21) -> C(x)

    D、 C发起 x+1端口到S的y的端口的连接.C(x+1) -> S(y)

    E、 S返回一个ACK. S(y) ->C(x+1)

    1.2 主被动配置方法

    1.2.1 主动模式配置方法

    connect_from_port_20=YES
    #主动式连接使用的数据通道
    ​
    pasv_enable=NO
    #支持数据流的被动式连接模式

    1.2.2 被动模式的配置方法

    connect_from_port_20=NO
    #主动式连接使用的数据通道
    ​
      
    pasv_enable=YES
    #支持数据流的被动式连接模式
      pasv_min_port=1024
      pasv_max_port=65536
    #pasv模式中服务器传回的ip地址 
    pasv_address (Default: (none - the address is taken from the incoming connected  socket) ) 

    [注意:]

    Vsftp主动模式和被动模式是可以共存的。

    主动模式和被动模式的区别在于,主动模式下,ftp采用的是20端口传送数据,而被动模式下,ftp采用的是大于1024的随机端口。

    二、部署过程

    1、安装vsftpd

    yum install vsftpd -y

    文件目录如下:

    [root@ldap-server screen]# rpm -ql vsftpd-3.0.2-25.el7.x86_64
    /etc/logrotate.d/vsftpd
    /etc/pam.d/vsftpd
    /etc/vsftpd
    /etc/vsftpd/ftpusers
    /etc/vsftpd/user_list
    /etc/vsftpd/vsftpd.conf
    /etc/vsftpd/vsftpd_conf_migrate.sh
    /usr/lib/systemd/system-generators/vsftpd-generator
    /usr/lib/systemd/system/vsftpd.service
    /usr/lib/systemd/system/vsftpd.target
    /usr/lib/systemd/system/vsftpd@.service
    /usr/sbin/vsftpd
    /usr/share/doc/vsftpd-3.0.2
    /usr/share/doc/vsftpd-3.0.2/AUDIT
    /usr/share/doc/vsftpd-3.0.2/BENCHMARKS
    /usr/share/doc/vsftpd-3.0.2/BUGS
    /usr/share/doc/vsftpd-3.0.2/COPYING
    /usr/share/doc/vsftpd-3.0.2/Changelog
    /usr/share/doc/vsftpd-3.0.2/EXAMPLE
    /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE
    /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/README
    /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/README.configuration
    /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/vsftpd.conf
    /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/vsftpd.xinetd
    /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD
    /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/README
    /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/README.configuration
    /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/vsftpd.conf
    /usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONFIG
    /usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONFIG/README
    /usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONFIG/README.configuration
    /usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONFIG/hosts.allow
    /usr/share/doc/vsftpd-3.0.2/EXAMPLE/README
    /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_HOSTS
    /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_HOSTS/README
    /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS
    /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/README
    /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/README.configuration
    /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/logins.txt
    /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/vsftpd.conf
    /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/vsftpd.pam
    /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS_2
    /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS_2/README
    /usr/share/doc/vsftpd-3.0.2/FAQ
    /usr/share/doc/vsftpd-3.0.2/INSTALL
    /usr/share/doc/vsftpd-3.0.2/LICENSE
    /usr/share/doc/vsftpd-3.0.2/README
    /usr/share/doc/vsftpd-3.0.2/README.security
    /usr/share/doc/vsftpd-3.0.2/REWARD
    /usr/share/doc/vsftpd-3.0.2/SECURITY
    /usr/share/doc/vsftpd-3.0.2/SECURITY/DESIGN
    /usr/share/doc/vsftpd-3.0.2/SECURITY/IMPLEMENTATION
    /usr/share/doc/vsftpd-3.0.2/SECURITY/OVERVIEW
    /usr/share/doc/vsftpd-3.0.2/SECURITY/TRUST
    /usr/share/doc/vsftpd-3.0.2/SIZE
    /usr/share/doc/vsftpd-3.0.2/SPEED
    /usr/share/doc/vsftpd-3.0.2/TODO
    /usr/share/doc/vsftpd-3.0.2/TUNING
    /usr/share/doc/vsftpd-3.0.2/vsftpd.xinetd
    /usr/share/man/man5/vsftpd.conf.5.gz
    /usr/share/man/man8/vsftpd.8.gz
    /var/ftp
    /var/ftp/pub

     

    2、修改配置文件

    vim /etc/vsftpd/vsftpd.conf
    ....
    1、修改的参数如下:
    anonymous_enable=NO  //禁用匿名登陆
    2、锁定用户目录:
    chroot_local_user=YES 
    3、启动被动模式
    pasv_enable=YES
    pasv_min_port=50000
    pasv_max_port=60000
     

    3、设置锁定目录操作

    • 设置user1用户根目录不可写操作

      chmod a-w /home/user1
    • 创建文件目录screen并赋权

      mkdir /home/user1/file
      chown user1 /home/user1/file

    4、启动服务

    service vsftpd start
    chkconfig vsftpd on

    三、测试

     

     

     

  • 相关阅读:
    modal 过程中添加动画
    SVSegmentedControl 标签页
    带输入框的UIAlertView
    Django小结
    译Step-by-Step Guide on Configuring Django-Userena
    使用国内镜像通过pip安装python 包
    pycryto实现AES加密解密算法
    notepad++搜索的一些东西
    [转]notepad++正则表达式替换字符串详解
    [转]Notepad++快捷键
  • 原文地址:https://www.cnblogs.com/lkj371/p/12696078.html
Copyright © 2011-2022 走看看