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/

 

posted @ 2015-04-24 14:14  ShuolBDe  阅读(11131)  评论(0编辑  收藏  举报