vsftpd 配置下高级操作
这一次我们介绍一下 vsftpd的其它一些知识,其中包括:双模式切换、基于ip的虚拟ftp 站点、基于数据库虚拟用户建立及管理、基于 OpenSSL 的加密数据传输。
1. vsftpd 双模式切换
前面我们提过, vsftpd 服务是支持在linux下的两种服务模式:独立(standalone)模式和守护进程(xinetd)模式。在 standalone 模式下,vsftpd进程启动后会一直占用系统资源,当有连接请求时,它会迅速反应;在xinetd模式下,ftp服务是由守护进程统一管理,当出现 ftp连接请求时,守护进程才将ftp服务启动,这种方式***的优点是没有连接的时候ftp服务不会占用系统资源,处于睡眠状态,但因为要花费时间去唤醒该服务,所以响应时间较长 。
之前做的试验一直是把 vsftpd 做在独立模式下,下面我们把它移到守护进程下。注意在工作在守护进程下时,有的参数并不起作用,详细请查阅vsftpd 帮助信息 (man vsftpd.conf)。
我们需要在守护进程配置目录 /etc/xinetd.d/里建立vsftpd 的守护进程文件。我们在安装时已经将该文件考到/etc/xinetd.d/目录下了。我们稍稍修改其内容:
#vi /etc/xinetd.d/vsftpd
service ftp
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/local/sbin/vsftpd
server_args = /etc/vsftpd/vsftpd.conf
nice = 10
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
接下来把配置文件中的 listen=yes或listen_ipv6=yes去掉,停掉vsftpd服务,重启xinetd服务:
# sesrvice vsftpd stop
# service xinetd restart
重新启动守护进程后, vsftpd 服务就会让守护进程来管理了。在守护进程管理过程中,我们再修改主配置文件的话,就不需要重新启动服务了。
2. 基于 IP 的虚拟 ftp 站点
这一小节我们来讨论在同一服务器上建立多个 ftp站点,每个站点相互独立,拥有独立的配置文件。当然服务器必须有两个以上的IP地址。在standalone模式下,我们可以考虑启动多个ftp服务进程;在xinetd模式下,可以让守护进程来管理。下面我们分别讨论这两种情况。为简单起见,我们在服务器上建立两个匿名虚拟站点。下面是这两个站点的信息:
站点 1
站点 2
ip 地址
192.168.0.105
192.168.0.106
主配置文件
/etc/vsftpd/vsftpd.conf
/etc/vsftpd/vsftpd2.conf
匿名用户映射的本地用户名
默认为 ftp
新建立 ftp2
匿名用户主目录
/var/ftp/
/var/ftp2/
standalone 模式下虚拟站点的建立
首先我们修改站点 1的配置文件/etc/vsftpd/vsftpd.conf为下面所示:
listen=yes
listen_address=192.168.0.105
anonymous_enable=yes
local_enable=yes
pam_service_name=vsftpd
write_enable=yes
ftpd_banner=This is ftp1 site
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
站点 1就这样配置完毕了。接下来为站点2建立ftp2的用户:
# mkdir /var/ftp2/
# useradd -d /var/ftp2/ ftp2
- 1.
- 2.
- 3.
- 4.
为了让站点 2知道匿名用户的主目录为/var/ftp2,我们需要在配置文件中手动指定站点2使用ftp2用户登录,于是我们要用到下面这条语句:
ftp_username=local_username
- 1.
- 2.
建立站点 2的配置文件/etc/vsftpd/vsftpd2.conf,内容如下:
listen=yes
listen_address=192.168.0.106
anonymous_enable=yes
local_enable=yes
pam_service_name=vsftpd
write_enable=yes
ftp_username=ftp2
ftpd_banner=This is ftp2 site
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
接下来我们启动 vsftpd服务,就可以看到效果了。需要注意的是这里就不能用service vsftpd start命令来启动服务了,必须用第三节前面介绍的方式启动。
# /usr/local/sbin/vsftpd /etc/vsftpd/vsftpd.conf &
[1] 2287
# /usr/local/sbin/vsftpd /etc/vsftpd/vsftpd2.conf &
[1] 2288
# ftp 192.168.0.105
Connected to 192.168.0.105.
220 This is ftp1 site
530 Please login with USER and PASS.
……
# ftp 192.168.0.106
Connected to 192.168.0.106.
220 This is ftp2 site
……
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
我们在各自的配置文件设置了不同的 banner,上面已经看到效果了。
守护进程模式下虚拟站点的建立
在 standalone模式下,IP的绑定在配置文件里配置了,配置文件名及其位置在启动服务的命令参数里指定;在xinetd模式下,这两步需要在守护进程配置文件里配置。这样在守护进程里面我们就得用到这两个设置:
bind= 绑定的ip
server_args= 每个站点的配置文件
那么我们来做守护进程文件,首先来写站点 1的守护进程文件:
# vi /etc/xinetd.d/vsftpd
service ftp
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/local/sbin/vsftpd
server_args = /etc/vsftpd/vsftpd.conf
nice = 10
bind = 192.168.0.105
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
再建立站点 2的守护进程文件,并输入下面的内容
# vi /etc/xinetd.d/vsftpd2
service ftp
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/local/sbin/vsftpd
server_args = /etc/vsftpd/vsftpd2.conf
nice = 10
bind = 192.168.0.106
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
这样两个守护进程文件就写完了,用户也在上个试验已经建立完了。接下来继续修改两个站点的配置文件,均是把 listen、listen_address两行删去即可。现在我们可以重新启动xinetd服务,测试结果就不贴出来了。
【编辑推荐】