配置vsftpd服务:
服务的启动与停止
启动服务之前,我们先编辑配置文件/etc/vsftpd/vsftpd.conf. 打开配置文件后可以看到许多以“#”开始的行,这些行都是注释行,大多是帮助信息,可以仔细阅读。vsftpd.conf文件的所有项目都是以“参数=值”来设置的,对格式要求比较严格,必须严格区分大小写,等号两边不能有空格,每行的最后也不能有空格。每个参数都有一个默认值,没有在配置文件中明确指定的参数就会使用默认值。我们这里不理会配置文件本来的信息,把所有内容都删掉或注释掉,最后加上下面四行,每行右边的//及后的文字是含义说明,不要输入到文件中:
- listen=yes //vsftpd工作在standalone 模式下
- anonymous_enable=yes //允许匿名用户登陆服务器
- local_enable=yes //允许本地用户登录到服务器
- pam_service_name=vsftpd //使用PAM认证
vsftpd有两种工作模式,standalone模式和xinetd守护进程模式,第1行就是让其工作在standalone模式下。此种模式中,每次修改配置文件必须重新启动vsftpd服务才能生效,关于两种模式在后面有详细介绍。我们安装时还把 Redhat 目录下的 vsftpd.pam 文件复制成了/etc/pam.d/vsftpd 文件。这个文件就是本地用户登陆的 pam 验证配置文件。关于这个文件我们会在后面具体介绍。这里我们要知道,必须得有这个配置文件,而且主配置文件里要加上 pam_service_name=vsftpd语句,我们才能让本地用户登陆。用以下命令启动服务:
- # /usr/local/sbin/vsftpd /etc/vsftpd/vsftpd.conf &
为保证服务确实启动,我们用如下命令检测:
- # netstat -an |grep 21
- tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
我们看到服务器已经打开了tcp21端口,表明ftp确实已经启动。再登录服务器:
- # ftp 127.0.0.1
- Connected to 127.0.0.1.
- 220 (vsFTPd 2.0.5)
- 530 Please login with USER and PASS.
- 530 Please login with USER and PASS.
- KERBEROS_V4 rejected as an authentication type
- Name (127.0.0.1:root): ftp
- 331 Please specify the password.
- Password:
- 230 Login successful.
这时我们已经用匿名用户(用户名ftp或anonymous,密码任意)登录到服务器了,还可以用本地用户登录。我们做测试时建议使用如上所示的ftp命令(windows、Linux及Unix都带这个命令,用法都是一样的)来登录服务器,这样可以看到更详细的信息,对于我们调试服务器是非常有帮助的。最简单的ftp服务器就已经达建起来了。使用如下命令关闭ftp服务:
- # killall vsftpd
服务启动脚本的制作
在standalone 模式中,经常用上面的命令启动服务比较麻烦,我们做一个脚本来启动和停止服务。
建立一个新文件/etc/rc.d/init.d/vsftpd,把以下内容复制到文件中:
- #!/bin/bash
- #
- # vsftpd This shell script takes care of starting and stopping
- # standalone vsftpd.
- #
- # chkconfig: - 60 50
- # description: Vsftpd is a ftp daemon, which is the program \
- # that answers incoming ftp service requests.
- # processname: vsftpd
- # config: /etc/vsftpd/vsftpd.conf
- # Source function library.
- . /etc/rc.d/init.d/functions
- # Source networking configuration.
- . /etc/sysconfig/network
- # Check that networking is up.
- [ ${NETWORKING} = "no" ] && exit 0
- [ -x /usr/local/sbin/vsftpd ] || exit 0
- RETVAL=0
- prog="vsftpd"
- start() {
- # Start daemons.
- if [ -d /etc/vsftpd ] ; then
- for i in `ls /etc/vsftpd/*.conf`; do
- site=`basename $i .conf`
- echo -n $"Starting $prog for $site: "
- /usr/local/sbin/vsftpd $i &
- RETVAL=$?
- [ $RETVAL -eq 0 ] && {
- touch /var/lock/subsys/$prog
- success $"$prog $site"
- }
- echo
- done
- else
- RETVAL=1
- fi
- return $RETVAL
- }
- stop() {
- # Stop daemons.
- echo -n $"Shutting down $prog: "
- killproc $prog
- RETVAL=$?
- echo
- [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
- return $RETVAL
- }
- # See how we were called.
- case "$1" in
- start)
- start
- ;;
- stop)
- stop
- ;;
- restart|reload)
- stop
- start
- RETVAL=$?
- ;;
- condrestart
- if [ -f /var/lock/subsys/$prog ]; then
- stop
- start
- RETVAL=$?
- fi
- ;;
- status)
- status $prog
- RETVAL=$?
- ;;
- *)
- echo $"Usage: $0 {start|stop|restart|condrestart|status}"
- exit 1
- esac
- exit $RETVAL
保存文件,再给该文件加上执行权限:
- # chmod 755 /etc/rc.d/init.d/vsftpd
这样我们就可以通过下面的方法来管理服务了:
- # service vsftpd {start|stop|restart|condrestart|status}
例如重新启动服务:
- # service vsftpd restart
- Shutting down vsftpd: [OK ]
- Starting vsftpd for vsftpd: [OK ]
【编辑推荐】