zoukankan      html  css  js  c++  java
  • Ubuntu下搭建ftp服务器

    本文遵守CC BY-SA 3.0

    前言
      最近项目需要搭建第三方文件服务器,本来使用的是apache服务器将需要的子项目的目录发布出来,然后通过软连接将所有子项目关联起来,但是如果不同时将所有子项目跑起来的话,未开启的项目目录就会丢失,着实蛋疼,所以才有搭建ftp服务器的想法,下面开始正文。

    一、安装

      如果是ubuntu环境下的话,安装是很简单的,只需输入如下命令:

      安装

    sudo apt-get install vsftpd

      安装完成后可以察看下服务状态(其实安装完成了就会提示已经在跑了)

    sudo service vsftpd status

    二、配置文件

      其实我用到的文件只有三个

      1. /etc/vsftp.conf(主配置文件)

      2. /etc/vsftp.chroot_list(可访问用户列表,这个在我这里貌似不是已有的,我是手建的,这个察看上面那个配置文件就会发现,配置文件里面有关联)

      3. /etc/pam.d/vsftpd(里面有个选项需要修改,这个需要简单配置一下,否则会出现“530 login incorrect”的错误)

      下面开始逐个文件说明:

      1./etc/vsftpd.config 里面的注释比较多,还很详细,这里就不一一列举了,只写上我修改的

        anonymous_enable=NO(是否允许匿名登陆)

        local_enable=YES(是否允许本地登陆)

        write_enable=YES(设置FTP可写)

        //chroot (Change Root)

        chroot_local_user=YES(设置成YES后,加入vsftpd.chroot_list中的用户可以通过ftp访问)

        chroot_list_enable=YES(启用下面这个vsftpd.chroot_list)

        chroot_list_file=/etc/vsftpd.chroot_list(指定一下list,这是文件默认的,但是并不存在,需要手动弄一下)

        pam_service_name=vsftpd(这里留个标记,在一定情况下会出现530的问题,留到后面错误去讲)

      2./etc/vsftpd.chroot_list

        这个文件比较简单,之需要将允许ftp登陆的用户名放进来就行,一个一行,我之前一直比较愤怒,网上在这里就这么说一下,都没个例子,这叫劳资怎么填,其实很简单,比如像这样:

    user
    user2
    user22

        =========================我风骚地插了进来=============================

        由于说到了添加用户,其实是这样的,你可以使用本地已经存在的用户,但是作为一个淡定的ftp服务器,是不应该把本机的东西都共享给外面的,最好的方法就是再创建个用户专门给ftp使用

        所以这里来搞一下用户的问题

        添加(-d是指定的用户主目录,-m接要创建的用户名),

    sudo useradd -d /home/user -m username

        创建完了用户还需要个用户密码,

    sudo passwd username

        Whatever,要是想删了,

    sudo userdel username

        这里还要留个标记,关于创建用户之后,一些情况下可能会出现个500的错误,留到后面错误去讲

        好了,现在察看下创建结果,发着光的那条

    user@userServer:/home$ ll
    总用量 xx
    drwxr-xr-x  7 root   root    4096  4月 24 11:27 ./
    drwxr-xr-x 25 root   root    4096  4月  9 09:47 ../
    drwxr-xr-x  2 heihei    heihei     4096  4月 24 11:27 heihei/
    drwxr-xr-x  6 haha    haha     4096  2月 15 18:08 haha/
    drwxr-xr-x 75 username    username    4096  4月 24 13:18 username/

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

      3./etc/pam.d/vsftpd

        这个文件其实也没多少东西,就改一处即可:

    auth    required        pam_listfile.so item=user sense=deny file=/etc/ftpuser onerr=succeed

        默认是ftpuser,这里改成放入vsftpd.chroot_list里面的用户就行了,不要在意那个deny,他不应该是allow,他不是不让你使用,淡定..

    三、登陆

      其实有好多方法登陆的

      1.命令行

        ip地址用你的..

        那个username应该是当前的用户,不要管他,除非和ftp用户是一个;

        user就是你的ftp用户,先前创建的那个,要是和当前用户是一个的话直接回车过去;

        passwd输入;

        搞定

    user@userServer:/home$ ftp 192.168.1.123
    Connected to 192.168.1.123.
    220 (vsFTPd 2.3.5)
    Name (192.168.1.123:username): user
    331 Please specify the password.
    Password:
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> 

       2.浏览器

        在地址栏输入(your ip address):  ftp://192.168.1.123

      3.在windows的目录地址上面敲入上面的地址

    四、错误

      终于到了这里,事情从不会那么容易就让你直接完成,就那么几个问题,可能不经意见就中了套..

      1.530 login Incorrect

        话说这个问题貌似几个情况都会出现:

        (1)pam_service_name=vsftpd 就是前面vsftpd.conf文件里面那厮,我在第一台PC上面搭建的时候文件里面没有,据说是因为这句话,由于第一台PC上面问题较多,我也不确定是不是这个问题

        (2)还记得/etc/pam.d/vsftpd那个文件不,说了不要动deny,是不是手贱

        (3)还没发现,这是为了可扩展性,:-)

      2.500 OOPS: cannot change directory:/home/**

        (1)网上说法比较统一,一般是说设置一堆参数就好了,可以查一下

        (2)我说说我的错误原因哈,MD其实就是ftp用户创建的时候我把文件夹权限限定了,如果你的用户没有各种权限也会出这种问题,这个时候你只需要:

    sudo chmod 755 userDir/
  • 相关阅读:
    flutter-布局(水平和垂直)
    flutter-GridView(网格列表)
    flutter-ListView(列表组件)
    flutter-图片组件(Image)的使用
    flutter-container-容器
    flutter-hello flutter 并且修改字体
    nginx
    初步学习next.js-7-打包
    初步学习next.js-6-使用antd
    初步学习next.js-5-编写css样式和lazyloading
  • 原文地址:https://www.cnblogs.com/ShuolBDe/p/4453329.html
Copyright © 2011-2022 走看看