• CentOS7 FTP服务搭建(虚拟用户访问FTP服务)


    概述

      最近在搞Oracle在Linux系统下集群,针对Linux系统,笔人也是一片空白。Liunx外部文件的传输,避免不了使用FTP服务,所以现在就整理下,CentOS7环境下,FTP服务的搭建。FTP服务器需要安装vsftp服务端软件。我们知道,在建立vsftpd用户时,我们一般是在linux下建立用户useradd的方式来访问ftp,但有时我们只想提供ftp服务,而避免用户用ftp的帐号去登录linux,采用一般的方式只能是限制该用户的访问权限,但还是避免不了用户登录进linux系统,所以比较好的方法是用vsftpd的虚拟用户(virtual users)。

    FTP基于虚拟用户的配置

    一、配置防火墙,开启FTP服务器需要的端口

    CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙。

    1、关闭firewall:

    systemctl stop firewalld.service #停止firewall
    

    systemctl disable firewalld.service #禁止firewall开机启动

    2、安装iptables防火墙

    复制代码
    yum install iptables-services #安装
    

    vi /etc/sysconfig/iptables #编辑防火墙配置文件,添加下面红色部分进入iptables,说明:21端口是ftp服务端口;10060到10090是Vsftpd被动模式需要的端口,可自定义一段大于1024的tcp端口

     -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT 

     -A INPUT -m state --state NEW -m tcp -p tcp --dport 10060:10090 -j ACCEPT

     :wq! #保存退出

     systemctl restart iptables.service #最后重启防火墙使配置生效

     systemctl enable iptables.service #设置防火墙开机启动

    复制代码

    二、关闭SELINUX

    复制代码
    vi /etc/selinux/config
    

    SELINUX=enforcing #注释掉

    SELINUXTYPE=targeted #注释掉

    SELINUX=disabled #增加

    :wq! #保存退出

    setenforce 0 #使配置立即生效

    复制代码

    三、安装vsftpd

    复制代码
    rpm -qc vsftpd #查询vsftpd是否安装

    yum install -y vsftpd #安装vsftpd

    yum install -y psmisc net-tools systemd-devel libdb-devel perl-DBI #安装vsftpd虚拟用户配置依赖包

    systemctl start vsftpd.service #启动

    systemctl enable vsftpd.service #设置vsftpd开机启动

    复制代码

    四、新建系统用户vsftpd

    useradd vsftpd -d /home/wwwroot -s /bin/false #用户目录为/home/wwwroot, 用户登录终端设为/bin/false(即使之不能登录系统)
    

    chown vsftpd:vsftpd /home/wwwroot -R

    五、建立虚拟用户个人Vsftp的配置文件和子账号FTP权限

    复制代码
    mkdir /etc/vsftpd/vconf
    

    cd /etc/vsftpd/vconf

    touch web1 #这里创建虚拟用户配置文件

    mkdir -p /home/wwwroot/web1/http/mydic

     #设置FTP上传文件新增权限,最新的vsftpd要求对主目录不能有写的权限所以ftp为755,主目录下面的子目录再设置777权限  

      chmod -R 755 /home/wwwroot/web1/http
      chmod R 777 /home/wwwroot/web1/http/mydic

    vi web1 #编辑用户web1配置文件,其他的跟这个配置文件类似,输入下面红色内容

     local_root=/home/wwwroot/web1/http/  #设置FTP账号根目录

     write_enable=YES

      anon_world_readable_only=NO

      anon_upload_enable=YES

      anon_mkdir_write_enable=YES

      anon_other_write_enable=YES

    :wq! #保存退出
    复制代码

    六、配置vsftp服务器

    cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf-bak #备份默认配置文件

    执行以下命令进行设置:

    复制代码
    sed -i "s/anonymous_enable=YES/anonymous_enable=NO/g" '/etc/vsftpd/vsftpd.conf'
    

    sed -i "s/#anon_upload_enable=YES/anon_upload_enable=NO/g" '/etc/vsftpd/vsftpd.conf'

    sed -i "s/#anon_mkdir_write_enable=YES/anon_mkdir_write_enable=YES/g" '/etc/vsftpd/vsftpd.conf'

    sed -i "s/#chown_uploads=YES/chown_uploads=NO/g" '/etc/vsftpd/vsftpd.conf'

    sed -i "s/#async_abor_enable=YES/async_abor_enable=YES/g" '/etc/vsftpd/vsftpd.conf'

    sed -i "s/#ascii_upload_enable=YES/ascii_upload_enable=YES/g" '/etc/vsftpd/vsftpd.conf'

    sed -i "s/#ascii_download_enable=YES/ascii_download_enable=YES/g" '/etc/vsftpd/vsftpd.conf'

    sed -i "s/#ftpd_banner=Welcome to blah FTP service./ftpd_banner=Welcome to FTP service./g" '/etc/vsftpd/vsftpd.conf'

    echo -e "use_localtime=YES listen_port=21 chroot_local_user=YES idle_session_timeout=300

    data_connection_timeout
    =1 guest_enable=YES guest_username=vsftpd #此处要和刚刚创建的用户名一直

    user_config_dir=/etc/vsftpd/vconf virtual_use_local_privs=YES

    pasv_min_port=10060 pasv_max_port=10090

    accept_timeout=5 connect_timeout=1" >> /etc/vsftpd/vsftpd.conf

    复制代码

    配置文件说明:

    复制代码
    anonymous_enable=NO //设定不允许匿名访问
    local_enable=YES //设定本地用户可以访问。注:如使用虚拟宿主用户,在该项目设定为NO的情况下所有虚拟用户将无法访问
    chroot_list_enable=YES //使用户不能离开主目录
    ascii_upload_enable=YES
    ascii_download_enable=YES //设定支持ASCII模式的上传和下载功能
    pam_service_name=vsftpd   //PAM认证文件名。PAM将根据/etc/pam.d/vsftpd进行认证

    #以下这些是关于vsftpd虚拟用户支持的重要配置项,默认vsftpd.conf中不包含这些设定项目,需要自己手动添加 guest_enable=YES //设定启用虚拟用户功能 guest_username=vsftpd //指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户了,通过映射到vsftpd user_config_dir=/etc/vsftpd/vuser_conf //设定虚拟用户个人vsftp的CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名)
    复制代码
    
    

    七、建立虚拟用户名单文件

    touch /etc/vsftpd/virtusers

    编辑虚拟用户名单文件:(第一行账号,第二行密码,注意:不能使用root做用户名,系统保留)

    vi /etc/vsftpd/virtusers
    web1
    123456
    :wq! #保存退出

    八、生成虚拟用户数据文件

    db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
    

    chmod 600 /etc/vsftpd/virtusers.db #设定PAM验证文件,并指定对虚拟用户数据库文件进行读取

    九、在/etc/pam.d/vsftpd的文件头部加入以下信息(在后面加入无效)

    修改前先备份 

    cp /etc/pam.d/vsftpd /etc/pam.d/vsftpdbak
    vi /etc/pam.d/vsftpd #先注释到vsftpd所有配置,加入下面红色部分
    

    auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
    account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers

    注意:如果系统为32位,上面改为lib,否则配置失败;

    十、最后重启vsftpd服务器

    systemctl restart vsftpd.service

    可通过  tail -f /var/log/secure 指令,查看服务器安全日志,便于分析错误问题,设置操作效果一定要仔细.....

    参考博客:

    CentOS FTP基于虚拟用户的配置         http://www.cnblogs.com/surge/p/3868385.html
    CentOS 7.0安装配置vsftp服务器        http://www.linuxidc.com/Linux/2016-09/135636.htm

    vsftpd+pam=虚拟用户登录FTP服务器 http://blog.chinaunix.net/uid-7553302-id-2978313.html

    centos 安装vsftp 绝对成功包括目录权限配置 http://blog.csdn.net/openn/article/details/8744650

  • 相关阅读:
    docker下overlay2占用空间过大,清理docker占用空间
    js为浏览器URL追加参数
    img转Blob对象
    《ECharts》伪立体柱状图
    js分秒格式转时分秒
    表单边框缺一角效果
    File对象转base64
    《VUE》可编辑div限制字数
    quill富文本编辑器自定义字体、文字大小(编辑器内含element上传组件)
    我在华为工作十年的感悟(文摘)
  • 原文地址:https://www.cnblogs.com/jpfss/p/8037245.html
Copyright © 2020-2023  润新知