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
#安装前,如果已经安装则不需要安装
#通过yum安装
yum install pam-devel
yum install gcc
yum install tcp_wr*
yum install ftp
#或批量安装,自动确认。
yum install pam-devel gcc tcp_wr* ftp -y
#安装完所需软件
#建立所需的目录
#解压之前存放的路径
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
#貌似被墙了,用代理上吧。
#如果被墙了,用代理下载完,通过SSH传到主机里吧。
#备注
#2.3.5版本有bug..把文件名改成2.3.4下载,bug困扰我好长时间。。。
#解压缩文件
tar –zxvf /data/software/vsftpd-2.3.5.tar.gz –C /usr/local/src/
#进入解压缩的目录
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
#支持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
#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
#更改目录所属者,否则不能创建文件等
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 &
#测试
#开机启动
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
#日志及数据根据自己的情况是否删除