Ubuntu下搭建vsftpd

在ubuntu下安装vsftpd,其实是比较简单的。一行命令:

sudo apt-get install vsftpd

这样就安装完成了,下面主要是配置。

命令执行过程中,安装程序会给本地创建一个名为“ftp”的用户组,命令执行完之后会自动启动FTP服务。打开浏览器,访问:“ftp://服务器ip”,新安装的vsftpd默认是匿名不需要密码就能直接访问的,如果能连接到服务器,说明安装成功了。

上面提到,新安装好默认是允许匿名访问的,如果不想让外界用户匿名访问,只允许拥有分配账号的用户访问,那么就需要修改vsftpd文件了。这种应用场景有很多,例如有一个网站该服务器上,平时都是其他人管理该网站,当此人需要修改网站的代码时,我们想让他在本地将代码修改好,然后通过ftp覆盖服务器上的文件时,就可以给此人分配一个ftp账号,让此人独自完成整个过程。
按照如上说法,来配置一下vsftpd。

创建一个用来访问的用户test,将他划分近ftp用户组,并将他的网站存放目录example.com/分配给此用户。

sudo useradd -g ftp -d /var/www/example.com -M test

PS:当然,如果将用户名添加错了就删除掉重新添加^_^

sudo userdel test

回到刚才的步骤,添加完用户后,要给用户设置一个密码。

sudo passwd test

接下来修改配置文件vsftpd.conf:

sudo vim /etc/vsftpd.conf

修改项如下:

#禁止匿名访问
anonymous_enable=NO
#接受本地用户
local_enable=YES
#可以上传
write_enable=YES
local_umask=022

其实操作到这里已经可以完成前面说的需求了,重启一下vsftpd试试。

sudo service vsftpd restart

使用test账号登陆ftp后会发现已经可以正常工作了,但是有一个小问题,test用户虽然可以在/var/www/example.com目录下操作,但是却可以看到其他目录的内容,例如root/, etc/, home/等。为了让test只能看到属于自己的目录,还需修改vsftpd.conf。
修改配置如下(一般情况下都是去掉配置前的’#’注释即可):
#启用在chroot_list_file的用户只能访问根目录
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

完成后,创建chroot_list_file的文件vsftpd.chroot_list

sudo vim /etc/vsftpd.chroot_list

加入要限制的用户名,一行一个用户名。完成后再次重启vsftpd,这样就ok了。

注:有时候按照上面的步骤都操作的完毕了,却发现无法登陆ftp,服务器返回了一串错误信息:”500 OOPS: vsftpd: refusing to run with writable root inside chroot()”,翻译一下就知道了,服务器拒绝了在可写的根目录下运行。一般是由于根目录权限是777引起的,解决方法是将ftp用户在根目录的写权限取消,新建一个目录赋予777权限就ok了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注