Chinaunix首页 | 论坛 | 博客
  • 博客访问: 160378
  • 博文数量: 37
  • 博客积分: 2218
  • 博客等级: 大尉
  • 技术积分: 315
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-04 23:35
文章分类

全部博文(37)

文章存档

2012年(1)

2011年(5)

2010年(31)

分类: LINUX

2010-03-23 15:12:18

构建基于虚拟用户的Vsftpd服务器
大致过程为:
1.       建立虚拟FTP用户的帐号数据库文件
2.       创建FTP根目录及虚拟用户映射的系统用户
3.       建立支持虚拟用户的PAM认证文件
4.       vsftpd.conf文件中添加支持配置
5.       为虚拟用户建立独立的配置文件
6.       重新加载vsftpd配置
7.       使用虚拟FTP账户访问一下测试
开始具体的配置过程吧:
1.       建立虚拟FTP用户的帐号数据库文件
首先建立虚拟用户的帐号名,密码列表 (其中奇数行为帐号名,偶数行为上一行中帐号的密码)
#vi  /etc/vsftpd/vusers.txt
Wendy
123
Natasha
456
#cd /etc/vsftpd/
#db_load  -T –t hash –f vusers.txt vusers.db 帐号文件转换问数据库文件 (使用db_load转换工具,需要安装db-utils-4.3.29-9.fc6.i386.rpm软件包)
#file vusers.db
#chmod 600 /etc/vsftpd/vusers.txt
#chmod 600 /etc/vsftpd/vusers.db
 
2.       创建FTP根目录及虚拟用户的映射的系统用户
#mkdir  /var/ftproot
#useradd  -d /var/ftproot  -s  /sbin/nologin   vsftp  (指定系统账户的家目录和shell环境变量)
#chmod   755   /var/ftproot/
#chown   vsftp:vsftp   /var/ftproot/
3.       建立支持虚拟用户的PAM认证文件
#vi  /etc/pam.d/vsftpd.vu  (文件内容为:
#%PAM-1.0
auth     required  pam_userdb.so  db=/etc/vsftpd/vsftp
account  reuqired  pam_userdb.so  db=/etc/vsftpd/vsftp
        (注意要对应第一步中建立的vusers.db文件)
4.       vsftpd.conf文件中添加支持配置
#vi   /etc/vsftpd/vsftpd.conf
local_enable=YES
write_eanble=YES
anon_umask=022
guest_enable=YES
guest_username=vsftp
pam_service_name=vsftpd.vu
5.       为个别虚拟用户建立独立的配置文件
vsftpd.conf文件中添加用户配置目录支持
user_config_dir=/etc/vsftpd/vusers
为用户wendy,natasha建立独立的配置目录及文件
配置文件名与用户名同名
#mkdir  /etc/vsftpd/vusers/              
#cd   /etc/vsftpd/vusers/            
#vi    wendy
anon_upload_enable=NO
anon_mkdir_write_enable=NO
#vi   natasha
anon_upload_enable=YES
anon_mkdir_write_enable=YES
6.       重新加载vsftpd配置
#service  vsftpd  reload
7.       使用虚拟FTP账户访问测试
分别用wendy,natasha用户登录FTP服务器进行下载,上传测试
测试结果:
wendy用户可以登录,并可以浏览,下载文件,但无法上传文件,无法创建目录
 
 
natasha用户可以登录,并可以浏览,下载文件,也可以上传文件,可以创建目录,删除目录。
 
 
(注意到那些提示数字了么?
开头为1的数字:表示服务说明信息
开头为2的数字:表示服务正常运行信息
开头为3的数字:表示服务正常运行信息,但不完整
开头为4的数字:表示暂时性的错误信息
开头为5的数字:表示致命性的错误信息
登录ftp服务时,使用lcd命令来切换本地目录
显示以逗号隔开的六个数字:其中前四个表示FTP服务器ip地址,后两个用来计算端口号的,算法为:FTP端口=第五个数*256+第六个数)
 
如果您开启selinux ,且为为Enforcing级别
开启selinux后,就算允许本地用户上传文件,也不一定就能上传。这个时候需要修改selinux中的bool值。
 
 
 
如果selinux中设置匿名用户禁止上传,那么还是不能上传
 
 
 
#chcon -R -t http_sys_content_t /home/wendy (修改selinux的标签)
 
Vsftpd用来控制用户登录的有两个文件:/etc/vsftpd/下的ftpusersuser_list文件。
/etc/vsftpd/ftpusers下的文件控制用户登录的时候,写入这个文件的用户就不能登录FTP了。
 
/etc/vsftpd/userlist 默认表示写入次文件的用户都不能登录了,这个时候配置文件vsftpd.confuserlist_enable=YES,这是默认的。也可以在下面加上一行userlist_deny=YES表示列表中的用户都是被禁止登录的。效果一样。
 
如果想让列表表示为只有列表中的用户才能访问FTP,需要将userlist_deny=NO写上。
 
 
以上设置就表示只有写入到userlist这个列表文件中的用户可以访问FTP了。(没有写到的账户都不能访问了)
 
如果想控制访问FTP服务的ip地址。可以使用tcp_wrapperiptables来控制。
通常情况下使用tcp-wrapper来控制ip地址的访问,因为这样配置起来比较简单。
 
 
 
 
阅读(1475) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~