用vsftpd搭了一个FTP

相比起Windows平台下强大的Serv-U,这vsftpd还真是难弄,费了好长时间呢,不过,学了好多知识感觉,真不错。记一下遇到的难题:

已有环境是在VMware中的linux通过NAT方式联网,ip为192.168.37.10。目的是搭建一个FTP服务器,监听端口改21为2121。设定A、B两个用户,A用户仅有只读权限,B用户有写权限,并且禁止匿名访问。

1.编译与安装。相对于RPM安装方式,现场编译安装的机动性更强一些,可是因此也会遇到一些问题。比如,编译之前的builddefs.h这个头文件,如果有特殊需求就要进行修改。这里不考虑SSL安全链接,并且需要用到PAM来配置虚拟用户,所以对保持默认不进行修改。然后直接make。在make install之前必须手动做的一步是需要建立ftp目录和ftp用户匿名的ftp用户,否则make install会报告不存在目录而失败。

2.整个vsftpd的配置精髓都存在于一个文件之中:vsftpd.conf。我们既然要用PAM来进行虚拟用户管理,那么就要手动生成一个虚拟用户的数据库,然后创建一个对应的PAM文件和本地的用户virtual。这样,所有的其他用户都以virtual用户来代替了。修改vsftpd.conf使之不能匿名,然后添加这两行

guest_enable=YES
guest_username=virtual

这样就使得其他用户都映射到virtual用户。之后通过设定user_config_dir参数来实现对不同用户的不通权限设置。

3.为了安全性考虑,通过修改listen_port到2121,将监听端口改到2121。还有,在实现PASV方式传输的时候,vsftpd可是实现对高端口的区间设置。

pasv_min_port=2000
pasv_max_port=2999

这样pasv模式下高端口就只局限于2000和2999这1000个端口,这种设置的好处是方便通过iptables来制定防火墙规则。下次有空准备看下iptables。

4.开防火墙,实现访问。

文章记的比较简单,可是这段过程并不简单,自己反复尝试了n遍,连续开启vsftpd又pkill了n遍,才最终跑出上面的需求来。除了熟悉了不少操作之外,还有一点就是,有时遇到麻烦的问题,google出的结果不一定非常适合自己,相反,软件的文档(比如INSTALL文件和EXAMPLE中的几个README)还是相当不错的参考,有疑问时非常值得去读。

另外贴一下相关的几篇好文:

http://www.linuxsir.org/main/?q=node/152 《vsFTPd 服务器初学者指南》
http://bbs.chinaunix.net/viewthread.php?tid=574966 《主动FTP与被动FTP-权威解释》

Leave a Reply

1 Comment on "用vsftpd搭了一个FTP"

avatar
newest oldest
trackback

[…]        而在WordPress中,如果想要开启Permalink功能,比如说把地址https://lostleon.com/blog/?p=123转向到https://lostleon.com/blog/archives/123的话,就必须要求虚拟主机支持.htaccess自定义功能。具体的实现代码可以让WP自动修改这个文件(要求文件访问权限至少设置到644),当然也可以自己修改这个文件。 […]