zoukankan      html  css  js  c++  java
  • CentOS FTP安装及配置

    CentOS  FTP安装及配置

    LINUX下实现FTP服务的软件很多,最常见的有vsftpd,Wu-ftpd和Proftp等.Red Hat Enterprise Linux中默认安装的是vsftpd.
    访问FTP服务器时需要经过验证,只有经过了FTP服务器的相关验证,用户才能访问和传输文件.vsftpd提供了3种ftp登录形式:

        (1)anonymous(匿名帐号)
    使用anonymous是应用广泛的一种FTP服务器.如果用户在FTP服务器上没有帐号,那么用户可以以anonymous为用户名,以自己的电子邮件地址为密码进行登录.当匿名用户登录FTP服务器后,其登录目录为匿名FTP服务器的根目录/var/ftp.为了减轻FTP服务器的负载,一般情况下,应关闭匿名帐号的上传功能.

        (2)real(真实帐号)
    real也称为本地帐号,就是以真实的用户名和密码进行登录,但前提条件是用户在FTP服务器上拥有自己的帐号.用真实帐号登录后,其登录的目录为用户自己的目录,该目录在系统建立帐号时系统就自动创建.

        (3)guest(虚拟帐号)
    如果用户在FTP服务器上拥有帐号,但此帐号只能用于文件传输服务,那么该帐号就是guest,guest是真实帐号的一种形式,它们的不同之处在于,geust登录FTP服务器后,不能访问除宿主目录以外的内容.

    ===================================================================

    FTP的安装   (vsftp默认安装完之后,就允许匿名用户本地用户登陆)

    1、检测是否安装了FTP :[root@localhost ~]# rpm -q vsftpd

          如果安装了会显示版本信息:

          [root@localhost ~]# vsftpd-2.0.5-16.el5_5.1

          否则显示:[root@localhost ~]# package vsftpd is not installed

    2、如果没安装FTP,运行yum install vsftpd命令

      具体的细节如下:(如果无法更新,你先配置能访问互联网,我有文档叫 CentOS 在 VMware下,如何联网到Internet的解决办法 可以解决无法上网的问题)

      [root@localhost ~]# yum install vsftpd

      [root@localhost ~]# touch /var/log/vsftpd.log     #创建vsftp的日志文件

    3、 不应该给root用户开启 ftp的功能,因为别人就能用ftp一直测试你root的密码 (默认是禁止root用户登录的,此处只用于说明,不需要操作)  

     
    4、执行以下命令

      # setsebool -P ftp_home_dir=1    (SELinux命令,Redhat从FC3开始,就使用了SELinux来增强安全。为防止出现下面 500 OOPS 的错误
         -P 参数表示永久有效。

         ftp连接的时候 出现 "500 OOPS:cannot change directory:/" 错误: 修改方法:  (会出现在虚拟用户登录的情况下)

         setsebool -P ftp_home_dir on 或者 setsebool -P ftpd_disable_trans on
         setsebool -P ftp_home_dir=1 或者 setsebool -P ftpd_disable_trans=1 效果同上

      修改/etc/vsftpd/vsftpd.conf,在最后一行处添加local_root=/           (本地用户访问目录)

    5、重启ftp进程   #service vsftpd restart

    启动和关闭分别把restart改为start/stop即可.
    如果是源码安装的,到安装文件夹下找到start.sh和shutdown.sh文件,执行它们就可以了.

    注:每次修改过ftp相关的配置文件,都需要重启ftp进程来生效。ftp服务器就可以使用了。

    最后为了防止服务器由于断电、重启等现象发生,导致ftp进程在开机后未启动,将其添加到开机启动文件中:

    (1)找到/etc/rc.local文件

    (2)打开该文件,在最后一行添加:service vsftpd start

    (3)保存,退出


    这样就可以完成了一个简单的匿名FTP的搭建。你可以通过访问ftp://yourip来进行,不过这个FTP没有任何权限。

    匿名用户登录,不需要输入用户名

    windows doc 下登陆成功:


    ******************************************************************************************
    ******************************************************************************************

    与vsftpd服务器有关的文件和文件夹
    vsftpd服务器的配置文件的是: /etc/vsftpd/vsftpd.conf
    vsftpd服务器的根目录,即FTP服务器的主目录:/var/ftp/pub
    如果你想修改服务器目录的路径,那么你只要修改/var/ftp到别处就行了

    linux中vsftp修改默认路径:

    如果是默认安装vsftpd的话,以下是一些文件的位置约定:
    /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/vsftpd.conf,加入如下三行:
    local_root=/                #表示使用本地用户登录到ftp时的默认目录              
    chroot_local_user=YES
    anon_root=/                 #表示匿名用户登录到ftp时的默认目录,例如:anon_root=/usr/local/apache/htdocs/anon             
     
    上面的chroot_list_file是设定锁定登陆用户在其home目录的列表,要在chroot_list_enable=YES情况下才生效。
     
    另外,如luo_rc所述,最好不要设置默认目录为/,使用建议使用mount --bind来挂载需要的目录。
     
    最后重启服务:   service  vsftpd restart

    ******************************************************************************************
    ******************************************************************************************

    虚拟账户

    1.建立虚拟用户口令库文件

    vi logins.txt     //文件名随意

    文件内容:  (这些用户在linux中不需要存在,虚拟的)

    user1
    passwd1
    user2
    passwd2
    .....
    .....

    2.生成vsftpd的认证文件

    db_load -T -t hash -f ./logins.txt /etc/vsftpd/ftp_login.db

    将用户信息文件转换为数据库并用hash加密

    说明 : db_load : 触发db4转换程序,需要安装db4_utils程序包
               -T          : 允许应用程序能够将文本文件转译载入数据库。  由于我们之后是将虚拟用户的信息(logins.txt)以文件方式存储在这个文件里,为了让vsftp应用程序能够通过文本来载入用户数据,必须要使用这个选项
               -t          : 子选项-t,追加在-T选项后,用来指定转译载入的数据库类型。 -t可以指定的数据类型有 Btree,Hash,Queue和Recon数据库。
               -f          : 参数后面接包含用户名和密码的文本文件,文件内容是: 奇数行用户名,偶数行密码。

    添加虚拟用户口令数据库的读写权限

    chmod 600 /etc/vsftpd/ftp_login.db

    3.建立虚拟用户所需的PAM配置文件

    cd /etc/pam.d  //进入到这个目录下
    vi ftp.v       //配置文件名 ftp.v 可以任取,例如  ftp.uv,ftpv,ftpvirtual

    配置文件内容

    auth required /lib/security/pam_userdb.so  db=/etc/vsftpd/ftp_login              //指向的文件为第二步创建的vsftp认证数据库文件名
    account required  /lib/security/pam_userdb.so db=/etc/vsftpd/ftp_login

    4.建立虚拟用户所需要访问的目录,并设置相应的权限

    useradd virtual            //用户名任意
    chmod -R 755 /home/virtual //为要访问的目录设置权限,如果没有设置,虚拟用户虽然能登陆,但看不到里面的文件,虚拟用户为其它用户范

    5.设置vsftpd.conf 配置文件

    pam_service _name=ftp_login
    guest_enable=YES
    guest_username=virtual  //所有虚拟用户登陆的时候,都映射为virtual用户,访问该用户的目录

    之后可以再 window通过doc界面 或者  FLASHFXP.EXE 软件,使用 user1,passwd1等虚拟用户访问 virtual用户的目录。

     ------------------------------------------------------------------------------------------------------------------

    对不同的虚拟用户设置不同的权限    (没尝试的欲望)
    1) 设置主配置文件
    在vsftpd.conf文件中添加用户配置文件目录设置
    user_config_dir=/etc/vsftpd/vsftpd_user_conf
    2)  建立用户配置文件目录
    # mkdir /etc/vsftpd/vsftpd_user_conf
    3)  为虚拟用户建立单独的配置文件
    a.用户配置文件名称与用户名相同
    touch /etc/vsftpd/vsftpd_user_conf/zhangsan
    touch /etc/vsftpd/vsftpd_user_conf/lisi
    b.每个FTP虚拟用户都可以独立设置其权限
    anon_world_readable_only=NO   //如果是NO,说明用户还可以下载等权限
    anon_upload_enable=YES          //是否可以上传文件
    anon_mkdir_write_enable=YES   //是否可以创建文件
    anon_other_write_enable=YES   //是否可以修改文件包括删除

    ******************************************************************************************
    ******************************************************************************************

    本地帐号
    vsftpd 使用默认的vsftpd.conf 就能实现 本地账号的登陆。

    ******************************************************************************************
    ******************************************************************************************

    二、vsftpd的配置文件说明:

       vsftpd.ftpusers:位于/etc目录下。它指定了哪些用户账户不能访问FTP服务器,例如root等。
    
      vsftpd.user_list:位于/etc目录下。该文件里的用户账户在默认情况下也不能访问FTP服务器,仅当vsftpd .conf配置文件里启用userlist_enable=NO选项时才允许访问。
    
      vsftpd.conf:位于/etc/vsftpd目录下。来自定义用户登录控制、用户权限控制、超时设置、服务器功能选项、服务器性能选项、服务器响应消息等FTP服务器的配置。
    
      (1)用户登录控制
    
      anonymous_enable=YES,允许匿名用户登录。
    
      no_anon_password=YES,匿名用户登录时不需要输入密码。
    
      local_enable=YES,允许本地用户登录。
    
      deny_email_enable=YES,可以创建一个文件保存某些匿名电子邮件的黑名单,以防止这些人使用Dos攻击。
    
        banned_email_file=/etc/vsftpd.banned_emails,当启用deny_email_enable功能时,所需的电子邮件黑名单保存路径(默认为/etc/vsftpd.banned_emails)。
    
      (2)用户权限控制
    
      write_enable=YES,开启全局上传权限。
    
      local_umask=022,本地用户的上传文件的umask设为022(系统默认是077,一般都可以改为022)。
    
      anon_upload_enable=YES,允许匿名用户具有上传权限,很明显,必须启用write_enable=YES,才可以使用此项。同时我们还必须建立一个允许ftp用户可以读写的目录(前面说过,ftp是匿名用户的映射用户账号)。
    
      anon_mkdir_write_enable=YES,允许匿名用户有创建目录的权利。
    
      chown_uploads=YES,启用此项,匿名上传文件的属主用户将改为别的用户账户,注意,这里建议不要指定root账号为匿名上传文件的属主用户!
    
      chown_username=whoever,当启用chown_uploads=YES时,所指定的属主用户账号,此处的whoever自然要用合适的用户账号来代替。
    
      chroot_list_enable=YES,可以用一个列表限定哪些本地用户只能在自己目录下活动,如果chroot_local_user=YES,那么这个列表里指定的用户是不受限制的。
    
       chroot_list_file=/etc/vsftpd.chroot_list,如果chroot_local_user=YES,则指定该列表(chroot_local_user)的保存路径(默认是/etc/vsftpd.chroot_list)。
    
      nopriv_user=ftpsecure,指定一个安全用户账号,让FTP服务器用作完全隔离和没有特权的独立用户。这是vsftpd系统推荐选项。
    
      async_abor_enable=YES,强烈建议不要启用该选项,否则将可能导致出错!
    
      ascii_upload_enable=YES;ascii_download_enable=YES,默认情况下服务器会假装接受ASCⅡ模式请求但实际上是忽略这样的请求,启用上述的两个选项可以让服务器真正实现ASCⅡ模式的传输。
    
      注意:启用ascii_download_enable选项会让恶意远程用户们在ASCⅡ模式下用“SIZE/big/file”这样的指令大量消耗FTP服务器的I/O资源。
    
      这些ASCⅡ模式的设置选项分成上传和下载两个,这样我们就可以允许ASCⅡ模式的上传(可以防止上传脚本等恶意文件而导致崩溃),而不会遭受拒绝服务攻击的危险。
    
      (3)用户连接和超时选项
    
      idle_session_timeout=600,可以设定默认的空闲超时时间,用户超过这段时间不动作将被服务器踢出。
    
      data_connection_timeout=120,设定默认的数据连接超时时间。
    
      (4)服务器日志和欢迎信息
    
      dirmessage_enable=YES,允许为目录配置显示信息,显示每个目录下面的message_file文件的内容。
    
      ftpd_banner=Welcome to blah FTP service,可以自定义FTP用户登录到服务器所看到的欢迎信息。
    
      xferlog_enable=YES,启用记录上传/下载活动日志功能。
    
      xferlog_file=/var/log/vsftpd.log,可以自定义日志文件的保存路径和文件名,默认是/var/log/vsftpd.log。
    
      anonymous_enable=YES 允许匿名登录local_enable=YES 允许本地用户登录
    
      write_enable=YES 开放本地用户写权限
    
      local_umask=022 设置本地用户生成文件的掩码为022
    
      #anon_upload_enable=YES 此项设置允许匿名用户上传文件
    
      #anon_mkdir_write_enable=YES 开启匿名用户的写和创建目录的权限
    
      dirmessage_enable=YES 当切换到目录时,显示该目录下的.message隐藏文件的内容
    
      xferlog_enable=YES 激活上传和下载日志
    
      connect_from_port_20=YES 启用FTP数据端口的连接请求
    
      #chown_uploads=YES 是否具有上传权限. 用户由chown_username参数指定。
    
      #chown_username=whoever 指定拥有上传文件权限的用户。此参数与chown_uploads联用。
    
      #xferlog_file=/var/log/vsftpd.log
    
      xferlog_std_format=YES 使用标准的ftpd xferlog日志格式
    
      #idle_session_timeout=600 此设置将在用户会话空闲10分钟后被中断
    
      #data_connection_timeout=120 将在数据连接空闲2分钟后被中断
    
      #ascii_upload_enable=YES 启用上传的ASCII传输方式
    
      #ascii_download_enable=YES 启用下载的ASCII传输方式
    
      #ftpd_banner=Welcome to blah FTP service 设置用户连接服务器后显示消息
    
      #deny_email_enable=NO 此参数默认值为NO。当值为YES时,拒绝使用banned_email_file参数指定文件中所列出的e-mail地址用户登录。
    
      #banned_email_file=/etc/vsftpd.banned_emails 指定包含拒绝的e-mail地址的文件.
    
      #chroot_list_enable=YES 设置本地用户登录后不能切换到自家目录以外的别的目录
    
      #chroot_list_file=/etc/vsftpd.chroot_list
    
      #ls_recurse_enable=YES
    
      pam_service_name=vsftpd 设置PAM认证服务的配置文件名称,该文件存放在/etc/pam.d/
    
      userlist_enable=YES 此项配置/etc/vsftpd.user_list中指定的用户也不能访问服务器,若添加userlist_deny=No,则仅仅/etc/vsftpd.user_list文件中的用户可以访问,其他用户都不可以访问服务器。如过userlist_enable=NO,userlist_deny=YES,则指定使文件/etc/vsftpd.user_list中指定的用户不可以访问服务器,其他本地用户可以访问服务器。
      listen=YES 指明VSFTPD以独立运行方式启动
    
      tcp_wrappers=YES 在VSFTPD中使用TCP_Wrappers远程访问控制机制,默认值为YES 

    ******************************************************************************************
    ******************************************************************************************

    其它文献:

    RedHat9-vsftp配置大全 http://doc.linuxpk.com/4231.html

  • 相关阅读:
    s3fs 挂载minio为本地文件系统
    P5787 线段树分治
    P5494 线段树分裂
    P1552 [APIO2012]派遣
    CF600E Lomsat gelral(线段树合并)
    P5283 异或粽子
    P4735 最大异或和(可持久化 trie)
    P3960 列队
    bzoj4316 小C的独立集
    P5021 赛道修建
  • 原文地址:https://www.cnblogs.com/zhiqixue/p/2800803.html
Copyright © 2011-2022 走看看