Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10804816
  • 博文数量: 2905
  • 博客积分: 20098
  • 博客等级: 上将
  • 技术积分: 36298
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-23 05:00
文章存档

2012年(1)

2011年(3)

2009年(2901)

分类: LINUX

2009-03-23 11:08:29

1.      目标系统
使用vsftp程序及pam组件来完成vsftp搭建,实现ftp功能。
2.      系统要求
1.         ftp功能
2.         用户锁定目录
3.         上传下载可行
4.         不使用系统帐户验证
5.         多用户支持
3.      需要组件
vsftpd-2.0.7
db4-devel-4.2.52-7.1
db4-4.2.52-7.1
db4-utils-4.2.52-7.1
4.      安装过程
4.1.      安装组件
首先下载vsftp组件
wget

解压至目录
#tar zxvf vsftpd-2.0.7.tar.gz
#cd vsftpd-2.0.7
清除编译环境
#make clean
开始进入编译预准备
#vi builddefs.h
将其中VSF_BUILD_TCPWRAPPERS、VSF_BUILD_PAM、VSF_BUILD_SSL所在行undef改为define。
在vsftpd的目录里编译
#make
随后创建必要的帐号,目录:
#useradd nobody  //可能你的系统已经存在此帐号,那就不用建立
#mkdir /usr/share/empty  //可能你的系统已经存在此目录,那就不用建立
#mkdir /var/ftp  //可能你的系统已经存在此目录,那就不用建立
#useradd -d /var/ftp ftp  //可能你的系统已经存在此帐号,那就不用建立
#chown root:root /var/ftp
#chmod og-w /var/ftp
请记住,如果你不想让用户在本地登陆,那么你需要把他的登陆SHELL设置成/sbin/nologin,比如以上的nobody和ftp我就设置成/sbin/nologin
开始安装
#install -m 755 vsftpd /usr/local/sbin/vsftpd-pam
#install -m 644 vsftpd.8 /usr/share/man/man8
#install -m 644 vsftpd.conf.5 /usr/share/man/man5
#install -m 644 vsftpd.conf /etc/vsftpd-pam.conf
4.2.      配置基础环境
1.         查看系统是否有相应软件包
#rpm –qa | grep db4
db4-utils-4.3.29-9.fc6
db4-4.3.29-9.fc6
db4-devel-4.3.29-9.fc6
如果没有则需要安装
2.         建立一个logins.txt的文件,单行为用户名,双行为密码
#vi /home/logins.txt
test
123456
3.         建立数据库文件并设置文件属性
#db_load -T -t hash -f /home/logins.txt /etc/vsftpd_login.db
#chmod 600 /etc/vsftpd_login.db
4.         建立认证文件
新建文件
#vi /etc/pam.d/ftp
并加入下面两行
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
5.         建立一个虚拟用户
useradd -d /home/vsftpd -s /sbin/nologin vsftpd
6.         修改配置文件
#vi /etc/vsftpd-pam.conf
在配置文件修改或添加以下选项
listen=YES
listen_port=21
tcp_wrappers=YES //支持tcp_wrappers,限制访问(/etc/hosts.allow,/etc/hosts.deny)
listen=YES的意思是使用standalone启动vsftpd,而不是super daemon(xinetd)控制它 (vsftpd推荐使用standalone方式)
anonymous_enable=NO
local_enable=YES  //PAM方式此处必须为YES,如果不是将出现如下错误:
500 OOPS: vsftpd: both local and anonymous access disabled!
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES
guest_enable=YES
guest_username=vsftpd //这两行的意思是采用虚拟用户形式
virtual_use_local_privs=YES //虚拟用户和本地用户权限相同
pasv_enable=YES //建立资料联机采用被动方式
anon_world_readable_only=NO
7.         启动程序
#/usr/local/sbin/vsftpd-pam /etc/vsftpd-pam.conf &
报错:500 OOPS: bad bool value in config file for: tcp_wrappers
8.         测试连接
#

报错:[root@lvs3 vsftpd-2.0.7]# ftp localhost
Connected to lvs3.
500 OOPS: vsftpd: cannot locate user specified in 'guest_username':vsftpd
Connected to 127.0.0.1.
220 (vsFTPd 2.0.7)
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): pool1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
227 Entering Passive Mode (127,0,0,1,83,150)
150 Here comes the directory listing.
226 Directory send OK.
ftp> quit
221 Goodbye.
4.3.      配置用户环境
1.         建立所有需要登录用户
#vi /home/logins.txt
test
123456
test
234567
单行为用户名,双行为密码
2.         更新数据文件
#db_load -T -t hash -f /home/logins.txt /etc/vsftpd_login.db
3.         配置用户环境
#mkdir /etc/vsftpd_user_conf/
#vi /etc/vsftpd-pam.conf 加入如下语句
user_config_dir=/etc/vsftpd_user_conf
-----------------------以下为单用户循环配置,每用户都需要建立------------------------------
#mkdir /home/vsftpd/test
#vi /etc/vsftpd_user_conf/test
添加内容
local_root=/home/vsftpd/test
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
保存退出
修改配置及目录权限
# chmod 700 /home/vsftpd/test
# chown vsftpd.vsftpd /home/vsftpd/test/
---------------------------------用户配置结束---------------------------------------
4.         测试用户是否登录到自己目录及上传下载正常
5.      客户端测试
1.         在建立好的每个用户/目录下建立测试文件两个(文件名不要相同);
2.         使用客户端软件从外部测试;
3.         分别登录两个以上的帐号,通过察看根目录存在文件检查是否引导到不同/目录下;
4.         尝试下载测试文件到本地;
5.         尝试删除测试文件;
6.         尝试上传文件到测试帐号;
7.         测试完成。
阅读(504) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~