美文网首页
linux搭建ftp

linux搭建ftp

作者: 暗物质 | 来源:发表于2019-10-19 22:10 被阅读0次

    Centos7 命令使用总结

    java完成ftp传输(将文件上传至静态资源服务器)


    ftp一些概念了解

    Linux安装vsftpd及配置详解

    • 1、安装 yum -y install vsftpd

    • 2、FTP主动模式与FTP被动模式

    • 3、防火墙开启21端口

      • 文中是使用iptables开启的
      • 现在centos7.2版本默认是防火墙,开启方法为:
      永久开启ftp服务,ftp服务默认端口为21
      firewall-cmd --add-service=ftp --permanent 
      firewall-cmd --reload
      
    • 4.1、匿名登录(了解)

    • 4.2、本地用户登录(了解)

    • 4.3、虚拟用户登录(了解)

    • 5、修改selinux

    • 6、设置开机启动vsftpd服务

      systemctl enable vsftpd.service
      

    /etc/vsftpd目录下配置文件讲解

    ftp服务安装完后
    以下是一些文件的位置约定: 
    /usr/sbin/vsftpd ---- VSFTPD的主程序 
    /etc/rc.d/init.d/vsftpd ---- 启动脚本 
    /etc/vsftpd/vsftpd.conf ---- 主配置文件 
    /etc/pam.d/vsftpd ---- PAM认证文件 
    /etc/vsftpd.ftpusers ---- 禁止使用VSFTPD的用户列表文件 
    /etc/vsftpd.user_list ---- 禁止或允许使用VSFTPD的用户列表文件 
    /var/ftp ---- 匿名用户主目录 
    /var/ftp/pub ---- 匿名用户的下载目录
    

    /etc/vsftpd目录下配置文件讲解

    1、ftpusers

     #这里设置黑名单 加入这里的用户都无法访问
    

    2、user_list

     #控制配置,这个既可以是黑名单,也可以是白名单
    当vsftpd.conf中 userlist_enable=YES 时,为黑名单,加入这里的用户无法访问
    当vsftpd.conf中 userlist_enable=NO 时,为白名单,加入这里的用户才能访问
    

    3、vsftpd.conf 配置文件

    重要,太多了,自己搜
    

    vsftpd 配置:chroot_local_user与chroot_list_enable详解

    了解
    

    4、chroot_list

    为VSFTP用户指定登录后的目录

    重要,下面步骤用到
    

    FTP常见命令详解

    当搭建完vsftpd服务后,要进行用户登录访问ftp测试(可在window cmd下测试,但是注意Windows cmd下ftp只能使用主动模式进行连接哦)。
    如果有错误,使用cmd命令可以返回详细错误信息
    (如我遇到的错误提示[vsftpd:500 OOPS: vsftpd: ...](https://www.cnblogs.com/zuikeol/p/9647048.html))
    用网页、文件夹登录不给相关错误信息
    

    Linux搭建vsftpd服务步骤

    需求

    搭建ftp服务,并分发用户。

    上传用户uploadexample : 可创建文件夹,上传文件,查看文件,不可删除文件

    下载用户downloadexample : 可查看文件,下载文件,不可删除文件

    搭建

    方式一:本地用户

    在服务器B搭建ftp服务,并开通用户 uploadexample ,并配置只能操作指定文件夹/home/uploadexample,进行上传资源操作。

    1、yum安装好ftp服务

    yum -y install vsftpd
    systemctl start vsftpd.service
    此时匿名用户登录等应该都能登录
    systemctl enable vsftpd.service #在开机时启用服务
    

    2、/etc/vsftpd目录下修改vsftpd.conf 配置文件

    
    anonymous_enable=NO #关闭匿名登录
    
    #打开注释
    chroot_list_enable=YES 
    chroot_list_file=/etc/vsftpd/chroot_list
    
    #添加下面
    #https://www.cnblogs.com/zuikeol/p/9647048.html
    allow_writeable_chroot=YES
    #添加读取用户配置目录(注:本行配置默认没有需要手动输入)
    user_config_dir=/etc/vsftpd/userconf
    
    #开启被动模式及设置端口段
    pasv_enable=YES
    pasv_min_port=6990
    pasv_max_port=7000
    
    #开启防火墙对应端口 -- 这一步先不做,视情况而定
    cd /usr/lib/firewalld/services/
    cp mysql.xml ftp-PassiveMode.xml
    vi ftp-PassiveMode.xml #手动配置服务管理端口
        #修改内容后如下:
        <?xml version="1.0" encoding="utf-8"?>
        <service>
          <short>ftp Passive Mode</short>
          <description>ftp Server Passive Mode </description>
          <port protocol="tcp" port="6990"/>
          <port protocol="tcp" port="6991"/>
          <port protocol="tcp" port="6992"/>
          <port protocol="tcp" port="6993"/>
          <port protocol="tcp" port="6994"/>
          <port protocol="tcp" port="6995"/>
          <port protocol="tcp" port="6996"/>
          <port protocol="tcp" port="6997"/>
          <port protocol="tcp" port="6998"/>
          <port protocol="tcp" port="6999"/>
          <port protocol="tcp" port="7000"/>
        </service>
    firewall-cmd --reload #刷新
    firewall-cmd --get-services | grep ftp-PassiveMode #确认一下
    firewall-cmd --permanent --add-service=ftp-PassiveMode #加载服务,开启端口
    
    

    3、添加用户

    为了安全,FTP用户一般是不能登录系统的。
    在系统中,没有权限登录系统的用户一般也被称之为虚拟用户;虚拟用户也是要写进/etc
    /passwd中;这只是一种虚拟用户的方法,但说实在的并不是真正的虚拟用户,只是把他登录SHELL的权限去掉了,所以他没有能力登录系统;
    所以应该如下操作
    新建用户:
    # adduser -d /home/uploadexample -g ftp -s /sbin/nologin uploadexample //新建用户 
    # passwd uploadexample //给用户设置密码
    如果现存用户不用新建,另外要确定不在黑名单ftpusers(user_list-yes)中,
    并且usermod命令设置这个用户不能登录系统
    最后,确认一下配置文件vsftpd.conf ,以确保本地虚拟用户能有读写权限:
          local_enable=YES
          write_enable=YES
          local_umask=022
    
    

    4、用户ftp相关权限设置

    chroot_list文件内容添加上用户uploadexample,一行一个用户,保存
    # vi /etc/vsftpd/chroot_list 
    
    建立用户配置目录
    # mkdir /etc/vsftpd/userconf
    
    建立用户登陆后的目录,也就是允许用户操作的目录 若存在不用创建
    # mkdir /home/uploadexample
    
    添加用户配置文件
    注:有很多用户时,需要建每个用户相对应的文件
    # vi /etc/vsftpd/userconf/uploadexample
     添加内容FTP用户登陆后指定的目录:
     local_root=/home/uploadexample 
    
    

    5、配置成功 重启ftp服务,并测试。

    • 553 Could not create file.错误的解决

        selinux打开的状态下,vsftp会出现本地用户无法上传的问题(可能是本地用户的home目录,或者是整个目录)
        错误信息为:
        553 Could not create file.
        要解决这个问题只要:
        1. setsebool -P ftpd_disable_trans 1
        2. systemctl restart vsftpd.service 
        就可以了
      

    方式二:虚拟用户登录

    目的:设置用户的上传、下载、删除权限

    • 1 创建虚拟用户的账号及密码
    首先需要建立一个文本格式的用户名/密码列表文件,奇数行为用户名,偶数行为上一行中用户名所对应的密码。
    
    #vi /etc/vsftpd/logins.txt
    saupload
    daka123
    sadownload
    daka456
    saadmin
    daka789
    
    生成数据库
    
    # cd /etc/vsftpd (option)
    # yum -y install db4* (option)
    # db_load -T -t hash -f logins.txt vsftpd_login.db    
    
    # file vsftpd_login.db  #查看转换后的文件类型
    vsftpd_login.db: Berkeley DB (Hash, version 9, native byte-order)
    
    # chmod 600 vsftpd_login.db  #修改数据文件访问权限
    
    

    查看vsftp登录认证数据库db文件内容的方法
    /usr/bin/db_dump -d a /etc/vsftpd/vsftpd_login.db

    另外,如果新增用户,重新新建包含新用户数据的txt文件,并运行db_load命令,就会将新用户数据加入搭配db文件中。删除数据未试。

    • 2 为虚拟用户创建PAM认证文件
    新建pam:
    
    # vi /etc/pam.d/vsftpd_login.pam //为虚拟用户创建PAM认证文件,文件名为vsftpd_login.pam
        auth    required    pam_userdb.so   db=/etc/vsftpd/vsftpd_login
        account    required        pam_userdb.so   db=/etc/vsftpd/vsftpd_login
    
    //下面的vsftpd.conf中配置:
    //pam_service_name=vsftpd_login.pam  //指定新的PAM认证文件
    
    或在默认文件中修改
    # vi /etc/pam.d/vsftpd
        //将里面其他的都注释掉,添加下面这两行:
        auth    required        pam_userdb.so   db=/etc/vsftpd/vsftpd_login
        account    required        pam_userdb.so   db=/etc/vsftpd/vsftpd_login
      
    //下面的vsftpd.conf中配置:
    //pam_service_name=vsftpd(指定PAM配置文件为在/etc/pam.d/下的vsftpd)
    
    
    • 3 创建虚拟账号对应的系统用户
    # useradd -d /home/ftpexample -s /sbin/nologin ftpexample 
    //添加用户ftpexample,指定到新建的家目录,将虚拟用户对应到这个系统账号上,这个
    账号无需设置密码及登录Shell (另外 如果用其他本地用户,那么该本地用户不能再用原来的账号密码登录了)
    
    # chmod 755 /home/ftpexample/  
    //调整权限以允许浏览目录
    
    //下面的vsftpd.conf中配置:   
    //guest_username=ftpexample      //指定映射的系统用户名称
      
    
    • 4.修改主配置文件
    # vi /etc/vsftpd/vsftpd.conf
    
    anonymous_enable=no#禁用匿名用户登录
    (anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_umask=022   //指定上传权限掩码)(option)
    
    allow_writeable_chroot=YES#https://www.cnblogs.com/zuikeol/p/9647048.html
    local_enable=YES#需映射本地用户,所以启用些项
    write_enable=YES#启用上传写入支持
    chroot_local_user=YES     
    #将所有本地用户限制在家目录中,新建的用户必须设置家目录,example:adduser -d /home/uploadexample... 
    #(或按照方式一种第二步设置相关用户限制目录:)
    
    guest_enable=YES#启用映射功能
    guest_username=ftpexample#指定映射的系统用户名称
    pam_service_name=vsftpd_login.pam#指定新的PAM认证文件
    user_config_dir=/etc/vsftpd/userconf#(自建配置)用户配置文件夹,需要创建 
    max_clients=300#(自建配置)设置FTP服务器最大接入客户端数为300个 
    max_per_ip=10#(自建配置)设置每个IP地址最大连接数为10个 
    
    pasv_enable=YES#         //(自建配置)允许PASV模式进行数据传输 
    pasv_min_port=65341#     //(自建配置)PASV模式下数据传输所使用port范围下界 
    pasv_max_port=65351#     //(自建配置)PASV模式下数据传输所使用port范围上界
    ...
     
    
    • 5.建立虚拟账户的配置文件
     # mkdir /etc/vsftpd/userconf (option)
     # cd /etc/vsftpd/userconf 
     
     创建相关用户配置文件
     # touch saupload
     # touch sadownload
     # touch saadmin
     
     配置文件内容,设置具体的权限:
     
     
     write_enable=YES 允许写入
     download_enable=NO 是否能下载
     anon_world_readable_only=NO 允许浏览FTP目录和下载
     anon_upload_enable=YES 允许虚拟用户上传文件
     anon_mkdir_write_enable=YES 允许虚拟用户创建目录
     anon_other_write_enable=YES 允许虚拟用户执行其他操作(如改名、删除)
     anon_umask=022 上传文件的掩码,如022时,上传目录权限为755,文件权限为644(例如供http访问)
     local_root=/ftproot/admin 指定虚拟用户的虚拟目录(虚拟用户登录后的主目录)
    
     # vi saupload  
        //可以:上传,创建文件夹, 查看下载文件 不能:删除,重命名
        anon_world_readable_only=NO
        anon_upload_enable=YES
        anon_mkdir_write_enable=YES
        
        //可以:上传,创建文件夹, 查看 不能:删除,重命名,下载文件
        anon_world_readable_only=NO
        anon_upload_enable=YES
        anon_mkdir_write_enable=YES
        download_enable=NO  
        
     # vi sadownload
        
        //只能查看下载文件
        anon_world_readable_only=NO
        
    # vi saadmin
        
        //所有权限:上传,创建文件夹 查看下载文件 重命名 删除
        anon_world_readable_only=NO
        anon_upload_enable=YES
        anon_mkdir_write_enable=YES
        anon_other_write_enable=YES
    
    • 重启服务,登录相关虚拟用户名密码,进行测试

    相关文章

      网友评论

          本文标题:linux搭建ftp

          本文链接:https://www.haomeiwen.com/subject/ljanmctx.html