从开始用Ubuntu到现在有接近4个月的时间了,一直都在熟悉这个OS。从开始装ftp到现在,上传文件一直都有问题,也一直没有解决。今天实在是不想把硬盘拔了,用盒子拷贝了,索性把这个问题搞定。
一直都觉得是配置的原因,今天终于解决了。vsftp的配置文件在/etc/vsftpd.conf 目录下。
首先说说我上传出现的问题。
1.把一个log文件上传到/home/ftp下
$ wput log ftp://172.16.55.47
Connecting to 172.16.55.47:21... connected!
Logging in as anonymous ... Logged in!
Send Failed (Could not create file.) Skipping this file
FINISHED --10:52:18--
在网上找了下资料,说是没有写权限,于是我就把ftp目录改成写权限了,即$ sudo chmod 777 /home/ftp, 然后继续上传
$ wput log ftp://172.16.55.47
Connecting to 172.16.55.47:21... connected!
Logging in as anonymous ... Error: Login-Sequence failed (OOPS: vsftpd: refusing to run with writable anonymous root)
Skipping all files from this account...
FINISHED --10:34:03--
Transmission of 1 file failed.
这次报的错就是拒绝拥有写权限的匿名登录,具体原因为:对于vsftpd的根目录 /home/ftp 其权限为:drwxrwxrwx 即完全没有限制(或许是不小心执行了 chmod 777 /home/ftp);但vsftpd出于安全考虑对 /home/ftp是不允许没有限制的,这导致了上述错误的发生。也就是说我这里的权限给的太宽了。
那现在就是不给权限,它说没写权限,给了写权限又说权限给的太多。那就说明,仅仅只改这些权限是没有用的吧。所以看看是不是配置有点问题。
2.主要修改配置文件即可
$ sudo vi /etc/vsftpd.conf
添加后的选项 有:
listen=YES
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=YES
#chown_username=whoever
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
其中红色部分是需要打开的。
接下来:
$ cd /home/ftp
$ sudo mkdir opendir
$ sudo chmod 777 opendir/
然后再把刚才的log文件上传就可以了,如:
# wput log ftp://172.16.55.47/opendir/
一定要注意的是,这里的opendir是一个目录,所以后面的/一定要记得带上,不然就会出错!