CenOS6.0 源码安装vsftpd 配置虚拟用户

#先做些准备工作

#查看安装vsftpd需要的基本组件是否安装

 

#虚拟用户生成密码时需要组件

rpm –qa | grep db4

#虚拟用户需要使用的组件

rpm –qa | grep pam-devel

#编译安装时需要使用的组件    

rpm –qa | grep gcc

#支持tcp_wrappers使用的组件

rpm –qa | grep tcp_wrappers

#ftp客户端测试时使用

rpm –qa | grep ftp

 

 

#安装前,如果已经安装则不需要安装

QQ截图20111221110751

 

#通过yum安装

yum install pam-devel

yum install gcc

yum install tcp_wr*

yum install ftp

#或批量安装,自动确认。

yum install pam-devel gcc tcp_wr* ftp -y

#安装完所需软件

QQ截图20111221113506

 

#建立所需的目录

#解压之前存放的路径

mkdir –p /data/software

#存放vsftpd的主文件

mkdir –p /usr/local/vsftpd/sbin

#存放vsftpd的配置文件

mkdir /usr/local/vsftpd/etc

#vsftd所需的特殊目录

mkdir /usr/local/vsftpd/empty

chmod 555 /usr/local/vsftpd/empty

#建立ftp目录

mkdir /data/ftp

#建立日志目录

mkdir –p /data/log/vsftpd/

#创建日志文件

touch /data/log/vsftpd/vsftpd.log

 

#建立所需的用户

useradd –M vsftp –d /data/ftp –s /sbin/nologin

 

 

备注:要确认系统存在nobody用户,如果没有需要添加

cat /etc/passwd | grep ^nobody

#nobody 用户配置

nobody:x:99:99:Nobody:/:/sbin/nologin

 

 

#下载vsftpd

#下载链接获取,vsftpd官方网站。

#https://security.appspot.com/vsftpd.html#download

vsf_thumb1

#貌似被墙了,用代理上吧。

QQ20111219143253_thumb1

#如果被墙了,用代理下载完,通过SSH传到主机里吧。

 

#备注

#2.3.5版本有bug..把文件名改成2.3.4下载,bug困扰我好长时间。。。

 

#解压缩文件

tar –zxvf /data/software/vsftpd-2.3.5.tar.gz –C /usr/local/src/

QQ20111220104038_thumb3

 

#进入解压缩的目录

cd /usr/local/src/vsftpd-2.3.5

#查看README

cat README

#软件自身介绍,如果安装查看INSTALL,可以通过man 5 vsftpd.conf查看配置帮助,示例文件在EXAMPLE目录下。

 

#查看安装说明

cat INSTALL

#此文件说明如何安装vsftpd

 

#首先编辑builddefs.h

vi builddefs.h

QQ截图20111221112958

#支持tcpwrappers,和pam

 

#编译,如果没有错误就说明更新成功

make

 

#安装,实际复制几个文件就OK了

cp vsftpd /usr/local/vsftpd/sbin/

cp vsftpd.conf /usr/local/vsftpd/etc/

 

 

#配置vsftpd

vi /usr/local/vsftpd/etc/vsftpd.conf

#日志保存路径

xferlog_file=/data/log/vsftpd/vsftpd.log

#标准日志格式

xferlog_std_format=YES

#ftp 欢迎语

ftpd_banner=Welcome to blah FTP service.

#独立监听

listen=YES

 

#匿名用户为vsftp

ftp_username=vsftp

#空目录

secure_chroot_dir=/usr/local/vsftpd/empty

 

#建立测试目录

mkdir /data/ftp/test

#启动服务

/usr/local/vsftpd/sbin/vsftpd /usr/local/vsftpd/etc/vsftpd.conf &

#测试连接

ftp 127.0.0.1

#用户名 anonymous

#密码为空

 

#显示列表

dir

 

QQ截图20111221145416

#ftp 成功登陆,下面开始配置虚拟用户。

 

#创建密码库

