Ubuntu15.04中FTP-vsftp配置

第一步、用apt-get工具安装vsftpd :

 sudo apt-get install vsftpd

第二步、配置FTP

配置是在/etc/vsftpd.config  。我们通过下边命令,用vi打开配置文件(ps:当前操作的都是系统文件,命令前要加sudo才可以修改)。

 sudo vi /etc/vsftpd.conf

或者使用gedit打开:

 sudo gedit /etc/vsftpd.conf

查找到下面的行,并改成下面这种形式:

local_enable=yes //允许本地用户登录

write_enable=yes //允许上传文件

anonymous_enable=YES//允许匿名访问

保存并退出。

第三步、重启FTP服务,使修改后的配置文件有效

重启服务的命令:

sudo /etc/init.d/vsftpd restart

报错:sudo:/etc/init.d/vsftpd: command not found.

原因:Ubuntu14.04以上版本使用命令 sudo restart vsftpd 代替上述命令。

结果还是报错:Start: Unable To Connect To Upstart: Failed To Connect To Socket /Com/Ubuntu/Upstart: Connection Refused

这跟upstart有关系。找了不少博客帖子,找到了解决方法:

命令如下:

 sudo dpkg-divert --local --rename --add /sbin/initctl
 sudo ln -s /bin/true /sbin/initctl

然后,重启ftp服务:

 sudo restart vsftpd

成功。

关于命令sudo:/etc/init.d/vsftpd: command not found.为何无法使用及 sudo restart vsftpd命令报错原因参考博客http://blog.csdn.net/quqi99 ,我就不再一一叙述。

第四步、测试ftp服务器

新建"/home/ftp"目录作为用户主目录

打开"终端窗口",输入"sudo mkdir /home/ftp"-->回车-->输入"sudo ls /home"-->回车-->有一个ftp目录,目录新建成功。

添加用户ftpuser,打开"终端窗口",输入"sudo useradd -d /home/ftp -s /bin/bash ftpuser"

输入"sudo passwd ftpuser"设置ftpuser用户的密码。

输入命令:ftp 127.0.0.1 结果报错如图:


尝试了很多解决方法,最终才找到原因(可能你跟我的出错原因不同),解决办法:

启动服务:

sudo service vsftpd start         

sudo vsftpd & //查看是否在跑进程

报错:


提示配置文件里的listen未打开,那么就打开配置文件将listen=NO改为

listen=YES

继续 sudo vsftpd &//查看是否在跑进程

报错:


提示说ipv4和ipv6两个都在运行500错误,说实话我不懂怎么让ipv4和ipv6同时跑,反正我也用不着,果断把ipv6关了找原因。

listen_ipv6=NO

继续 sudo vsftpd &//查看是否在跑进程

ok!成功。


那么我就继续来ftp 127.0.0.1下试试:


可以链接了,但是却又出了新错误:

500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
421 Service not available, remote server has closed connection

打开配置文件,那么可能原因出在这里:

#chroot_local_user=YES

chroot_list_enable=YES

# (default follows)

chroot_list_file=/etc/vsftpd.chroot_list


#说明我们要指定一个userlist,里边放的是允许ftp登陆的本地用户。
userlist_deny=NO
userlist_enable=YES

#记录允许本地登陆用户名的文件
userlist_file=/etc/vsftpd.chroot_list

好的,那么我就继续来ftp 127.0.0.1下试试:

root@server:~$ ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.2)
Name (localhost:root): ftpuser
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
ftp > 221 Goodbye.
等等,怎么又出错了! 530 Login incorrect.

再一次找解决办法:

etc下面有个pam.d文件夹
进去打开vsftpd这个文件, 发现里面对之前的用户进行了限制,
将里面对应的限制注释掉,问题解决。

pam_ftp.so.

那好,把它注释掉。重启ftp,ftp localhost 。。。。等等,还是530 Login incorrect. 哦shit!

既然有限制,因为ubuntu启用了PAM,所在用到vsftp时需要用到 /etc/pam.d/vsftpd 这个文件(默认源码安装的不会有这个文件),因此除了匿名用户外本地用户无法登录。那好,咱就来个狠的,把vsftpd卸载,然后直接删除pam.d中对vsftpd的限制文件,然后重装vsftpd

sudo apt-get remove vsftpd
sudo rm /etc/pam .d /vsftpd
sudo apt-get install vsftpd

再次启动服务:

sudo service vsftpd start         

sudo vsftpd &//查看是否在跑进程

结果提示:无法绑定到ipv4的套接字,这应该是上一次的ftp服务没有终止,21端口已经被绑定的缘故,那我就直接重启吧,省事。

重启后,继续测试ftp 127.0.0.1,输入用户名密码 OK! 成功!




你可能感兴趣的:(Ubuntu15.04中FTP-vsftp配置)