mysql vsftp_vsftp mysql安装配置

一、获取安装包

下载地址 http://vsftpd.beasts.org/

二、安装VSFTPD

useradd nobody

useradd vsftpdguest

useradd -d /var/ftp ftp

[root@localhost root]# chown root.root /var/ftp

[root@localhost root]# chmod og-w /var/ftp

make

make install

cp vsftpd /usr/local/sbin/vsftpd

cp vsftpd.conf.5 /usr/local/man/man5

cp vsftpd.8 /usr/local/man/man8

cp vsftpd.conf /etc

cp RedHat/vsftpd.pam /etc/pam.d/vsftpd

/usr/local/sbin/vsftpd &

三、安装pam-mysql

下载地址 http://prdownloads.sourceforge.net/pam-mysql/

1)安装

tar zxvf pam_mysql-0.7RC1.tar.gz

cd pam_mysql-0.7RC1

./configure --with-mysql=/usr/ --with-openssl --with-cyrus-sasl2

make && make install

2)配置vsftpd支持mysql虚拟用户认证

[root@localhost vsftpd-2.2.2]#vi /etc/pam.d/vsftpd

auth required /usr/lib/security/pam_mysql.so config_file=/usr/lib/security/pam_mysql.conf

account required /usr/lib/security/pam_mysql.so config_file=/usr/lib/security/pam_mysql.conf

[root@localhost vsftpd-2.2.2]# mkdir -p /etc/vsftpd/vsftpd_user_conf/

[root@localhost ftp]# vi /usr/lib/security/pam_mysql.conf

users.host=localhost

users.database=vsftp

users.db_user=vsftpdguest

users.db_passwd=vsftp0123user

users.table=users

users.user_column=name

users.password_column=passwd

users.password_crypt=3此处为0时密码为明文,2为password加密,3为md5加密

verbose=1

log.enabled=1

log.table=logs

log.pid_column=pid

log.message_column=msg

log.user_column=user

log.host_column=host

log.rhost_column=rhost

log.time_column=logtime

上面这里后面不能留有空格

3)设置虚拟用户权限及其家目录

[root@localhost vsftpd-2.2.2]# vi /etc/vsftpd/vsftpd_user_conf/4399

anon_world_readable_only=NO

write_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

local_root=/DataCenter/4399/ #设定用户目录所在

4)下面是用户的配置文件存放目录

*******文件权限为root.root不然会出现用户找不到入口错误

[root@localhost ~]# ll /etc/vsftpd/vsftpd_user_conf/

total 12

-rw-r--r--  1 root root 153 Nov 19 14:52 4399

5)下面是FTP文件存放的目录

*****文件权限为vsftpdguest.vsftpdguest否则出现用户配置文件错误

[root@localhost ~]# ll /DataCenter/

total 12

drwxrw-r-x  5 vsftpdguest vsftpdguest 4096 Nov 17 17:25 4399

drwxrw-r-x  4 vsftpdguest vsftpdguest 4096 Nov 17 17:38 5i

drwxrw-r-x  4 vsftpdguest vsftpdguest 4096 Nov 17 17:39 hw

6)用户列表文件

[root@localhost ~]# vi /etc/vsftpd/vsftpd.chroot_list 此文件好像没有用,因为后来我建立了一个帐户没有在这里添加也行

4399

hw

5i

四、vsftpd.conf配置文件设置

[root@localhost ~]# vi /etc/vsftpd.conf

anonymous_enable=YES

local_enable=YES

write_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

dirmessage_enable=YES

dual_log_enable=YES

vsftpd_log_file=/var/log/vsftpd.log

use_localtime=YES

listen=YES

pam_service_name=/etc/pam.d/vsftpd

user_config_dir=/etc/vsftpd/vsftpd_user_conf

guest_enable=YES

guest_username=vsftpdguest

anon_umask=077

anon_world_readable_only=NO

write_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

五、FTP的防火墙设置

ftp连接时需要两个端口:默认情况下是20和21,21端口为命令传输通道,20为数据传输通道.

如果是以主动模式的话,那么情况就是上述那样.

而如果是被动模式的话,那么命令通道还是默认21,而数据通道此时就是由客户端发出请求,即客户端向服务器端申请一个大于1023的端口进行传输数据,而不再是20了.

如上所述为了打开防火墙,本来是想使用主动模式但看起来比较复杂,所以就使用了被动模式给了一个端口范围给FTP

iptables -I RH-Firewall-1-INPUT -p tcp -m multiport --dport 21,9981,9982,9983,9984,9985,9986,9987,9988,9989,9990  -j ACCEPT

service iptables save

同时在vsftpd.conf里加入

listen_port=21

pasv_min_port=9981

pasv_max_port=9986

六、数据库配置

create database vsftp;

use vsftp;

create table users(

id int AUTO_INCREMENT NOT NULL primary key,

name char(16) binary NOT NULL,

passwd char(40) binary NOT NULL);

