简简单单 vsftpd

需要寝室某兄弟共享文件,知道可以用 samba,并且也一直用的 samba,可这回寝室那哥们网上邻居不会设,我也不会,搞来搞去 windows 的网络设置向导只能识别无线网卡,可明明上网用的是有线。用 U 盘可以,不过以后每次都 U 盘也太麻烦了。那就用 ftp。其实以前搭过 ftp 服务器,用的是 proftpd,很复杂,搞不来,也许是它太 pro 或我太不 pro 了。反正我的需求很简单,就是搭建一个匿名 ftp,某些目录可以上传,某些目录只能下载。其实权限问题用不着归 ftp 程序管的,我把目录设为只读,就算 ftp 程序认为它可写也不行。

这次不想再用复杂的 proftpd 了,于是试了一下 vsftpd,正好符合我的要求。用 apt 安装了 vsftpd 之后,一个匿名 ftp 就搭建好了,根本无须另外的配置。当然我是要 ftp 的某些目录可写好让那哥们把文件传给我,所以还得配置一下。配置也相当简单,在 /etc/vsftpd.conf 中,启用以下选项:

1
2
3
4
5
6
7
8
9
10
# 全局允许可写,只有这样下面的上传选项才会起作用。
write_enable=YES
# 允许匿名用户上传文件。
anon_upload_enable=YES
# 允许其他写操作,例如删除,重命名等。由于我要直接把上传的文件剪切走,所以才启用这个选项。
anon_other_write_enable=YES
# 设置匿名用户上传的文件权限为 644,即 -rw-r--r--。默认的权限是 -rw-------。
anon_umask=022
# 如果想让匿名用户能够创建目录,就启用该选项。
#anon_mkdir_write_enable=YES

好了,搞完后保存,重启 vsftpd。

1
$ sudo invoke-rc.d vsftpd restart

完后你会发现,匿名用户还是无法上传文件,这是因为匿名用户对 ftp 主目录没有写权限。ftp 主目录在 /home/ftp。直接将它设为可写不安全,最好在下面建一个 upload 目录专门用来上传文件,并将目录权限设为可写。

1
2
$ sudo mkdir /home/ftp/upload
$ sudo chmod 777 /home/ftp/upload

再重启 vsftpd 就 OK 了。