|
一、獲取安裝包
下載地址 http://vsftpd./ 二、安裝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./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虛擬用戶認(rèn)證 [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時(shí)密碼為明文,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)設(shè)置虛擬用戶權(quán)限及其家目錄 [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/ #設(shè)定用戶目錄所在 4)下面是用戶的配置文件存放目錄 *******文件權(quán)限為root.root不然會出現(xiàn)用戶找不到入口錯(cuò)誤 [root@localhost ~]# ll /etc/vsftpd/vsftpd_user_conf/ total 12 -rw-r--r-- 1 root root 153 Nov 19 14:52 4399 5)下面是FTP文件存放的目錄 *****文件權(quán)限為vsftpdguest.vsftpdguest否則出現(xiàn)用戶配置文件錯(cuò)誤 [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 此文件好像沒有用,因?yàn)楹髞砦医⒘艘粋€(gè)帳戶沒有在這里添加也行 4399 hw 5i 四、vsftpd.conf配置文件設(shè)置 [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的防火墻設(shè)置
ftp連接時(shí)需要兩個(gè)端口:默認(rèn)情況下是20和21,21端口為命令傳輸通道,20為數(shù)據(jù)傳輸通道. 如果是以主動模式的話,那么情況就是上述那樣. 而如果是被動模式的話,那么命令通道還是默認(rèn)21,而數(shù)據(jù)通道此時(shí)就是由客戶端發(fā)出請求,即客戶端向服務(wù)器端申請一個(gè)大于1023的端口進(jìn)行傳輸數(shù)據(jù),而不再是20了. 如上所述為了打開防火墻,本來是想使用主動模式但看起來比較復(fù)雜,所以就使用了被動模式給了一個(gè)端口范圍給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 同時(shí)在vsftpd.conf里加入
listen_port=21 pasv_min_port=9981 pasv_max_port=9986 六、數(shù)據(jù)庫配置 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 配置文件權(quán)限問題 /etc/vsftpd/vsftpd_user_conf/4399權(quán)限要為 root root 用戶找不到入口的問題虛擬用戶沒有配置文件存在,即下面文件不存在
/etc/vsftpd/vsftpd_user_conf/4399 出錯(cuò)觀察最初診斷是在/var/log/vsftpd.log 這個(gè)最好是看看傳文件記錄不利于排錯(cuò)
/var/log/messages 會出現(xiàn)配置虛擬用戶時(shí)的一些問題 /var/log/secure pam認(rèn)證這里會記錄,虛擬用戶訪問數(shù)據(jù)庫的一些問題諸如授權(quán)如果沒有授權(quán)方面的問題了只能在客戶端里看那個(gè)登錄提示出錯(cuò)的一些信息了,vsftp的日志提示并不友好感覺 附:配置文件的說明
anonymous_enable=NO #禁止匿名 local_enable=YES #允許本地登錄 write_enable=YES #允許寫,如需上傳,則必須 local_umask=027 #將上傳文件的權(quán)限設(shè)置為: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 #標(biāo)準(zhǔn)日志格式 idle_session_timeout=600 #空閑連接超時(shí) data_connection_timeout=120 ftpd_banner=Welcome to ChinaRise FTP service #歡迎信息 guest_enable=yes #允許虛擬用戶 guest_username=vsftpdguest #虛擬用戶使用的系統(tǒng)賬號 virtual_use_local_privs=YES #虛擬用戶擁有本地系統(tǒng)權(quán)限
chroot_local_user=NO chroot_list_enable=YES #以下兩行將虛擬用戶限制在其目錄下,不能訪問其他目錄,或者直接用 chroot_local_user=YES listen=yes #監(jiān)聽/被動模式 listen_port=21 #監(jiān)聽端口 chroot_list_file=/etc/vsftpd/vsftpd.chroot_list #虛擬用戶名單保存在文件/etc/vsftpd/vsftpd.chroot_list 中 user_config_dir=/etc/vsftpd/vsftpd_user_conf #每個(gè)虛擬用戶名的更加詳細(xì)的培植保存在/etc/vsftpd/vsftpd_user_conf 中 FTP上傳腳本
#!/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 最近改進(jìn)的用FTP作為數(shù)據(jù)中心備份數(shù)據(jù)的腳本貼下來,下面是把上面的那兩個(gè)腳本合為一個(gè)對于管理跟處理來說方便多了
#!/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 <<EOF
open fpip 21 user $user $pwd binary prompt off cd $dir mput * bye EOF 下面是在執(zhí)行備份時(shí)再執(zhí)行FTP到備份后刪除一星期之前的數(shù)據(jù)
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 <<EOF open ftpip user user pwd binary prompt off cd dir mput $str
bye EOF find /db/db -ctime +7 -exec rm -rf {} \; 腳本中有不足之處是對于數(shù)據(jù)中心的文件夾創(chuàng)建問題需要手動創(chuàng)建,當(dāng)時(shí)是想弄個(gè)跑上去連接先創(chuàng)建個(gè)目錄先還存在不少問題,繼續(xù)改進(jìn),呵呵
|
|
|