Ubuntu下公认最易上手的ftp软件是vsftpd,既然标题都说了是“简易”的,那么必然是用最大众的。。下面是正题
目标需求:搭建一个允许匿名/本地登录的FTP,并且支持上传/下载/修改功能,同时FTP的端口可自主决定,FTP的根目录可自主决定。
PS:部署过程中遇到任何问题可以先看看本文最下方的Note部分,也许你现在遇到的问题正是我曾经遇到而且解决了的^。。^
步骤一:安装vsftpd
sudo apt-get update # 更新源
sudo apt-get install vsftpd # 安装(安装后vsftpd默认立即启动,通过 ps -ef | grep vsftpd 看到已经启动的vsftpd)
这里补充一个 sudo apt-get purge vsftpd 用于彻底卸载vsftpd,以便不小心改乱的时候可以干净地重来
步骤二:准备FTP根目录
mkdir -p /xx/xx/foldername # 创建文件夹,比如 mkdir -p /home/milk/FtpRootFolder
chmod 755 /xx/xx/foldername # 将准备作为FTP根目录的文件夹使用权限改为755,这一步很关键,
# 因为vsftpd出于安全考虑不允许根目录权限完全开放,777会导致不显示
mkdir -p /xx/xx/foldername/games
chmod 777 /xx/xx/foldername/games # 在FTP根目录文件夹下创建一个权限为777的文件夹,以后上传下载(游戏)都在这里进行
步骤三:开放防火墙端口
UFW 控制着一切的内外数据交互,必须过防火墙这一关,以下两法子而选一
(1)sudo ufw disable # 推荐神经大条的使用,把防火墙废了,直截了当
(2)sudo ufw allow 20 以及 sudo ufw allow 21 # 允许ftp的两个经典端口通行
步骤四:编写vsftpd配置文件 vsftpd.conf
PS:vsftpd的配置选项相当多,下面只列出满足上面基本需求的必选项,有兴趣或者有其他特别需求的可以查看本文最下方的Reference列表
配置文件在 /etc/vsftpd.conf 建议在改动前先备份,原版配置文件只给出了一些常用的选项,其余大部分选项需要另外去查找并添加,下面是为了满足上面的要求的必须选项,有少数选项是原始配置文件里没有的,注意核对
listen=YES # 开启独立监听模式
#listen_ipv6=YES # 这个选项不能和listen同时为YES,这里因为不需要所以注释掉不管,具体功用请行google,很多地方都讲到
anonymous_enable=YES #允许匿名访问
local_enable=YES #允许本地访问
write_enable=YES #允许本地访问者有写权限
local_umask=000 #本地访问者权限掩码最小化(相当与对于无权限限制,但是不等于直接开放权限)
anon_umask=000 #匿名用户权限掩码最小化
anon_upload_enable=YES #匿名用户拥有上传权限
anon_mkdir_write_enable=YES # 匿名用户拥有创建文件夹权限
anon_other_write_enable=YES # 匿名用户拥有其他写权限,比如说删除
anon_world_readable_only=YES # 匿名用户拥有完全的查看权限
dirmessage_enable=YES # 动态目录信息
connect_from_port_20=YES # 保证FTP数据交互接口为Port 20 (记得让 ufw 允许端口出入)
ftpd_banner=Welcome to blah FTP service. # 欢迎标语,推荐有礼貌的使用
anon_root=/xx/xx/foldername # 设置匿名用户的FTP根目录(所谓根目录就是等上来第一眼看到的目录。。)
local_root=/xx/xx/foldername # 设置本地用户的FTP根目录 (默认目录貌似在。。。请另行google)
# listen_port=4783 # 设置监听端口(默认是端口21)
# listen_address=127.0.0.1 #设置本地监听IP,不是多网卡一般用不着
步骤五:开启/重启vsftpd服务使配置文件生效
sudo service vsftpd start # 必须使用sudo,开启vsftpd服务(就是开启ftp嘛)
sudo service vsftpd restart # 重启vsftpd服务,相当与先关闭再打开
sudo service vsftpd stop #关闭vsftpd服务(ftp也要下班的)
PS:可以通过 netstat | grep :21 查看指定的FTP端口是否打开,通过 ps -ef | grep vsftpd 查看服务进程是否启动
步骤六:Share your small action movies with chick friends via vsftpd
Note:
1. 为什么报错说什么 not ... binding ipv4/ipv6 socket... 未能绑定ipv6和listen_ipv6=YES有关,至于ipv4嘛,貌似不影响使用
2. 运行 sudo service vsftped stop 结果爆出 stop: not instance: 其实你的vsftpd已经关了,用ps -ef | grep vsftpd 看看
3. sudo vsftpd 同样能启动vsftpd服务
4. 怎么无法上传也无法创建更无法删除?请仔细检查FTP文件夹的权限,给一个神经大条的建议:FTP根目录权限755,其余统统777,同时别忘了检查配置文件关于访问者权限的选项是否设置正确,啊啊啊,还有就是ufw防火墙也看看
Reference:
1. vsftpd 配置选项大全:http://blog.sina.com.cn/s/blog_590262b40101flrp.html 以及 http://os.51cto.com/art/200901/106622.htm
2. 关于查看进程和网络:http://forum.ubuntu.org.cn/viewtopic.php?t=463243
3. 关于设置本地访问用户账户:http://www.while0.com/36.html
4. 关于FTP根目录文件权限设置:http://m.blog.csdn.net/blog/li_yaya/7747052
5. 高级应用详细配置:http://blog.chinaunix.net/uid-526789-id-3773984.html