本文遵守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/