您的位置:首页 > 编程语言 > PHP开发

RHEL 5服务篇—部署FTP文件传输服务(二)部署基于虚拟用户的FTP服务

2014-07-30 08:36 447 查看
部署基于虚拟用户的FTP服务
      在vsftpd服务器中,使用虚拟用户的主要好处在于,可以将登录的账号与系统登录的账号区分开来,用户名,密码都不相同,从而进一步增强了FTP服务器的安全性。
1、建立虚拟用户的账号数据库
vsftpd服务使用Berkeley DB格式的数据库文件来存放虚拟用户账号。建立这种数据库文件需要使用db_load工具,db_load工具由db4-utils软甲包提供,而db4-utils软件包需要先从系统光盘中的Server中安装。如下安装db4-utils软件包。
[root@localhost /]#rpm -ivh /media/Server/db4-utils-4.3.29-10.el5.i386.rpm
2、创建文本格式的用户名、密码列表
首先需要建立文本格式的用户名/密码列表文件,奇数行为用户名,偶数行为上一行用户所对用的密码。
[root@localhost /]#vim /etc/vsftpd/vusers.list
zhangsan
123
lisi
123

3、创建Berkeley DB格式的数据库文件
有了文本格式的用户名/密码列表文件以后,以此文件为数据源通过db_load工具创建出Berkeley DB格式的数据库文件。
[root@localhost /]#cd /etc/vsftpd
[root@localhost vsftpd]#db_load -T -t hash -f vusers.list vusers.db
在db_load命令中,“-T”选项允许非Berkeley DB的应用程序使用从文本格式转换的DB数据库文件,“-t hash”选项指定读取数据文件的基本方法,“-f”选项用于指定数据的源文件。关于db_load命令的详细说明,可参阅/usr/share/doc/db4-utils-4.3.29/ustils/db_load.html文件。
为了提高虚拟用户账户的安全性,应将文件权限设置为600,以免数据外泄。
[root@localhost /]#chmod 600 /etc/vsftpd/vusers.*

4、添加虚拟用户的映射账号、创建FTP根目录
vsftpd服务器对虚拟用户是控制采用了映射的控制方式,将所有的虚拟用户对应到同一个系统用户,该系统用户的宿主目录作为所有虚拟用户登录后共用的FTP根目录,因此还需要添加一个对应的系统用户账号(此账号无需设置密码以及登录shell)
[root@localhost /]#useradd -d /var/ftproot -s /sbin/nologin vuser
[root@localhost /]#chmod 755 /var/ftproot    --调整权限以允许浏览目录

5、为虚拟用户建立PAM认证文件
在vsftpd服务器中,用户认证是通过PAM机制来实现的,该机制包含灵活的选择认证的方式。vsftpd服务默认的PAM认证文件位于/etc/pam.d/vsftpd,该文件适用于以Linux主机的系统用户账号进行认证。若要读取虚拟用户的账户数据文件,就需要创建新的PAM认证配置。
[root@localhost /]#vim /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vusers
auth required pam_userdb.so db=/etc/vsftpd/vusers
上述PAM配置内容中,通过“db=/etc/vaftpd/vusers”参数指定了要使用的虚拟用户数据库文件位置(省略了.db的扩展名),即对应/etc/vsfpd/vusers.db文件。

6、修改vsftpd配置,添加虚拟用户支持
在vsftpd.conf配置文件中添加guest_enable,guest_username配置项,将访问FTP服务的所有虚拟用户对应到同一系统用户账户vuser,并修改pam_service_name配置项指向上一步建立的/etc/pam.d/vsftpd.vu认证文件。
[root@localhost /]#vim /etc/vsftpd/vsftpd.conf
......//省略部分内容
local_enable=YES                 //需要映射本地用户,所以启用此项
write_enable=YES                 //启用上传写入支持
anon_umask=022                  //指定上传权限掩码
guest_enable=YES               //启用用户映射功能
guest_username=vuser           //指定映射的系统用户名称
pam_service_name=vsftpd.vu     //指定新的PAM认证文件
在vsftpd服务中,虚拟用户被默认作为匿名用户进行处理以降低权限,因此对应的配置项通常以anon_开头。
现在只需重新加载vsftpd.conf配置文件就可以再客户端使用虚拟用户访问FTP了。
[root@localhost /]#service vsftpd reload

7、为不同的虚拟用户建立不同的配置文件,实现不同用户拥有不同的权限
若要为不同的虚拟用户账户设置不同的访问权限,可以通过为每个虚拟用户建立独立的配置文件来实现。为FTP用户启用独立配置文件,需要修改vsftpd.conf配置文件,添加“user_config_dir=/etc/vsftpd/vusers_dir”配置项。
[root@localhost /]#vim /etc/vsftpd/vsftpd.conf
......//省略部分内容
user_config_dir=/etc/vsftpd/vusrs_dir
有了上述配置以后,就可以在/etc/vsftpd/vusers_dir/目录下为每个虚拟用户创建独立的配置文件了。
[root@localhost /]#mkdir /etc/vsftpd/vusers_dir   //创建用户配置文件夹
[root@localhost /]#cd /etc/vsftpd/vusers_dir/
[root@localhost /]#vim zhangsan                   //为zhangsan用户创建独立的配置文件
aono_upload_enable=YES                  //具有上传文件的权限
anon_mkdir_write_enable=YES             //具有上传目录的权限
在vsftpd.conf文件中启用了user_config_dir配置项以后,应该为每个虚拟用户都建立一个单独的配置文件(可以使空的),否则该用户可能会无法登录FTP。
[root@localhost /]#touch lisi    //为lisi建立空的配置文件
这时重新加载vsftpd.conf配置文件就可以再客户端访问了。
[root@localhost /]#service vsftpd reload

为了验证不同的权限效果,可以为不同的用户设置不同的权限,如下:
zhangsan用户可以登录,并能够正常浏览、下载文件、但不能上传文件。
lisi用户可以登录,并能够正常浏览、下载文件、也可以上传文件。
wangwu用户可以登录,并能够正常浏览、下载、上传、删除文件、目录。

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