Linux 源代码 安装 vsftpd 3.0.2 by csc 2014-08-21
wget http://url.cn/UKvdjS 下载软件包
如果系统已经安装vsftpd,删除它
yum remove vsftpd
------------------------------------------------
#安装前准备,如果系统有该目录,则不需要建立。
mkdir /usr/share/empty
useradd -s /sbin/nologin -d /var/ftp ftp
useradd nobody
chown root:root /var/ftp
chmod og-w /var/ftp
-------------------------------------------------
tar zxvf vsftpd 3.0.2.tar.gz
#解压
cd vsftpd 3.0.2
#进入目录
Cat 下builddefs.h 文件,看它默认都启用了什么功能,更具体的可以more INSTALL(查看帮助文件)
undef 为不启用
Define为启用
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H
#define VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#undef VSF_BUILD_SSL
#endif /* VSF_BUILDDEFS_H */
-----------------------------------------
#编码解决步骤
Vi opts.c
if (str_equal_text(&p_sess->ftp_arg_str,"UTF8 ON")) 更改成
if (str_equal_text(&p_sess->ftp_arg_str,"DISABLE UTF8 ON"))
注意:安装之前,如果系统为64位,需要更改vsf_findlibs.sh文件库中lib 路径,命令如下:
sed -i ‘s/lib\//lib64\//g‘ vsf_findlibs.sh
----------------------------------------------
编译安装 :
Make && make install
进程中没有提示什么错误信息,表示已经成功安装
复制些文件:
cp vsftpd.conf /etc #配置主文件
cp RedHat/vsftpd.pam /etc/pam.d/ftp #PAM 认证文件
############################
修改 vsftpd.conf
#不让匿名用户使用
anonymous_enable=No
#本地用户可用
local_enable=YES
#可用写操作
write_enable=YES
#不需要显示某目录下文件信息
#dirmessage_enable=YES
#加点banner提示
ftpd_banner=Welcome to FTP service. #连接的时候 不显示版本号了
#FTP服务器最大承载用户
max_clients=100
我的初始配置文件:
cat /etc/vsftpd.conf |grep -v ^#
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
#号之内的可以不用添加
############################################################
#chroot_local_user=YES # 一般都需要注释掉。备注:打开后,全部用户被限制家目录,相反,下面配置的/etc/vsftpd.chroot_list,反而不限制,
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list #限制用户在家目录
allow_writeable_chroot=YES #新版本3.0.2 限制家目录,需要加上才能生效,
#否则报错 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
###########################################################
listen=YES
#listen_port=8080 #更改监听端口9000 默认是21
userlist_enable=YES
vi /etc/vsftpd.user_list 记录在userlist_file选项指定文件中的用户将无法login
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
系统自带的参数,可以不需要,有的话请注释掉:
#pam_service_name=vsftpd
#userlist_enable=YES
#tcp_wrappers=YES
#
#####################
64位的系统注意修改如下:
sed -i ‘s/lib\//lib64\//g‘ /etc/pam.d/ftp
[[email protected] RedHat]# vi /etc/pam.d/ftp
#%PAM-1.0
auth required /lib64/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
auth required /lib64/security/pam_unix.so shadow nullok
auth required /lib64/security/pam_shells.so
account required /lib64/security/pam_unix.so
session required /lib64/security/pam_unix.so
~
--------------------------------
启动vsftpd
/usr/local/sbin/vsftpd &
查看下
netstat -tnl | grep 21
重启命令:
#killall vsftpd
#/usr/local/sbin/vsftpd &