- 下载最新版本
wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.1.0pre4.tar.gz
(下载一个相对稳定版本)
wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.7.tar.gz
2.首先阅读源码目录中的INSTALL文件
执行make编译是遇到问题
/lib/libpam.so.0: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [vsftpd] Error 1
参考http://www.chinaunix.net/jh/15/760675.html 描述
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.
修改vi vsf_findlibs.sh内容为 locate_library /lib64/libpam.so.0 && echo "/lib/libpam.so.0";
/lib/libcap.so.1: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [vsftpd] Error 1
同样修改vi vsf_findlibs.sh内容为
# Look for libcap (capabilities)
if locate_library /lib64/libcap.so.1; then
echo "/lib64/libcap.so.1";
else
locate_library /usr/lib64/libcap.so && echo "-lcap";
locate_library /lib64/libcap.so && echo "-lcap";
fi
再次执行make
3.编译结束执行程序的初步配置,便于后续的执行
[root@gateway vsftpd-2.1.0]# ls -l vsftp
vsftpd vsftpd.8 vsftpd.conf
vsftpd needs the (empty) directory /usr/share/empty in the default
configuration. Add this directory in case it does not already exist. e.g.:
[root@localhost root]# mkdir /usr/share/empty/
mkdir: cannot create directory `/usr/share/empty': File exists
# 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
cp vsftpd /usr/local/sbin/
cp vsftpd.conf.5 /usr/local/share/man/man5
cp vsftpd.8 /usr/local/share/man/man8
4.建立虚拟用户
需要使用db_load,需要安装的软件包
cd Server ;ls db4*.x86_64.rpm
# cat ftpuser.txt
aaa
aaapass
bbb
bbbpass
ccc
cccpass
test
601
db_load -T -t hash -f /etc/ftpuser.txt /etc/ftpuser.db
chmod 600 /etc/ftpuser.db
vi /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/ftpuser
account required pam_userdb.so db=/etc/ftpuser
# cat /etc/vsftpd.conf
listen=YES
anonymous_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_local_user=YES
guest_enable=YES
guest_username=ftp
user_config_dir=/etc/vsftpd_user_conf
pam_service_name=vsftpd.vu
local_enable=YES
secure_chroot_dir=/var/run/vsftpd
mkdir /var/run/vsftpd
[root@gateway vsftpd_user_conf]# cat test
local_root=/cdma/test
write_enable=YES
local_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=yes
chmod -R o+wx test