手机版
你好,游客 登录 注册
背景:
阅读新闻

Ubuntu中用vsftpd搭建FTP服务器笔记

[日期:2013-09-26] 来源:Linux社区  作者:dongtingzhizi [字体: ]

网上关于使用linux下使用vsftpd搭建FTP的文章非常的多,大部分内容都差不多。还有诸如“我见过最好的vsftpd配置教程”、“史上最详细的vsftpd配置文件讲解”和“vsftpd入门专题”等名字如此大气的文章,可是,不知大家有没有同样的经历,照着文章做下来却很难一次成功,总是会出各种各样的错误。而且,里面讲的有些配置项是在是无法真正理解,比如:chroot_local_user,chroot_list_enable,chroot_list_file的搭配使用,我说vsftpd你就不能设计的简单一些吗,搞的这么晦涩难懂!

这两天就捣鼓这个FTP服务器了,真是头都大了,不过还好最后算是搭起了一个能用的FTP吧。为了以后再用时不在这上面浪费时间,把一些关键点记录下来吧,希望对大家有一点点参考价值。

首先,网上介绍的比较全面的资料有: 

前者确实介绍的很全面,但是有很多内容都是属于高级主题,初级用户真的很难全部看懂。如果使用要求不搞的话,其实后者就挺合适,更适合入门级菜鸟(想我这样的)参考,我就是参考这篇文章来搭建的。另外,还有一篇: http://www.linuxidc.com/Linux/2013-09/90564.htm 。下面介绍一下我安装配置的步骤:

1、安装vsftpd

这一步就不用将了,直接运行sudo apt-get install vsftpd即可。安装完毕后,默认配置下就可以直接登录fpt://ip了,这里采用的是匿名登录,不需要输入用户名密码。实际上,vsftpd安装完毕后会创建一个ftp的账户,可以通过查看/etc/passwd文件得知,也可以看到ftp账户对应的家目录在/srv/ftp,所以匿名登录后实际上是进入了/srv/ftp中,大家可以在该目录中放入文件测试一下。而且可以测试一下,匿名登录时是否有下载权限、上传权限、删除权限和创建目录权限。

2、准备ftp系统账户

用户ftp是匿名登录时默认的用户,如果我们需要通过用户认证登录ftp的话,可以在配置文件中设置“允许本地用户”模式,即可以通过Ubuntu系统中的账户登录到ftp。所以,这里重新创建一个新的用户专门用来登录ftp。使用下面的命令创建一个新用户ftpuser,-s指定shell(指定的/sbin/nologin实际上是一个无效的shell,也就使得该用户无法从系统登录), -m用于创建家目录(即/home/ftpuser)

useradd vsftpd -s /sbin/nologin -m ftpuser

3、配置文件

关于配置文件(/etc/vsftpd.conf)这里不详细叙述了,参照上面的文章《vsftpd配置教程》进行配置,配置完成后不一定能成功,后面会针对出现的问题来解释配置项。

注意一点,如果开启了日志功能,即:xferlog_enable=YES,则日志文件选项为xferlog_file=/var/log/vsftpd.log,该选项不修改的话,日志文件默认为/var/log/vsftpd.log,《vsftpd配置教程》中强调了一点:确保ftpuser用户对该文件有写入权限,如果对权限不熟悉或者怕麻烦的话,直接给666权限即可,即:chmod 666 /var/log/vsftpd.log。

4、禁止切换到主目录外的其他目录

用ftpuser用户登录到FTP服务器时,默认进入的是/home/ftpuser目录,但是可以通过点击“上一级目录”进入上一级目录、上上一级目录或其他所有目录,这显然是不安全的,需要修改配置禁止该功能。

文章 http://www.linuxidc.com/Linux/2013-09/90560.htm 和 http://www.linuxidc.com/Linux/2013-09/90563.htm 都讲到了解决该问题的办法,而且讲述基本一致。实际上就是配置chroot_local_user、chroot_list_enable和chroot_list_file三个选项,这三个选项相互配合使用,这也是最不好理解最让大家头疼的地方,也是我前面质疑的为何设计的如此晦涩的地方。

第一篇文章说的相对比较清楚,下面总结一下:

首先,chroot_list_enable好理解,就是:是否启用chroot_list_file配置的文件,如果为YES表示chroot_list_file配置的文件是否生效,否则不生效;

第二,chroot_list_file也简单,配置了一个文件路径,默认是/etc/vsftpd.chroot_list,该文件中会填入一些账户名称。但是这些账户的意义不是固定的,是跟配置项chroot_local_user有关的。后一条中说明;

第三,chroot_local_user为YES表示所有用户都*不能*切换到主目录之外其他目录,但是!除了chroot_list_file配置的文件列出的用户。chroot_local_user为NO表示所有用户都*能*切换到主目录之外其他目录,但是!除了chroot_list_file配置的文件列出的用户。也可以理解为,chroot_list_file列出的“例外情况”的用户。

解释了这三个配置项的含义,就好办了,如文章http://blog.csdn.net/fafa211/article/details/8095439?reload所说。要限制所有用户切换到主目录之外的其他目录,只需配置一项:chroot_local_user=YES即可,chroot_list_file必须为空。

5、解决错误“500 OOPS: vsftpd: refusing to run with writable root inside chroot()”

上一步配置完后,在浏览器中登录,如果没有意外的话将出现错误:“500OOPS: vsftpd: refusing to run with writable root inside chroot()”。关于这个错误,我采用将用户家目录的可写属性去掉,在其中创建一个新的目录data,将需要上传的文件放到data中即可,如下:

#sudo chmod a-w /home/ftpuser

#sudo mkdir /home/ftpuser/data

6、打开关闭写权限

这项配置也是非常重要的,写权限即登录的用户可否上传文件、新建目录、删除文件或目录,搭建FTP一定要慎重考虑该权限,如果该FTP服务器仅仅是提供给用户下载用的,就可以关闭写权限,这样就更加安全。

配置该权限很简单,就是配置文件(/etc/vsftpd.conf)中的write_enable配置项,设置为YES打开写权限,设置为NO关闭写权限。

【总结】

(1) 其他的配置项,如:连接超时时间、最大连接数、下载速度限制、欢迎标语等等就不需要介绍了,这些随便查查资料就能明白了。上面介绍的都是关键配置,有了这些配置就能保证大家的FTP服务器跑起来了,具体的详细配置需要自己琢磨了。

(2) 高级主题,如:虚拟用户、多用户共存、多用户不同权限配置等等,这里也不介绍了,其实我也不懂^_^!前面说过了,我也是初级菜鸟啦!而且这些高级主题需要使用了并慢慢熟悉了以后才能理解哦,加油!

 

推荐阅读:

 

Ubuntu实用简单的FTP架设 http://www.linuxidc.com/Linux/2012-02/55346.htm

 

Ubuntu 上架设FTP服务器和Apache服务器 http://www.linuxidc.com/Linux/2011-04/35295.htm

 

Ubuntu 13.04 安装 LAMP\vsftpd\Webmin\phpMyAdmin 服务及设置 http://www.linuxidc.com/Linux/2013-06/86250.htm

 

RHEL6平台下SeLinux和vsftpd的匿名上传的简单案例 http://www.linuxidc.com/Linux/2013-04/82300.htm

 

Linux系统vsftpd源码安装 http://www.linuxidc.com/Linux/2013-03/81475.htm

 

vsftpd的安全配置案例分析 http://www.linuxidc.com/Linux/2012-12/76501.htm

 

更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2

linux
相关资讯       vsftpd  Ubuntu VSFTPD  Ubuntu搭建服务器 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款