您的位置:首页 > 运维架构 > Linux

CentOS操作系统下Ftp服务器的搭建

2013-12-17 01:05 357 查看
一、实验目的该实验是基于yum源代码安装ftp服务器,并编写服务器控制脚本,主要是练习yum源代码安装软件包的能力,及练习shell脚本编写能力。
二、实验环境Vmware 10 虚拟机写安装的Linux操作系统centos6.4 64位的操作系统。三、实验步骤1、实验准备Yum源代码安装软件包需要编译环境的,针对本次实验,在centos操作系统上需要我们事先安装两个软甲包组(Additional Development ,Development tools)。然后我们还需要最新的vsftpd软件包,这里已有我们下载的最新的,下载地址:http://vsftpd.beasts.org/ 2、安装软件包已经在系统/root目录下,我们需要将其展开到/usr/local/src/目录下。我们进目录内,可以找你展开生成的目录,这里是vsftps-3.0.2 ,进入此目录找到INSTALL文件,因为vsftp的这个服务里面没有./configure 文件,在这个服务里我们所有需要安装的项目步骤都在INSTALL文件说明内,所以这个文件是我们需要关注的。(1)根据INSTALL文件内安装步骤指示,第一步我们需要编辑builddefs.h 文件命令如下:cd/usr/local/src/vsftpd-3.0.2/vim builddefs.h文件内定义了一些ftp服务需要的功能,这里我们选择#defineVSF_BUILD_TCPWRAPPERS //简易防火墙#defineVSF_BUILD_PAM //可插拔的身份验证模块(2)、执行make会出现错误tcpwrap.c:16:20: error: tcpd.h: No such file or directory 出现这样错误可能是我们tcp_wrap安装文件缺失,这需要我们排查我们安装的是否还有别的tcp_wrap没有安装。yum --disablerepo=\* --enablerepo=c6-media list all |grep-i tcp_wraptcp_wrappers-devel.i686 tcp_wrappers-devel.x86_64tcp_wrappers-libs.i686如果我们不知道具体缺失的是那个文件那我们可以都安装了。安装完这些文件包之后,我们要做的是清除我们刚才已经编译过的文件,让make重新执行,make clean all 指令。在这样的安装过程中,我们也许会遇到不少错误,要做的只有见招拆招就可以了,出现了这样一个错误:/usr/bin/ld: cannot find –lcap //表示缺少一种cap库 l表示是库文件,cap表示的名称缺少的是一些关于libcap开发的库:libcap-devel-2.16-5.5.el6.i686.rpmlibcap-devel-2.16-5.5.el6.x86_64.rpm安装这些库之后我们依然要执行 make clean all 指令,之后再执行make好在之后没有出现什么问题了。(2)确定当前目录下是否生成vsftps文件,指令:ll vsftpd* 之后我们要确认下我们系统下是否有nobody账户grep nobody/etc/passwdnobody:x:99:99:Nobody:/:/sbin/nologinnfsnobody:x:65534:65534:AnonymousNFS User:/var/lib/nfs:/sbin/nologin说明nobody账户存在。
还要查看是否在有这个目录/usr/share/empty/没有就要创建mkdir /usr/share/empty/mkdir: cannot create directory `/usr/share/empty/': File exists //显示的是创建过
要创建一个名为ftp的用户,还需要自定义家目录名称为ftpmkdir /var/ftp/useradd -d /var/ftp ftp改变用户的所有者,并且以为用户是匿名的所以不需要别人有可修改的权限。chown root.root /var/ftpchmod og-w /var/ftp(3)执行make install ,发现man手册不能自动放到对应的目录下所以需要我们手动操作:mkdir -pv/usr/local/man/{man5,man8}cp vsftpd.conf.5/usr/local/man/man5cp vsftpd.8 /usr/local/man/man8make install 指令不会去复制模板配置文件,需要我们自己去拷贝:cp vsftpd.conf /etc(4)测试一下:cd /usr/local/sbin/ vsftpd &netstat -tupln|grep 21tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 5581/vsftpd //21端口已经启动用ftp , lftp(匿名账户)测试。注意:如果你的centos是最小化安装的话,你的系统内可能没有这些命令,需要安装指令。
匿名账户可以成功但是本地账户登录不行,所以我们还要找到/etc/pam.d/ftp 这个文件,可是我们没有找到文件所以需要拷贝:cp /usr/local/src/vsftpd-3.0.2/RedHat/vsftpd.pam /etc/pam.d/ftp
但是需要我们注意的还是会出错,但是这样的错不关pam的问题了,这时我们要看自己的配置文件了/etc/vsftpd.conf中我们的本地账户登录就没有启动,所以就把local_enable=YES的前面的“#”去掉就行了。3、编写控制脚本#!/bin/bash[ -e/etc/init.d/functons ] && ./etc/init.d/functionsprog=/usr/local/sbin/vsftpdlockfile=/var/lock/subsys/vsftpd
start (){ if [ -e $lockfile ] ; then echo " the vsftp is started" else echo -n "the vsftpd is starting.... " $prog & if [ $? ]; then echo "[ok]" && touch$lockfile else echo "failer "
fi
fi
}

stop () { if [ ! -e $lockfile]; then echo " the vsftp is stoped " else echo -n "the vsftpd is stoping ......" sleep 1 killproc vsftpd && echo "[ ok]" && rm -rf $lockfile || echo "failer" fi}
status (){
if [ -e $lockfile ];then echo "the vsftpd server is started" else echo "the vsftpd server is stoped" fi}
case "$1" instart) start ;;stop) stop ;;status) status ;;restart) stop start ;;*) echo "vsftpdUSAGE:start|stop|restart|status"esac四、实验结果[root@ahaosbin]# ftp localhostTrying::1...ftp:connect to address ::1Connection refusedTrying127.0.0.1...Connectedto localhost (127.0.0.1).220(vsFTPd 3.0.2)Name(localhost:root): anonymous331Please specify the password.Password:230 Loginsuccessful.Remotesystem type is UNIX.Using binarymode to transfer files.ftp>dir227Entering Passive Mode (127,0,0,1,185,229).150 Herecomes the directory listing.226Directory send OK.ftp> //匿名账户登录测试成功

[root@ahao~]# ftp 127.0.0.1Connectedto 127.0.0.1 (127.0.0.1).220(vsFTPd 3.0.2)Name(127.0.0.1:root): user10331Please specify the password.Password:230 Loginsuccessful.Remotesystem type is UNIX.Usingbinary mode to transfer files.ftp> //本地账户登录成功

控制脚本结果[root@ahaoinit.d]# service vsftpd startthevsftpd is starting .... [ok][root@ahaoinit.d]# netstat -tupln | grep 21tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 5660/vsftpd [root@ahaoinit.d]# ll /var/lock/subsys/vsf*-rw-r--r--.1 root root 0 Dec 17 06:22 /var/lock/subsys/vsftpd [root@ahao init.d]# service vsftpd statusthevsftpd server is started [root@ahaoinit.d]# service vsftpd stop thevsftpd is stoping ...... [ok]五、实验总结安装的过程虽然繁琐,但是过程中间出现的问题,都需要我们好好想想怎么解决,这在我们学习过程中都是不错的经验,还有shell脚本的编写,不断的练习,总是会让我总结经验的,不断的积累,才是茁壮成长的表现。

本文出自 “eyes,say” 博客,请务必保留此出处http://eyessay.blog.51cto.com/8365949/1341366
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: