vsftpd搭建日志
1. 下载
从ftp://vsftpd.beasts.org/users/cevans/下载。
2. 编译和安装
进入vsftpd-2.3.2,编译
[forrest@host vsftpd-2.3.2]$ make
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 sslslave.o ptracesandbox.o ftppolicy.o sysutil.o sysdeputil.o -Wl,-s `./vsf_findlibs.sh`
/lib/libpam.so.0: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [vsftpd] Error 1
google了一下,是因为上面的vsf_findlibs.sh脚本是按照32位系统来寻找lib包的,所以路径可能错误。需要手工修正。
已解决。
I also hit this - the problem is that the lib-finding script vsf_findlibs.sh returns e.g. /lib/libpam.so.0; however if you're on a x86_64 machine, for example, you need /lib64/libpam.so.0. Fixing this up sorted things out for me.
奇怪的是64位系统上居然有两个lib,而且都有内容:
[forrest@host ~]$ ll / | grep lib
drwxr-xr-x 11 root root 4096 Sep 2 04:06 lib
drwxr-xr-x 7 root root 4096 Sep 2 04:07 lib64
[forrest@host ~]$ ll /lib64/ | grep libpam
lrwxrwxrwx 1 root root 17 Mar 8 2010 libpamc.so.0 -> libpamc.so.0.81.0
-rwxr-xr-x 1 root root 11264 Jun 18 2009 libpamc.so.0.81.0
lrwxrwxrwx 1 root root 21 Mar 8 2010 libpam_misc.so.0 -> libpam_misc.so.0.81.2
-rwxr-xr-x 1 root root 13456 Jun 18 2009 libpam_misc.so.0.81.2
lrwxrwxrwx 1 root root 16 Mar 8 2010 libpam.so.0 -> libpam.so.0.81.5
-rwxr-xr-x 1 root root 46800 Jun 18 2009 libpam.so.0.81.5
[forrest@host ~]$ ll /lib/ | grep libpam
lrwxrwxrwx 1 root root 17 Mar 8 2010 libpamc.so.0 -> libpamc.so.0.81.0
-rwxr-xr-x 1 root root 9868 Jun 18 2009 libpamc.so.0.81.0
lrwxrwxrwx 1 root root 21 Mar 8 2010 libpam_misc.so.0 -> libpam_misc.so.0.81.2
-rwxr-xr-x 1 root root 8588 Jun 18 2009 libpam_misc.so.0.81.2
lrwxrwxrwx 1 root root 16 Mar 8 2010 libpam.so.0 -> libpam.so.0.81.5
-rwxr-xr-x 1 root root 43020 Jun 18 2009 libpam.so.0.81.5
[forrest@host usr]$ cd /usr
[forrest@host usr]$ ll | grep lib
drwxr-xr-x 83 root root 69632 Sep 2 04:07 lib
drwxr-xr-x 92 root root 69632 Sep 2 04:08 lib64
drwxr-xr-x 11 root root 4096 Sep 7 20:21 libexec
[forrest@host usr]$
Anyway,修改vi vsf_findlibs.sh,将这一行:locate_library /lib/libpam.so.0 && echo "/lib/libpam.so.0";修改为
locate_library /lib64/libpam.so.0 && echo "/lib64/libpam.so.0";
直接跑这个脚本验证一下是不是找对了:
[forrest@host vsftpd-2.3.2]$ ./vsf_findlibs.sh
/lib64/libpam.so.0
-lpam
-ldl
-lnsl
-lresolv
-lutil
/lib/libcap.so.1
再次编译:
[forrest@host vsftpd-2.3.2]$ make
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