vsftpd虚拟用户设置(mysql)

一 下载、安装
1. http://vsftpd.beasts.org/

2.
#tar zxvf vsftpd-2.2.2.tar.gz
#cd vsftpd-2.2.2
#make
#mkdir /usr/local/man/man5/
#make install

3.
#cp vsftpd.conf /etc
#cp RedHat/vsftpd.pam /etc/pam.d/ftp

二 做成服务
1. 通过which命令可以查找执行位置
#which vsftpd
/usr/local/sbin/vsftpd

2. 写一个VSFTPD启动教本:
# vim /etc/init.d/vsftpd
===========+=============+===========
#!/bin/sh
# Copyright (c) 2004 by null
# All rights reserved.
#
# chkconfig: - 110 30
# description: Starts and stops the Vsftpd Service
# config:  /etc/vsftpd.conf
#
case "$1" in
start)
        /usr/local/sbin/vsftpd &
;;
stop)
        killall -9 vsftpd
;;
restart)
        killall -1 vsftpd
;;
*)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
;;
esac
exit 0

===========+=============+===========

# chmod 755 /etc/init.d/vsftpd

三 匿名用户测试
1. 匿名用户目录需要手动建立
#finger ftp
#mkdir /var/ftp
#chown root.root /var/ftp
#chmod og-w /var/ftp

2. 匿名用户上传需要在/var/ftp 下创建一个子目录
#mkdir /var/ftp/incoming
#chgrp ftp /var/ftp/incoming
#chmod g+w /var/ftp/incoming

3. 必须打开的配置
#vim /etc/vsftpd.conf
listen=YES                   #监听模式,独立模式
anonymous_enable=YES         #允许匿名登陆
write_enable=YES             #允许客户端写命令
anon_umask=077       #匿名用户新增文件的umask 数值。默认值为077。
anon_upload_enable=YES       #允许匿名用户上传文件
anon_mkdir_write_enable=YES  #允许匿名用户创建目录
anon_other_write_enable=YES  #匿名用户可删除目录和文件
anon_world_readable_only=NO #允许匿名用户下载,默认是禁止的

四 端口、带宽、线程设置
listen_port=3000 #设置ftp端口为3000

pasv_enable=YES  #开启被动模式
pasv_min_port=2000 #限制数据端口范围
pasv_max_port=2099 #

anon_max_rate=100000 #限制虚拟帐号下载速率
local_max_rate=100000 #限制本地帐号下载速率100KB
max_per_ip=5  #同时只能有5线程在下载

五 虚拟账号设置

1 创建FTP虚拟账号
# useradd -d /ew/ftpsite -s /sbin/nologin virtual

2 在mysql中,建库、建表、设置权限
CREATE DATABASE `vsftpd` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `vsftpd`;
CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL auto_increment,
  `name` char(16) NOT NULL,
  `passwd` char(48) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `logs` (
  `msg` varchar(255) default NULL,
  `user` char(16) default NULL,
  `pid` int(11) default NULL,
  `host` char(32) default NULL,
  `rhost` char(32) default NULL,
  `logtime` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

insert into users (name,passwd) values('tom','foo');
insert into users (name,passwd) values('jerry','bar');

grant select on vsftpd.users to vftp@localhost identified by '123456';
grant insert on vsftpd.logs to vftp@localhost identified by '123456';

3 安装PAM包
下载地址:
http://sourceforge.net/projects/pam-mysql/

安装:
# tar zxvf pam_mysql-0.7RC1.tar.gz
# cd pam_mysql-0.7RC1
# ./configure --with-openssl
# make
# make install

4 配置
先找到pam_mysql.so的路径
#find / -name "pam_mysql.so"
/usr/lib/security/pam_mysql.so

开始配置
# vim /etc/pam.d/ftp

内容如下(注意一下实际pam_mysql.so的路径)
auth       required     /usr/lib/security/pam_mysql.so user=vftp passwd=123456 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=0 sqllog=1 logtable=logs logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=logtime verbose=1
account    required     /usr/lib/security/pam_mysql.so user=vftp passwd=123456 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=0 sqllog=1 logtable=logs logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=logtime verbose=1

5 vsftpd.conf配置
# vim /etc/vsftpd.conf
local_enable=YES  #允许本地用户登录FTP
write_enable=YES  #启用本地用户写权限
local_umask=022   #本地用户新增档案时的umask 数值。默认值为077。
chroot_local_user=YES  #本地所有帐户都只能在自家目录
guest_enable=YES
guest_username=virtual
virtual_use_local_privs=YES #无此项时默认NO,YES:虚拟用户与本地用户相同的权限。NO:虚拟用户与匿名用户相同的权限
注:只有与本地用户相同权限时,write_enable、local_umask才生效
否则以anon*开头的才生效
pam_service_name=ftp #验证方式,默认值为ftp,值和/etc/pam.d/ftp 名称相同

其它设置:
file_open_mode=0666 #如希望上传的文件可以执行,值为0777.默认为0666。

6 虚拟用户个人目录设置

6.1 建立用户配置自定义目录
# mkdir /etc/vsftpd/userconf -p

6.2 指定配置目录
# vim /etc/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf/

6.3 虚拟用户tom个人配置,目录指向
# vim /etc/vsftpd/userconf/tom
local_root=/ew/ftpsite/tom

6.4 创建个人目录
# mkdir /ew/ftpsite/tom
# chown virtual.virtual /ew/ftpsite/tom/
# chmod 700 /ew/ftpsite/tom

6.5 *为了防止未指向个人目录的虚拟用户访问/ew/ftpsite,看到其它用户文件
可自行新建公共目录
# mkdir /ew/ftpsite/pub

并在配置文件中指向
# vim /etc/vsftpd.conf
local_root=/ew/ftpsite/pub

你可能感兴趣的:(mysql,user,table,null,vim,insert)