Linux系列-Red Hat5平台下的FTP服务搭建

上次我们看到了基于 Red Hat5 平台下的 DHCP 服务的搭建,本次我们通过一个例子来看一下 Red Hat5 平台下的 FTP 服务的搭建。
FTP File Transfer Protocol, 文件传输协议)是典型的 C/S 结构的应用层网络协议,需要有相应的客户端和服务器端软件才能进行文件传输。本次我们以 vsftpd 服务器端软件为例。该软件可以从站点 http://vsftpd.beasts.org/ 中下载,在 RHEL5 系统中会自带有 vsftpd 软件。并且,安装好 vsftpd 软件包以后,将自动添加 vsftpd 系统服务,通过“ /etc/init.d/vsftpd ”脚本可以控制 vsftpd 服务的启动和终止,而无需手动执行“ /usr/sbin/vsftpd ”程序。
下面我们来看看在 Red Hat5 上是如何通过 vsftpd 服务器软件,搭建 FTP 的。具体的概念以及配置步骤和注意事项,咱们边做边说。
第一部分:建立基于本地用户的vsftpd 服务
1. 匿名 FTP
访问匿名 FTP 服务器时不需要密码,只要使用用户名“ ftp ”或“ anonymous ”即可通过验证。当需要提供公开访问的文件下载资源,或者让用户上传一些无需保密的数据资料时,可以选择搭建匿名 FTP 服务器。搭建的步骤如下所示:
1>. 调整匿名上传目录权限。
RHEL5 系统中,匿名用户对应的系统帐户为 ftp, 其宿主目录为“ /var/ftp , 该目录也就是匿名用户访问 vsftpd 服务时所在的根目录(可通过 anon_root 配置项更改)。
 Linux系列-Red Hat5平台下的FTP服务搭建_第1张图片
说明:将其中 pub 子目录的属主修改为 ftp, 并保留其可写权限,可提供给匿名用户上传文件使用。我们给 /var/ftp/ 创建一个文件到 /var/ftp/ 目录下,以便稍后的测试。
2>. 修改 vsftpd.conf 配置文件,开放匿名用户访问、上传许可。
 
说明:如果希望匿名用户在上传目录中能够进行覆盖、删除、重命名文件等写入操作,还可以添加“ anon_other_write_enable=YES ”的配置项。此项配置可能带来安全性问题,所以应谨慎使用。
注意:由于匿名 FTP 根目录“ /var/ftp/ ”的默认权限为 755 ,因此不要将该目录的属主更改为 ftp, 否则匿名访问时可能会报错“ 500 OOPS vsftpd:refusing to run with writable anonymous root , 此错误会导致访问失败。
3>. 重新启动 vsftpd 服务
 
4>. 此时,我们到客户机上访问 FTP 服务器,测试下载及上传功能。
 
可以看到,用户使用匿名用户 FTP ,不但可登录,并且可以下载 FTP 服务器上的资源。
2. 本地用户 FTP
Vsftpd 可以直接使用 Linux 系统的本地用户作为 FTP 用户,提供基于用户名 / 密码的登录验证。使用本地用户登录 FTP 服务器后,默认将位于自己的宿主目录中,且在宿主目录中拥有读写权限,并允许切换到其他目录。使用 chroot_local_user 配置项可以将本地用户禁锢在宿主目录中(不允许切换到其他目录),使用 local_root 配置项可以将本地用户的 FTP 根目录设置为同一个文件夹。
下面我们配置一个基于本地用户并进行用户限制的 FTP 服务器步骤如下:
1>. 添加 FTP 测试用户(也就是本地用户)。新建一个文件 file1 以便测试。
 
2>. 修改 vsftpd.conf 配置文件,开放本地用户。
 
说明:配置“ chroot_local_user=YES ”项,可以有效提高 FTP 服务器的安全性。否则,默认将允许用户切换到服务器中的“ /var/ ”、“ /etc/ ”、“ /boot/ ”等宿主目录以外的文件夹,可能带来安风险。如果启用“ local_root=/var/ftproot” 的配置选项时,本地用户登录该 FTP 服务器后,根目录将更改为指定的文件夹。该选项适用于 FTP 根目录需要保持固定的情况。如果希望 vsftpd 服务 只对特定的本地用户开放,可以使用 userlist_enable userlist_deny 配置项并结合用户列表文件“ /etc/vsftpd/user_list ”实现,此处不做演示。
3>. 重新启动 vsftpd 服务。
 
