Ubuntu构建ftp服务器(一)

Date: 8.25-8.26
Target: 用vsftpd在Ubuntu Kylin 14 LTS(没记错的话)构建ftp服务器

1.安装vsftpd

sudo su
apt-get install vsftpd

测试-下,输入vsftpd -version,显示vsftpd: version 3.0.2。
在firefox上测试一下,输入ftp://localhostftp://192.168.0.104(内网ip),需要输入用户名和密码才能登录。成功后显示的是$HOME,也就是/home/wang(我现在的用户名)。能查看文件并下载,切换目录,但是不能修改。
这时,vsftpd是running的,然后我试着用手机登录,发现不行,可能是没用户吧。然后又试着把vsftpd stop,用firefox再登录,发现这次不需要用户名和密码就能登上了,新建标签页也是。不过手机仍没登上。好吧,试着用chromium上,却登不上了。那firefox登上的是啥?。。。一段时间后,现在firefox也登不上了。
再次start,这会登上。再次stop,chromium是立即断了连接,firefox是一段时间才登不上的。重新打开firefox也是登不上,需要start,加上用户名和密码才行。
难不成stop不是真正的关?stop时显示vsftpd stop/waiting,waiting是why?这让我想起来那背得欲仙欲死的操作系统,是那进程状态阻塞态或挂起态?
好吧,暂且不管。总之已经安装了vsftpd。service vsftpd start/stop是启动和关闭。
基本上ftp用默认的就已经搭建完了。

2.修改vsftpd.conf

这是实现需要的功能的地方,比如限制用户,限制下载什么的。网上有课程说要修改/etc/init.d/vsftpd的,然并卵。我在这里找不到这文件,可能是因为用的是Ubuntu 14,启动方式已经改为Upstart,启动的配置脚本是在/etc/init里面的。man一下,发现修改的是/etc/vsftpd.conf才对。至于前者,反正我电脑没有,有的也只是/etc/init/vsftp.conf这个看起来像是启动脚本的东西。

cp /etc/vsftpd.conf /etc/vsftpd.conf.old

先保存原文件,恩,都是这样说的。
不要自启动,那就要修改其启动脚本
vim /etc/init/vsftpd.conf
start on runlevel [2345] or net-device-up IFACE!=lo改为

start on runlevel [345]

这是改启动级别实现的。

vim /etc/vsftpd.conf

改变ftp根目录,GG跳转到文件尾,插入

local_root=/home/wang/ftp

,其中ftp是刚新建的文件夹,这是登录的话,一开始就不是/home/wang,而是local_root(刚设为/home/wang/ftp),说这是为了让用户不能随意操作其他目录。可是却能通过返回上一层到其他目录。后来发现firefox是这样,在chromium却是没这功能。
我是个执着的人,所以钻牛角去了。又搜索了,在Wiki(?)上找到。在Shell上登录

ftp localhost

完了后再输入

pwd

不出意外发现是/home/wang/ftp,好,跟着干。

chroot_local_user=YES

试试×-×。再次登录,呵呵,显示500 OOPS: vsftpd: refusing to run with writable root inside chroot()。刚看过,忘了是什么鬼。幸亏度娘,比较和胃口的说法是用户的根目录可写,我们使用了chroot限制,在最近的更新里是不被允许的。要修复这个错误,可以
chmod a-w /home/wang/ftp去除用户根目录的写权限。又或者简单点(我喜欢)。添加

allow_wirteable_chroot=YES

就ok了,登录,啪啪,行了.这样做后,用户也不能移动到其他目录了。
用户登录时,我希望是带着口令的,即不能让匿名用户登录。那就是默认的效果,不用修改。不过,可以尝试一下匿名的登录

anonymous_enable=NO

发现/和先前带口令登录时不一样,看看就其实默认的是/srv/ftp。修改的话,可以先创建Tinuy文件夹

mkdir /src/ftp/Tinuy
mkdir /home/wang/Tinuy

然后映射虚拟路径

sudo mount --bind /srv/ftp/Tinuy /home/wang/Tinuy

再登录时,的确是变了。改变其中一个文件夹,两个同时变。不过,怎么卸载我还没搞懂<-_<-,慎用慎用,哦米托佛。
关于这里,其实还可以创建虚拟用户,不过这又是另话了。
好了,碰壁完了,改回

anoymous_enable=YES

3.局域网登录

本地登录行,用手机却登不上,局域网内的啊?!难道是防火墙?试试

ufw enable

允许ftp端口(21)

ufw default allow
ufw allow ftp
ufw status

开了以后就只能使用ftp登录了,理论上是,但手机登录的时候确实没反应。ping一下,能通。后来开了apache2,也是登不上http。关了ufw

ufw disable

http能登上了。说明防火墙是有用的。关了后也是上不了ftp,而开机是ufw默认是关了。所以走歪了。难道是端口问题?在vsftpd.conf里添加了

listen_port=2121

试一下,还是只能本地行。

netstat -nl

显示2121在监听,不过手机还是不行不行的。Please Try Again!那就是ip了吧,但却能上http?!逗我呢。苦恼中。。。。

总结一下,现在问题是局域网内不能互通ftp。同时,也有需要改进的地方,设置虚拟用户和虚拟主机。

恩,to be continue…….

mark一下看过的教程这个比较靠谱。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值