***md5加密后有32位

create table logs(

pid int,

msg varchar(255),

user char(16),

host char(32),

rhost char(32),

logtime timestamp);

grant all on vsftp.* to vsftpdguest@localhost identified by 'vsftp0123user';

insert into vsftp.users values ('1','4399',md5('xxx'));

问题:

500 OOPS: config file not owned by correct user, or not a file

配置文件权限问题

/etc/vsftpd/vsftpd_user_conf/4399权限要为 root root

用户找不到入口的问题虚拟用户没有配置文件存在,即下面文件不存在

/etc/vsftpd/vsftpd_user_conf/4399

出错观察最初诊断是在/var/log/vsftpd.log 这个最好是看看传文件记录不利于排错

/var/log/messages 会出现配置虚拟用户时的一些问题

/var/log/secure  pam认证这里会记录,虚拟用户访问数据库的一些问题诸如授权如果没有授权方面的问题了只能在客户端里看那个登录提示出错的一些信息了,vsftp的日志提示并不友好感觉

附:配置文件的说明

anonymous_enable=NO            #禁止匿名

local_enable=YES                       #允许本地登录

write_enable=YES                       #允许写,如需上传,则必须

local_umask=027                        #将上传文件的权限设置为:777-local_umask

anon_upload_enable=YES          #允许虚拟用户和匿名用户上传

anon_other_write_enable=YES  #允许虚拟用户和匿名用户修改文件名和删除文件

dirmessage_enable=YES

xferlog_enable=YES                      #打开日志记录

connect_from_port_20=YES

xferlog_file=/var/log/vsftpd.log     #日志存放位置

xferlog_std_format=YES              #标准日志格式

idle_session_timeout=600        #空闲连接超时

data_connection_timeout=120

ftpd_banner=Welcome to ChinaRise FTP service       #欢迎信息

guest_enable=yes                       #允许虚拟用户

guest_username=vsftpdguest  #虚拟用户使用的系统账号

virtual_use_local_privs=YES     #虚拟用户拥有本地系统权限

chroot_local_user=NO

chroot_list_enable=YES

#以下两行将虚拟用户限制在其目录下,不能访问其他目录,或者直接用

chroot_local_user=YES

listen=yes                #监听/被动模式

listen_port=21        #监听端口

chroot_list_file=/etc/vsftpd/vsftpd.chroot_list       #虚拟用户名单保存在文件/etc/vsftpd/vsftpd.chroot_list 中

user_config_dir=/etc/vsftpd/vsftpd_user_conf   #每个虚拟用户名的更加详细的培植保存在/etc/vsftpd/vsftpd_user_conf 中

FTP上传脚本

ftp.sh

#!/bin/bash

str=`date +%Y-%m-%d`

mysqldump -u root -pxx g log_everyday -t >/q/setup/date/log_everyday.csv

cd /q/setup/date

ftp -n < /q/setup/ftpsh/ftp.cmd

ftp.cmd

open IP

user username password

binary

prompt off

cd dir

mput *

bye

scp脚本

scp.sh

#!/bin/bash

str=`date +%Y-%m-%d`

mysqldump -u root -pxx g log_everyday -t >/q/setup/date/log_everyday.csv

for i in `find /q/setup/date/ -name '*.csv' -ctime -1`

do

/q/setup/date/scp.expect $i

done

scp.expect

#!/usr/bin/expect

set timeout 6000 #(秒)

set csv [lindex $argv 0]

spawn  scp $csv user@ip:/DataCenter/h/xx

expect {

"(yes/no)?" {

send "yes\n"

expect "password:"

send "password\r"

}

"password:" {

send "password\r"

}

}

expect "]*"

exit

interact

最近改进的用FTP作为数据中心备份数据的脚本贴下来,下面是把上面的那两个脚本合为一个对于管理跟处理来说方便多了

#!/bin/bash

str=`date +%Y-%m-%d`

user=xxx

dir=xxx

pwd=xxx

path="/db/setup/data"

mysql -ppasswd -e 'select * from Log.log_everyday;' > $path/log_everyday.txt

cd $path

mv log_everyday.txt log_everyday.csv

ftp -n <

open fpip 21

user $user $pwd

binary

prompt off

cd $dir

mput *

bye

EOF

下面是在执行备份时再执行FTP到备份后删除一星期之前的数据

cd /db/db

str=xxx_`date +%y%m%d%H%M`.gz

echo "开始备份..."`date`

mysqldump -uroot -pxxx --quick --add-drop-table --extended-insert mysql|| gzip > $str

echo "备份完毕..."`date`

sleep 2

ftp -n <

open ftpip

user user pwd

binary

prompt off

cd dir

mput $str

bye

EOF

find /db/db -ctime +7 -exec rm -rf {} \;

脚本中有不足之处是对于数据中心的文件夹创建问题需要手动创建,当时是想弄个跑上去连接先创建个目录先还存在不少问题,继续改进,呵呵

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值