zoukankan      html  css  js  c++  java
  • 如何在Ubuntu上搭建FTP服务器

    //我使用的Ubuntu版本:19.10

    Ubuntu自带了一个FTP服务器,叫做vsftpd (Very Safe FTP),安装起来很方便,所以这里我将使用vsftpd来作演示。

    STEP 1:安装vsftpd

    sudo apt update
    sudo apt install vsftpd

    STEP 2:新建FTP专用用户

    如果想要给FTP服务器设置用户名和密码,就需要新建一个用户。FTP的登陆账号和密码就是该用户的账号和密码。

    一个FTP服务器可以有多个账号,不同账号的访问权限还可以不一样。

    //注:其实并不是必须新建一个FTP专用的用户,可以使用已有的用户。但是这样会造成很大的安全隐患,所以不建议这么做。

    创建用户文件夹:

    sudo mkdir /home/EFtp

    这是用户文件夹,以后还会用来存储FTP服务器的文件。文件夹的名字应与用户名保持一致。

    //注:我的FTP用户名是EFtp,这个名字可以按照个人喜好设置,没必要跟我的一样。如果要使用你自己的用户名,请把本教程的所有EFtp改成你自己的用户名(已经被我用红色勾了出来)。

    设置文件夹权限:

    sudo chmod 777 -R /home/EFtp

    777:开启全部权限。

    -R:将子文件和子文件夹一同设置。

    创建用户:

    sudo useradd -d /home/EFtp -m EFtp

    -d:设置用户文件夹

    -m:设置用户名

    设置密码:

    sudo passwd EFtp

    然后根据提示设置密码。

    注意,输入密码的过程中,密码不会显示出来。

    STEP 3:配置vsftpd

    打开配置文件:

    sudo vim /etc/vsftpd.conf

    更改为这样(需要注意的行用绿色表示了出来):

      1 # Example config file /etc/vsftpd.conf
      2 #
      3 # The default compiled in settings are fairly paranoid. This sample file
      4 # loosens things up a bit, to make the ftp daemon more usable.
      5 # Please see vsftpd.conf.5 for all compiled in defaults.
      6 #
      7 # READ THIS: This example file is NOT an exhaustive list of vsftpd options.
      8 # Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
      9 # capabilities.
     10 #
     11 #
     12 # Run standalone?  vsftpd can run either from an inetd or as a standalone
     13 # daemon started from an initscript.
     14 listen=NO
     15 #
     16 # This directive enables listening on IPv6 sockets. By default, listening
     17 # on the IPv6 "any" address (::) will accept connections from both IPv6
     18 # and IPv4 clients. It is not necessary to listen on *both* IPv4 and IPv6
     19 # sockets. If you want that (perhaps because you want to listen on specific
     20 # addresses) then you must run two copies of vsftpd with two configuration
     21 # files.
     22 listen_ipv6=YES
     23 #
     24 # Allow anonymous FTP? (Disabled by default).
     25 anonymous_enable=NO
     26 #
     27 # Uncomment this to allow local users to log in.
     28 local_enable=YES
     29 #
     30 # Uncomment this to enable any form of FTP write command.
     31 write_enable=YES
     32 #
     33 # Default umask for local users is 077. You may wish to change this to 022,
     34 # if your users expect that (022 is used by most other ftpd's)
     35 #local_umask=002
     36 #
     37 # Uncomment this to allow the anonymous FTP user to upload files. This only
     38 # has an effect if the above global write enable is activated. Also, you wil    l
     39 # obviously need to create a directory writable by the FTP user.
     40 #anon_upload_enable=YES
     41 #
     42 # Uncomment this if you want the anonymous FTP user to be able to create
     43 # new directories.
     44 #anon_mkdir_write_enable=YES
     45 #
     46 # Activate directory messages - messages given to remote users when they
     47 # go into a certain directory.
     48 dirmessage_enable=YES
     49 #
     50 # If enabled, vsftpd will display directory listings with the time
     51 # in  your  local  time  zone.  The default is to display GMT. The
     52 # times returned by the MDTM FTP command are also affected by this
     53 # option.
     54 use_localtime=YES
     55 #
     56 # Activate logging of uploads/downloads.
     57 xferlog_enable=YES
     58 #
     59 # Make sure PORT transfer connections originate from port 20 (ftp-data).
     60 connect_from_port_20=YES
     61 #
     62 # If you want, you can arrange for uploaded anonymous files to be owned by
     63 # a different user. Note! Using "root" for uploaded files is not
     64 # recommended!
     65 #chown_uploads=YES
     66 #chown_username=whoever
     67 #
     68 # You may override where the log file goes if you like. The default is shown
     69 # below.
     70 #xferlog_file=/var/log/vsftpd.log
     71 #
     72 # If you want, you can have your log file in standard ftpd xferlog format.
     73 # Note that the default log file location is /var/log/xferlog in this case.
     74 #xferlog_std_format=YES
     75 #
     76 # You may change the default value for timing out an idle session.
     77 #idle_session_timeout=600
     78 #
     79 # You may change the default value for timing out a data connection.
     80 #data_connection_timeout=120
     81 #
     82 # It is recommended that you define on your system a unique user which the
     83 # ftp server can use as a totally isolated and unprivileged user.
     84 #nopriv_user=ftpsecure
     85 #
     86 # Enable this and the server will recognise asynchronous ABOR requests. Not
     87 # recommended for security (the code is non-trivial). Not enabling it,
     88 # however, may confuse older FTP clients.
     89 #async_abor_enable=YES
     90 #
     91 # By default the server will pretend to allow ASCII mode but in fact ignore
     92 # the request. Turn on the below options to have the server actually do ASCII
     93 # mangling on files when in ASCII mode.
     94 # Beware that on some FTP servers, ASCII support allows a denial of service
     95 # attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
     96 # predicted this attack and has always been safe, reporting the size of the
     97 # raw file.
     98 # ASCII mangling is a horrible feature of the protocol.
     99 #ascii_upload_enable=YES
    100 #ascii_download_enable=YES
    101 #
    102 # You may fully customise the login banner string:
    103 #ftpd_banner=Welcome to blah FTP service.
    104 #
    105 # You may specify a file of disallowed anonymous e-mail addresses. Apparently
    106 # useful for combatting certain DoS attacks.
    107 #deny_email_enable=YES
    108 # (default follows)
    109 #banned_email_file=/etc/vsftpd.banned_emails
    110 #
    111 # You may restrict local users to their home directories.  See the FAQ for
    112 # the possible risks in this before using chroot_local_user or
    113 # chroot_list_enable below.
    114 #chroot_local_user=YES
    115 #
    116 # You may specify an explicit list of local users to chroot() to their home
    117 # directory. If chroot_local_user is YES, then this list becomes a list of
    118 # users to NOT chroot().
    119 # (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
    120 # the user does not have write access to the top level directory within the
    121 # chroot)
    122 chroot_local_user=YES
    123 chroot_list_enable=YES
    124 # (default follows)
    125 chroot_list_file=/etc/vsftpd.chroot_list
    126 #
    127 # You may activate the "-R" option to the builtin ls. This is disabled by
    128 # default to avoid remote users being able to cause excessive I/O on large
    129 # sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
    130 # the presence of the "-R" option, so there is a strong case for enabling it.
    131 #ls_recurse_enable=YES
    132 #
    133 # Customization
    134 #
    135 # Some of vsftpd's settings don't fit the filesystem layout by
    136 # default.
    137 #
    138 # This option should be the name of a directory which is empty.  Also, the
    139 # directory should not be writable by the ftp user. This directory is used
    140 # as a secure chroot() jail at times vsftpd does not require filesystem
    141 # access.
    142 secure_chroot_dir=/var/run/vsftpd/empty
    143 #
    144 # This string is the name of the PAM service vsftpd will use.
    145 pam_service_name=vsftpd
    146 #
    147 # This option specifies the location of the RSA certificate to use for SSL
    148 # encrypted connections.
    149 rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
    150 rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
    151 ssl_enable=NO
    152 
    153 #
    154 # Uncomment this to indicate that vsftpd use a utf8 filesystem.
    155 #utf8_filesystem=YES
    156 #Set default directory
    157 local_root=/home/EFtp

    注意:最后两行原文中是没有的,需要自己添加上去。

    //再次提醒:把157行的EFtp改成你自己创建的FTP专用用户名。

    保存,退出文件。

    运行命令:

    sudo vim /etc/vsftpd.chroot_list

    在新建的文件中输入允许访问FTP服务器的用户名(一行一个)。这里我就写的是:

    EFtp

    保存,退出文件。

    打开最后一个需要更改的文件:

    sudo vim /etc/pam.d/vsftpd

    更改为如下(需要注意的行号已经标出。其他的地方有区别的话尽量不要管,只改我标出来的行):

      1 # Standard behaviour for ftpd(8).
      2 auth    required    pam_listfile.so item=user sense=deny file=/etc/EFtp onerr=succeed
      3 
      4 # Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so.
      5 
      6 # Standard pam includes
      7 @include common-account
      8 @include common-session
      9 @include common-auth
     10 auth    required    pam_shells.so item=user sense=deny file=/etc/EFtp onerr=succeed

     保存,退出。

    最后,重启一遍vsftpd服务

    sudo service vsftpd restart

    至此,FTP服务器已经配置成功,可以使用。

    所有FTP服务器的文件会被存在/home/EFtp文件夹下

    ps: 如果有什么错误发生,请在留言区提问,谢谢!

  • 相关阅读:
    装饰者模式
    Moon.Orm总目录,及常见问题解决方案(有问题直接在这里问,我会立即作答)
    中国IT格局分析
    细说MVC框架的几大困惑
    一天学一个模式_第一天:策略模式
    一天学一个模式_第三天:单例模式
    一天学一个模式_第二天:代理模式
    News: Microsoft Released URL Rewriter 2.0 RTW
    微软一站式示例代码库 20100125 新增代码示例简介
    微软一站式示例代码库 1月小结
  • 原文地址:https://www.cnblogs.com/starchenzyme/p/12723383.html
Copyright © 2011-2022 走看看