ubuntu配置vsftpd记录

基本上,我是按照这篇文章来做的,当然中间还参考了一些别的教程,最终虽然跑起来了,但不完全合我的意,这玩意在windows上玩serverU和filezilla简单爆了,到linux上肿么就这么复杂~~~

基本步骤:安装》配置》添加(系统用户)》添加组》设置目录权限

 

如果按照教程跑起来了,你的/etc目录下最终会有这几个配置文件:

1,vsftpd.conf 主配置文件

2,vsftpd.allowed_users 把userlist_enable开关打开后,引入的配置文件。配置允许该文件里的用户登录,【注:该教程用的是vsftpd.userlist,但配置文件中的是vsftpd.allowed_users,我就保持了配置文件的名字】;

3,sftd.chroot_list 把chroot_list_enable开关打开后,引入的配置文件。配置允许该文件里的用户登录成功后能跳到别的目录去(所以不能跳到别的目录,就叫jailed了);

 

要想跑起来注意几点:

1,vsftpd安装后默认的文件夹是/srv/ftp;

2,你在本地 ftp localhost 然后用用户名密码登录成功,却发现远程登录不成功,那么(防火墙的事你自己搞定)在ftp客户端上自己设置一下传输模式为“主动模式”(pasv);

3,/srv/ftp的目录默认是没有上传文件的权限的,暂时不要去chmod它,会出问题,只有建了一个有完全权限的子文件夹(文后已经解决了这个问题);

4,chroot的问题,即允许登录用户跳到根目录外的目录,下面单独来讲这个问题。

 

如果你的(ftp)用户的根目录(比如你没有指向默认目录)有写权限,那么该用户登录的时候会得到一个“500 OOPS: vsftpd: refusing to run with writable root inside chroot ()”错误。

1,这时你就需要把这个用户添加到上述提到的第二个配置文件vsftpd.chroot_list里面去,再测试登录,应该会成功,这不是chroot的目的,只是客观上解决了上面这个500错误,而一旦你这么做了,该用户就能访问这台电脑的所有目录了,这不是你要的吧。。。(图1)

image

(图1)/srv/ftp/upload是我设置的该用户的根目录,但是chroot后显然其它目录也对用户可见了

2,如果你把该用户的根目录指到ftp根目录去(因为对ftp根目录而言,该用户属于other组,不具有写权限),没问题。可这也不是你要的吧,我们就来测试下:

a. 新建一个/home/admin的文件夹(mkdir),

b. 把它定义成admin这个ftp用户的根目录(usermod),

c. 并且设为admin为其拥有者(chown),

d. 把admin用户从chroot_list文件中移除,

e. 然后登录ftp,500错误如愿出现 ,(图2)

f. 现在把home/admin目录的写权限去掉(555),成功了。(图3)

 

image

(图2)

image

(图3)

这个问题网上有解决方法,我尝试失败了。。。

 

所以我才选了上面提到的别扭的解决方案是:

指向不可写的根目录,然后不允许chroot,在该目录里建一个可写的目录用来给用户上传~~~纠结

 

ps========

才写完这篇博客,我就把/srv/ftp这个根目录给chown给了一个用户,结果发现根目录居然“既有写权限,又不需要chroot,还能正常登录”了,也就是说可以往根目录上传文件了,奇怪,遂继续上面的测试以期能复现我刚才的结果:

image

原因我就不深究了,两次测试都成功了。

你可能感兴趣的:(ubuntu)