4>. 在客户端访问 FTP 服务器,测试下载及上传功能。
 
可以看到用户登录和下载服务器上的资源都没有问题
第二部分:建立基于虚拟用户的vsftpd 服务
1.       建立虚拟用户的用户名 / 密码数据库
Vsftpd 服务的虚拟用户数据库是使用 Berkeley DB 格式的数据文件。建立该数据库文件需要用到 db_load 命令工具,从 RHEL5 光盘中安装 db4-utils- 4.3.29 -9.fc6.i386.rpm 软件包后可获得该工具。
首先建立文本格式的用户名 / 密码列表文件,奇数行为用户名,偶数行为上一行中用户所对应的密码。
 
说明:此处建立了两个密码都为 123.com 的虚拟用户 zpp001 zpp002.
然后用 db_load 工具将列表文件转化为 DB 数据库文件。
 
说明:在 db_load 命令中,“ -f ”选项用于指定用户名 / 密码列表文件,“ -T ”选项允许非 Berkeley DB 的应用程序使用从文本格式转换的 DB 数据文件,“ -t hash ”选项指定读取数据文件的基本方法。将文件 vusers.db 的权限降底为 600 是为了安全性考虑。关于 db_load 命令的详细说明可参阅“ /usr/share/doc/db4-utils- 4.3.29 /utility/db_load.html ”文件
2.       建立 FTP 访问的根目录及虚拟用户对应的系统帐号
 
说明: Vsftpd 虚拟用户需要有一个对应的系统用户帐号(该帐号不需要设置密码及登录 Shell , 该用户帐号的宿主目录作为所有虚拟用户登录后的共同 FTP 根目录。
3.       建立 PAM 认证文件
 
说明: PAM 配置文件主要用于为程序提供用户认证控制, vsftpd 服务使用的默认 PAM 配置文件为“ /etc/pam.d/vsftpd ,s 可以参考该文件的格式建立新的 PAM 配置文件,用于虚拟用户的认证控制。配置时请注意将 db 选项指定为先前建立的虚拟用户数据文件 vusers (省略 .db 扩展名)
4.       修改 vsftpd.conf 配置文件,添加虚拟用户支持
vsftpd.conf 配置文件中,添加 guest_enable guest_userusername 配置项,将访问 FTP 服务的所有虚拟用户对应到同一系统用户帐号 virtual, 并修改 pam_service_name 配置项,指向上一步建立的 PAM 配置文件“ /etc/pam.d/vsftpd.vu ”。
 
说明:在 vsftpd 服务中,虚拟用户账户默认作为匿名用户处理以降低权限,因此对应的权限设置通常使用以 anon_ 开头的配置项,
5.       为不同的虚拟用户建立独立的配置文件
通过前面的四步,实际上已经可以重启 vsftpd 并提供服务了,使用虚拟用户帐号可以登录 FTP 服务器并下载文件。此步骤介绍如何为个别虚拟用户设置不同的访问权限。
假如现在有这样的要求: zpp001 用户只有浏览和下载的权限,而 zpp002 可以浏览、下载、改名、删除文件、建立和删除目录的权限,可以按如下的步骤实现:
1>. 修改 vsftpd.conf 主配置文件,添加用户配置目录支持。
 
说明:添加此行配置,指定用户配置目录的位置。
2>. 为用户 zpp001 zpp002 建立独立的配置目录及文件。
 
说明:如果需要禁用或者允许一部分虚拟用户帐号,同样可以使用“ /etc/vsftpd/user_list ”列表文件。需要注意的是,在“ /etc/vsftpd/ftpusers ”文件中加入虚拟用户名,并不能禁用对应的系统帐号。
6.       重新启动 vsftpd 服务
 
7 .使用虚拟用户帐户访问 FTP 服务
 
说明:现在可以看到,虚拟用户 zpp001 只有浏览和下载的权限,并没有创建目录等其它权限。
 
说明:可以看到,用户 zpp002 不但有浏览和下载权限,同时也具备创建目录等

你可能感兴趣的:(linux,ftp,red,休闲,hat)