引言:
本来是很简单的事,
我却搞的有点复杂,
但这真不是我的错.
当时情况是酱紫的:
1.第一天上午
=================================
我有一个58G的硬盘,
其中分了一个30G的FAT32分区,
想整个用来做一个ftp server.
为啥用FAT而不是EXT2,
是考虑到以后即使linux崩了,
也可以拿到win**的机子上获得fat分区的数据.
本来预想的很顺利,
装个wu-fpt的server,再配置一下
就搞定,可是问题来了......
首先:
mount 上来的dos分区,
只有root才有读写权限,
其他用户只能读不能写,
那混个pi啊,incoming目录都不能搞,
还算个啥ftp server???
2. 第一天下午
=================================
由于没搞过wu-ftp server,
所以想先避开这个问题,
在ext2的分区上搞一个server出来看看.
可是还是不成功, faint.!
无论我怎么照精华区里的说明,
修改ftpaccess文件,都不起作用.
甚至有一次连主目录都看不到.
搞得我极其郁闷.....不爽!
后来经过我反复实验,
发现原来是当时setup的选项中,心太狠,
多选了gssftp,tftp这两个现在也不知道是什么东东,
使得xinetd启动的好像是别的ftpd,
所以ftpaccess文件的配置没有起作用.
这里奉劝各位搞ftp的小朋友,
千万别学......
3. 第二天上午
=================================
前一天晚上,碰到一个也玩linux的同学,
问了昨天那个mount fat分区的问题,
他提了一下可能mount的时候需要搞搞umask的设置,
我查了google,很快搞定,原来缺省的umask=022(好像)
只要mount -t vfat -o umask=000 /dev/hda5 /ftp
如此弄一下,mount上来的/ftp主目录就是drwxrwxrwx的了
本来这个东东应该在精华区里找得到的,
可我搜了半天,
才发现大家都学jcore就是不说,闷声大发财...呵呵
接下来还算顺利,
试了几次就发现,匿名登陆的用的是ftp帐户,
只要在/etc/passwd文件里修改ftp的主目录/var/ftp
改成我现在mount过来的/ftp就可以换anonymous上来看到的主目录.
然后我就想试试上传个文件,
然后我就改了ftpaccess, upload /ftp /incoming yes
然后我就试啊试的搞了半天,
然后我就发现可以建立一级目录,但就是不可以上传文件,
幸好我比较机灵,乱七八糟地试也给我搞定了
两个字 a, b
a) groupadd ftpchroot
b) usermod -G ftpchroot ftp
好像缺一不可,就是要把ftp这个用户添加到ftpchroot这个组里才行.
然后的废话精华区里都能找的到,就是那个匿名上载的一堆问题,
如何设置incoming属性,什么不能上载多个目录等等,
一句话:
upload /ftp /incoming* yes ftp ftp 0777 dirs
就是incoming后面跟个通配符,保证多级目录都可以上传.
敲了这么多,没有闲俺唐僧吧,
后面要说的才是精华,喝口水待会继续.
4. 第二天下午
=================================
要是事情这么发展下去然后给我搞定,那现在我也没这么兴奋得来敲键盘了.
一切都是为了最后的这个问题 chown !!!!!!
大家试试就知道了,用cuteftp pro上传一个多级目录到一个ext2分区,
一点问题都没有,very simple!
可是当我现在这个ftp分区是fat32的文件系统时,它就会报错
说什么 550: chown : Permission not permitted.
结果就是只建立了一个目录,里面啥都没有.
这个我到google上查了一下,好像95年有个家伙讨论过,
说是fs do not support chown. 大概就是这个意思.
可也没有说怎么解决啊,这个猪头的名字像是叫个Peng啥子,
说话怎么只有前半句,后面关键的一个字没提.
我想了想,好像有两条路可走:
一是把/dev/hda5也就是我的那个ftp分区搞成ext2的格式
要么就是改wu-ftp的源代码,把chown相关的判断出错退出函数注释掉.
想咱这么英名神武,情比金坚,怎么会做 1 这么无稽的动作呢.....
所以马上我就去下载了wu-ftpd-2.6.1-20.src.rpm
rpm -ivh wu-ftpd-2.6.1-20.src.rpm
发现它是把一些文件拷到了/*/*/SOURCE目录下,
这个目录可能不同安装不太一样,
然后就是打patch, 一共有三个patch
patch -p1
patch -p1
patch -p1
一开始我看精华区有人说是要 ./build lnx
结果出来一堆错, 到build ftpd.o就出错了,还有ftpshut.o
害我改源代码,搞了半天才发现自己走错方向了
不是./build ,而是 ./configure
先要 ./configure
再是 make
最后是 make install
然后就可以发现它把新make出来的ftpd拷贝到了/usr/sbin/in.ftpd
这个就是被xinetd调用的ftpd服务程序.
新的问题又出来了,这个自己搞出来的ftpd程序
当用anonymous登陆时,
可以正常操作命令,
就是不能看见自己操作的结果.
比如我的主目录下有 /pub /incoming 可是匿名登陆无法看见
我也可以成功 cd pub ; get something;都可以成功执行
可就是用 ls 啥也看不见,有没有人碰见过这个问题???
昨天一个晚上我都在搞这个东东,
一开始有朋友让我添加/lib /bin目录
然后在/bin目录下copy一个ls命令,
还有/lib下面copy一些函数库,
可还是不顶用,说明问题不是出在这ls命令和它要的库上.
因为正常安装wu-fptd后,即使没有这些库也可以看的到.
最后还是一个大牛帮我搞定,说是./configure --help
里面可以加个参数,其实就是./configure --enable-ls
靠,真tmd变态,缺省难道是disable ls,???
怪不得它执行/bin/ls啥也没有.
大牛就是大牛,
看似淡淡一招,
隐藏无限杀机,
实在是让我pfpf....啊
5. 第三天上午
=================================
接下来的活就是顺水行舟,日进千里了
grep -n -s -r "chown" *
发现在整个sourse中,只有ftpd.c里面有关于chown的代码,
而且很少,只有六个地方出现,
实在是太easy了,
赶紧把那些chown和fchown函数调用的代码注释掉,
然后重新
./configure --enable-ls
make
make install
换到另外一个机子上用 cuteftp pro,
上传了N多的目录文件到incoming底下,
一切ok,没有报chown的错误,
而且多级目录都可以一次上传.
呵呵,
终于从这次经历里体会到什么叫开放源码的好处了,
一句话,
就是"不爽啊,不爽你自己搞啊"......嘿嘿
敲了这么多,
目的就是想让以后想用FAT32分区做wu-ftp server主目录的dd,
可以少花一些时间,
少走一点弯路,
版主一定要M上啊......