vi /usr/local/vsftpd/etc/login

test1

123

test2

123

#创建两个用户,test1,test2,密码为123

#奇数为用户名,偶数为密码。

 

#更改文件权限

chmod 600 /usr/local/vsftpd/etc/login

 

#生成密码库

db_load -T -t hash -f /usr/local/vsftpd/etc/login /usr/local/vsftpd/etc/login.db

chmod 600 /usr/local/vsftpd/etc/login.db

 

#复制认证文件

cp /usr/local/src/vsftpd-2.3.5/EXAMPLE/VIRTUAL_USERS/vsftpd.pam /etc/pam.d/vsftpd

 

#修改文件内容

vi /etc/pam.d/vsftpd
auth required /lib/security/pam_userdb.so db=/usr/local/vsftpd/etc/login
account required /lib/security/pam_userdb.so db=/usr/local/vsftpd/etc/login

 

#创建虚拟用户配置目录

mkdir /usr/local/vsftpd/etc/user_config

 

#编辑配置文件

vi /usr/local/vsftpd/etc/vsftpd.conf

#禁止匿名登录

anonymous_enable=NO

#开启本地登录

local_enable=YES

#开启写权限,如果此权限不开,anon_mkdir_write_enable设置会无效。

write_enable=YES

#开启虚拟用户

guest_enable=YES

#虚拟用户

guest_username=vsftp

#pam

pam_service_name=vsftpd

#虚拟用户权限配置目录

user_config_dir=/usr/local/vsftpd/etc/user_config

#被动模式端口

pasv_max_port=60050
pasv_min_port=60000

 

#具体配置如下

cat /usr/local/vsftpd/etc/vsftpd.conf | grep ^# -v

QQ截图20111224194012

 

 

#更改目录所属者,否则不能创建文件等

chown vsftp:vsftp /data/ftp

 

#建立test1用户

mkdir /data/ftp/test1

chown vsftp:vsftp /data/ftp/test1

 

#建立和用户名相同的文件

vi /usr/local/vsftpd/etc/user_config/test1

#是否禁止浏览目录,默认是
anon_world_readable_only=NO
#是否允许创建文件夹,但不能阻止用户上传文件夹
anon_mkdir_write_enable=YES
#是否允许上传文件及文件夹
anon_upload_enable=YES
#是否允许用户修改,删除文件和文件夹
anon_other_write_enable=YES
#主目录
local_root=/data/ftp/test1

 

 

#kill掉进程

#重启服务即可

/usr/local/vsftpd/sbin/vsftpd /usr/local/vsftpd/etc/vsftpd.conf &

 

#测试

QQ截图20111222171738

 

 

#开机启动

echo '/usr/local/vsftpd/sbin/vsftpd /usr/local/vsftpd/etc/vsftpd.conf &' >> /etc/rc.local

 

 

#更改监听端口,IP访问限制

 

#监听端口

listen_port=自定义其他端口

#开启tcp_wrappers

vi /usr/local/vsftpd/etc/vsftpd.conf

tcp_wrappers=YES

 

#开启192.168.0.1网段允许访问

echo 'vsftpd:192.168.0.*:allow' >> /etc/hosts.allow

#阻止所有用户

echo 'vsftpd:all:deny' >> /etc/hosts.deny

#hosts.allow和hosts.deny发生冲突时以host.allow为准。

 

#开启iptables

/sbin/iptables -A INPUT -p tcp --dport 60000:60050 -j ACCEPT

/sbin/iptables -A INPUT -p tcp --dport 21 -j ACCEPT

 

#卸载程序

rm –rf /usr/local/vsftpd

rm –r /etc/pam.d/vsftpd

#删除开机启动,删除对应行

vi /etc/rc.local

#删除IP限制,对应行

vi /etc/host.allow

vi /etc/host.deny

#日志及数据根据自己的情况是否删除

posted on 2011-12-22 16:50  马德华  阅读(1226)  评论(0编辑  收藏  举报