• Linux:FTP服务器的搭建


    FTP服务器的简介

    系统用户
    即系统本机的用户。Linux一般不会针对实体用户进行限制,因此实体用户可以针对整个文件
    系统进行工作。但通常不希望他们通过FTP方式远程访问系统。
    
    虚拟用户
    只能采用FTP方式使用系统的用户,不能直接使用Shell登录系统,即虚拟用户,访问服务器
    时需要验证。大多数FTP用户是这类用户。
    
    匿名用户
    对于公共性质的服务器可以提供匿名用户访问,用户名:anonymous。但在使用匿名用户时,
    应对其进行尽可能多的限制,权限较低,如:同时连接的用户数量受限,访问的文件数目受限,
    不能上传文件,允许操作的指令较少,设置匿用户同时登入的最大联机数量等。
    

    FTP服务器的安装

    使用yum安装vsftpd软件包
    #yum install vsftpd ftp
    
    启动服务并设置开机自启
    #systemctl start vsftpd.service 
    #systemctl enable vsftpd.service
    
    设置防火墙与selinux机制
    #firewall-cmd --permanent --zone=public --add-service=ftp
    #firewall-cmd --reload
    #setenforce 0
    

    配置访问

    配置匿名用户访问FTP
    ftp的配置文件
    ftp的配置文件是:/etc/vsftpd/vsftpd.conf 
    设置匿名用户访问ftp:
    anonymous_enable=YES
    
    设置匿名用户登录ftp时不输入密码
    设置匿名用户登录ftp时不输入密码:
    no_anon_password=YES
    ftpd_banner= welcome to our home!   //设置提示内容
    
    设置匿名用户上传、新建、删除文件
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=yes
    
    设置文件权限
    chmod 777 pub   不推荐使用
    
    setfacl -m u:ftp:rwx pub   推荐使用
    
    设置匿名用户上传或新建文件的权限
    如果使用vsftp的是本地用户,则要修改配置文件中的 local_umask 的值;
    
    如果使用vsftp的是虚拟用户,则要修改配置文件中的 anon_umask 的值。
    
    umask = 022 时,新建的目录 权限是755,文件的权限是 644;
    
    umask = 077 时,新建的目录 权限是700,文件的权限时 600。
    
    设置不允许系统用户登录,只能匿名用户登录
    anonymous_enable=YES
    
    local_enable=no
    
    设置匿名用户访问ftp的默认目录
    anon_root=/var/ftp
    
    anon_root=/var/public
    
          注意:要修改vsftp服务器匿名用户默认目录时,不可以将anon_root设置为一个其他账号已有的家目录,否则不能实现匿名用户访问ftp服务器。
    
    配置系统用户访问FTP
    设置系统用户只能访问自己的主目录
    设置系统用户只能访问自己的主目录并具有所有权限,不允许切换到系统的其他目录
    
    chroot_local_user=YES   控制用户访问路径访问自己的主目录,不能切换到其他目录
    
    allow_writeable_chroot=YES  允许写入
    
    ftpd_banner= welcome to our home!
    
    max_clients=30   设置最大连接数
    
    idle_session_timeout=600   设置超时时间
    
    设置系统用户访问指定目录
    设置系统用户访问指定目录,不允许切换到系统的其他目录,并具上传、下载、新建、删除的权限。
    
    local_root=/mnt/public/   设置系统用户访问ftp的默认目录
    
    write_enable=YES          允许写入
    
    chroot_local_user=YES      控制用户访问路径访问指定目录,不能切换到其他目录
    
    allow_writeable_chroot=YES 允许写入
    
    修改/mnt/public/目录下的文件权限
    
    基于本地用户的访问控制
    默认情况下
    默认情况下,ftp服务器中所有系统用户都可以访问ftp,如何来限定只有指定的系统用户可以访问呢?vsftp中提供了两个与系统用户相关的配置文件:
    
    /etc/vsftpd/ftpusers  提供了一份用于禁止登录的ftp用户列表(黑名单)。 
                          此文件中包含的用户将被禁止登录vsftpd服务器,不管该用户是否在
                          /etc/vfsftpd/user_list中出现。
    	
    /etc/vsftpd/user_list 提供了一份用于允许登录的ftp用户列表(白名单),
                          此文件中包含的用户可能被禁止登录,可能被允许登录。
    
    
    具体配置
    具体在主配置文件vsftpd.conf中决定:
        当存在userlist_enable=YES时,user_list文件生效。
        当存在userlist_deny=YES时,则仅禁止列表中的帐户登录。
        当存在userlist_deny=NO时,则允许列表中用户登录。  
        其中:ftpusers文件的优先级要高于user_list文件,即如果一个用户同时存在
              于两个文件中,则被拒绝访问ftp。
                举例:只让ftpuser用户访问ftp,那么可以进行如下设置:
                     #vim /etc/vsftpd/vsftpd.conf
                       userlist_enable=YES       启用userlist用户列表(系统默认设置)
                       userlist_deny=NO         只允许列表中的用户登录    
                    #vim/etc/vsftpd/user_list
    
    将允许登录的用户添加在最后
    
    将服务重启后,在客户端测试,此时只有ftpuser用户可以访问ftp
    
    

    ftp日志管理

    日志文件
    Vsftp软件搭建的FTP服务器的日志文件的配置,在/etc/vsftpd.conf中找到:
    
    xferlog_enable=YES   开启FTP服务器记录上传下载的情况
    
    xferlog_std_format=YES    日志格式
    
    xferlog_file=路径        指定日志文件
    
    默认为:/var/log/xferlog
    
    日志文件输出格式
    (1)当前时间(为本地时间),格式为:DDD MMM dd hh:mm:ss YYYY
    
    (2)传输时间:传送文件所用时间,单位为秒
    
    (3)远程主机名称/IP:
    
    (4)文件大小:传输文件的大小,单位为byte
    
    (5)文件名:传输文件名,包括路径
    
    (6)传输类型:a--以ASCII传输;b--以二进制文件传输
    
    (7)特殊处理标志:
    _:不做任何特殊处理
    c:文件是压缩格式
    u:文件是非压缩格式
    t:文件时tar格式
    
    (8)传输方向:o 从FTP服务器想客户端传输;i 从客户端向FTP服务器传输
    
    (9)访问模式:a 匿名用户;g 来宾用户;r 系统中的用户
    
    (10)用户名
    
    (11)服务名:一般为FTP
    
    (12)认证方式:0 无; 1 RFC931认证
    
    (13)认证用户id:如果使用*,测表示无法获得该id
    
    (14)完成状态:i 传输未完成;c表示传输已完成。
    

    配置虚拟用户访问

    安装Vsftpd虚拟用户需要用到的软件及认证模块
    yum install pam* libdb-utils libdb* --skip-broken -y
    
    创建虚拟用户临时文件/etc/vsftpd/ftpusers.txt,用户名密码格式
    xxxxxx
    123456
    ……
    ……
    
    生成Vsftpd虚拟用户数据库认证文件,设置权限为600
    权限为600 表示只有所有者可以访问
    #db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftp_login.db
       #chmod 600 /etc/vsftpd/vsftp_login.db 
    
    配置PAM认证文件:vim /etc/pam.d/vsftpd.vu
    配置PAM认证文件:vim /etc/pam.d/vsftpd.vu
    
       auth   required   pam_userdb.so   db=/etc/vsftpd/vsftp_login
    
       account  required  pam_userdb.so  db=/etc/vsftpd/vsftp_login
    
    
    创建一个系统用户,用于虚拟用户映射
    #useradd -s /sbin/nologin ftpuser
    
    修改配置文件
    修改配置文件:#vim /etc/vsftpd/vsftpd.conf 
    
       #pam_service_name=vsftpd
    
       pam_service_name=vsftpd.vu
    
       guest_enable=YES
    
       guest_username=ftpuser
    
       user_config_dir=/etc/vsftpd/vsftpd_user_conf
    
       virtual_use_local_privs=YES
    
    分别为虚拟用户创建私有的虚拟目录与独立的配置文件
    #mkdir /home/ftpuser/techftp
    
    #mkdir /etc/vsftpd/vsftpd_user_conf
    
    #vim techftp
         local_root=/home/ftpuser/techftp
    write_enable=YES
    anon_world_readable_only=YES
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    
    #mkdir /home/ftpuser/netftp
    
    #vim netftp
         local_root=/home/ftpuser/netftp
    write_enable=YES
    virtual_use_local_privs=NO      #不具有可登录用户的权限     
    anon_world_readable_only=YES             #可浏览目录
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    
  • 相关阅读:
    Serverless Wordpress 系列建站教程(五)
    剑指 Offer 13. 机器人的运动范围
    剑指 Offer 12. 矩阵中的路径
    网络相关知识
    网络相关知识(TCP部分)
    笔试中的流程控制题
    笔试:一些怕忘掉的基础东西
    笔试:处理输入基础
    设计模式:行为型->观察者模式
    设计模式:结构型->代理模式
  • 原文地址:https://www.cnblogs.com/yanlzy/p/11917786.html
Copyright © 2020-2023  润新知