zoukankan      html  css  js  c++  java
  • Linux搭建FTP服务器

     

     

      Linux下使用ftp共享文件功能相对简单,默认情况下,启动vsftpd服务,即可通过匿名用户和linux系统的普通用户进行登录,相关权限可通过编辑/etc/vsftpd/vsftpd.conf配置文件进行……

      本文主要介绍如何用Linux搭建可供虚拟用户(即/etc/passwd中不存在的用户)登录的FTP服务器

        1.基本原理图

      2.是否安装了vsftpd

        3.安装vsftpd

        4.关闭selinux和iptables

        5.创建虚拟宿主用户

        6.编辑vsftpd.conf配置文件

        7.创建虚拟账户文件

        8.配置vsftpd的pam账户认证文件

        9.配置虚拟用户个人的配置文件

        10.测试

        11.补充介绍

     

    1. 基本原理图

     

    2. 查看是否安装了vsftpd服务

    rpm -q vsftpd
    rpm -qa |grep vsftpd

     

    3. 安装vsftpd(以yum安装为例)

    yum install vsftpd -y

     

    4. 关闭selinux和iptables(也可配置相关访问策略,防止系统阻断),让vsftpd开机自启动

    # 永久关闭selinux
    sed -i "s#=enforcing#=disabled#g" /etc/selinux/config
    setenforce 0
    
    # 永久关闭iptables
    etc/init.d/iptables stop
    chkconfig iptables off
    
    # 设置vsftpd开机自启动
    chkconfig vsftpd on

     

    5. 创建虚拟宿主用户

    useradd virtuser -s /sbin/nologin
    echo "123456" | passwd virtuser -stdin

     

    6. 备份/etc/vsftpd/vsftpd.conf配置文件并将vsftpd.conf配置文件编辑内容如下

    vim /etc/vsftpd/vsftpd.conf 
    
    mv /etc/vsftpd/vsftpd.conf{,.bak}

    # 是否允许匿名登陆
    anonymous_enable=NO
    
    # 是否允许本地用户登陆
    local_enable=YES
    
    # 是否具备写入权限
    write_enable=NO
    
    # 上传文件的权限掩码
    local_umask=022
    
    # 是否进行日志记录
    xferlog_enable=YES
    xferlog_std_format=YES
    xferlog_file=/var/log/vsftpd.log
    
    # FTP开启数据传输端口20
    connect_from_port_20=YES
    
    # 会话超时时间/秒
    idle_session_timeout=600
    
    # 数据传输连接超时时间
    data_connection_timeout=120
    
    # 是否允许进行异步传输
    async_abor_enable=YES
    
    # 请求欢迎信息
    ftpd_banner=Welcome to blah FTP service.
    
    # linux中FTP默认情况下允许用户从ftp主目录切换到linux系统的其他目录
    # 可开启chroot_list_enable功能,通过列表文件,进行用户限制
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_deny
    
    # 是否允许FTP用户使用"ls -R"命令,该命令会对系统造成较大的负担
    ls_recurse_enable=NO
    
    # 设定vsftpd服务工作在standalone模式,可理解为拥有自己的守护进程 
    listen=YES
    
    # 设定pam服务下的vsftpd验证配置文件名,pam验证配置文件位于/etc/pam.d/目录下
    pam_service_name=vsftpd
    
    # 是否启用userlist列表限制功能
    userlist_enable=YES
    
    # 是否支持TCPwrappers
    tcp_wrappers=YES
    
    # 是否进行反向域名解析
    reverse_lookup_enable=NO
    
    # 启用虚拟用户功能
    guest_enable=YES
    
    # 指定虚拟的宿主用户
    guest_username=virtuser
    
    # 虚拟用户权限符合它们的宿主用户
    virtual_use_local_privs=YES
    
    # 指定虚拟用户的配置文件目录
    user_config_dir=/etc/vsftpd/vconf
    vsftpd.conf配置文件

     

    7. 创建可供pam服务识别的虚拟账户文件(虚拟用户:test,密码:123456)

    mkdir /etc/vsftpd/vconf
    
    cd /etc/vsftpd/vconf/
    
    echo -e "test
    123456" >password
    
    db_load -T -t hash -f password{,.db}

     

     8. 配置vsftpd的pam账户认证文件,加入下面两行账户认证配置(一定要加在文件内容的最上面)

    vim /etc/pam.d/vsftpd
    
    auth    sufficient      /lib64/security/pam_userdb.so   db=/etc/vsftpd/vconf/password
    account sufficient      /lib64/security/pam_userdb.so   db=/etc/vsftpd/vconf/password

     

     9. 创建共享目录并配置虚拟用户的个人配置文件(配置文件位于/etc/vsftpd/vconf/目录下,配置文件名称要和虚拟用户名一致)

    mkdir /share
    chown -R virtuser /share
    
    vim /etc/vsftpd/vconf/test

    #指定虚拟用户仓库的具路径
    local_root=/share
    
    #允许写的操作
    write_enable=YES
    
    #不允许下载操作
    download_enable=NO
    
    #设定并发客户端的访问数量
    max_clients=20
    
    #设定客户端的最大线程数
    max_per_ip=10
    
    #设定用户的最大传输速率,单位b/s
    local_max_rate=102400
    test虚拟用户配置文件

     

    10. 创建测试文件,启动vsftpd

    echo "testfile" >>/share/abd.txt
    chown -R virtuser /share

    /etc/init.d/vsftpd start ps -aux|grep vsftpd

    11. 测试,成功!!

    12. 补充介绍,默认情况下,登录linux中ftp的用户拥有切换到linux系统其它目录的权限,可通过配置chroot_list_enable=YES进行限制

      12.1 /etc/vsftpd/vsftpd.conf文件中配置如下内容

    # linux中FTP默认情况下允许用户从ftp主目录切换到linux系统的其他目录
    # 可开启chroot_list_enable功能,通过列表文件,进行用户限制
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_deny

      12.2 创建/etc/vsftpd/chroot_deny文件,把需要限制的用户名加入到文件中

    echo "test" >>/etc/vsftpd/chroot_deny

     

  • 相关阅读:
    你好,2021!
    庚子走,辛丑来,愿一切安好!
    花魂鸟魂总难留,鸟自无言花自羞
    熟悉的小胡同
    夜半听鼾声
    写在儿子22岁生日
    vue配置Azure Artifacts npm包源
    RabbitMQ出错:AMQP close-reason, initiated by Peer, code=530的解决办法
    .NET MVC存储图片到数据库的解决方案
    EF Core解决报错’EntityTypeBuilder未包含“ToTable”的定义‘的方法
  • 原文地址:https://www.cnblogs.com/Caiyundo/p/9979442.html
Copyright © 2011-2022 走看看