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
第四步、测试ftp服务器这跟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 ,我就不再一一叙述。
新建"/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.
等等,怎么又出错了! 530 Login incorrect.ftp
> 221 Goodbye.
再一次找解决办法:
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! 成功!