实验环境:CentOS 5.5 32位系统
实验目的:学会利用vsftpd架设FTP服务器
[root@redhat ~]# tar zxvf vsftpd-2.0.6.tar.gz (按说明文件来装)
[root@redhat vsftpd-2.0.6]# cd /var/
[root@redhat var]# ls
cache db games local log mail opt run tmp
cvs empty lib lock lost found nis preserve spool yp
从这一步开始
[root@redhat var]# mkdir ftp
[root@redhat var]# useradd -d /var/ftp -M ftp
useradd: user ftp exists
[root@redhat var]# chmod og-w /var/ftp
到这一步结束,是匿名用户才用的到
# vi builddefs.h
(编辑builddefs.h 文件,文件内容如下:
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H
#undef VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#undef VSF_BUILD_SSL#endif /* VSF_BUILDDEFS_H */
将以上undef的都改为define,支持tcp_wrappers,支持PAM认证方式,支持SSL)
5.#make //直接在vsftpd-2.0.6里用make编译
在make时出错如下:
make: *** [sysdeputil.o] Error 1
解决方法:
这几个包可能不是REDHAT的,这个问题的原因是sysdeputil.c 文件出错,真正解决方法是给其打补丁:
# patch sysdeputil.c attachment.bin
# make
attachment.bin 的位置在:
http://linuxfromscratch.org/pipe ... 9f56/attachment.bin
注明: 当前目录为vsftp**/
attachment.bin一定要放在sysdeputil.c同一个目录,而sysdeputil.c刚好是在vsftp-2.0.6目录,
这个attachment.bin是要放在vsftp-2.0.6目录下的才行,执行完成功显示如下:
[root@redhat vsftpd-2.0.6]# patch sysdeputil.c attachment.bin
patching file sysdeputil.c
patch unexpectedly ends in middle of line
Hunk #1 succeeded at 155 with fuzz 1.
[root@redhat vsftpd-2.0.6]# make
gcc -c sysdeputil.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -o vsftpd main.o utility.o prelogin.o ftpcmdio.o postlogin.o privsock.o tunables.o
ftpdataio.o secbuf.o ls.o postprivparent.o logging.o str.o netstr.o sysstr.o strlist.o
banner.o filestr.o parseconf.o secutil.o ascii.o oneprocess.o twoprocess.o privops.o
standalone.o hash.o tcpwrap.o ipaddrparse.o access.o features.o readwrite.o opts.o ssl.o
sysutil.o sysdeputil.o -Wl,-s `./vsf_findlibs.sh`
[root@redhat vsftpd-2.0.6]# make install
if [ -x /usr/local/sbin ]; then
install -m 755 vsftpd /usr/local/sbin/vsftpd;
else
install -m 755 vsftpd /usr/sbin/vsftpd; fi
if [ -x /usr/local/man ]; then
install -m 644 vsftpd.8 /usr/local/man/man8/vsftpd.8;
install -m 644 vsftpd.conf.5 /usr/local/man/man5/vsftpd.conf.5;
elif [ -x /usr/share/man ]; then
install -m 644 vsftpd.8 /usr/share/man/man8/vsftpd.8;
install -m 644 vsftpd.conf.5 /usr/share/man/man5/vsftpd.conf.5;
else
install -m 644 vsftpd.8 /usr/man/man8/vsftpd.8;
install -m 644 vsftpd.conf.5 /usr/man/man5/vsftpd.conf.5; fi
if [ -x /etc/xinetd.d ]; then
install -m 644 xinetd.d/vsftpd /etc/xinetd.d/vsftpd; fi
[root@redhat etc]# cd /root/vsftpd-2.0.6
[root@redhat vsftpd-2.0.6]# cp vsftp
vsftpd vsftpd.8 vsftpd.conf vsftpd.conf.5 vsftpver