天天看點

vsftpd伺服器批量建立使用者之pasv模式腳本

最近需要搭建vsftpd文檔伺服器,為了節省時間,就編寫了如下兩個腳本,一個是針對32位系統的,另一個是針對64位的系統的,以後使用的時候友善。

腳本一:

#!/bin/sh

#write by kevin

#Auto_create_vsftpd_priv_32

#date 2011-05-04

###########make install vsftpd-pam#################

yum -y install db4 db4-utils db4-devel

tar xfz vsftpd-2.3.4.tar.gz

cd vsftpd-2.3.4

make clean

sed -i 's/undef/define/g' builddefs.h

make

install -m 755 vsftpd /usr/local/sbin/vsftpd-pam

install -m 644 vsftpd.8 /usr/share/man/man8

install -m 644 vsftpd.conf.5 /usr/share/man/man5

install -m 644 vsftpd.conf /etc/vsftpd-pam.conf

###################################################

set -x

if [ "$i" == "" ];then

length=20

else

length=$i

fi

############configure of login###########

cat>>/home/logins.txt<<EOF

ftpuser

<a href="mailto:[email protected]" target="_blank">[email protected]</a>

ftpadmin

EOF

#########################################

echo -e "===============================================\n\n"

echo -e "The logins.txt is configured ok n\n"

ftp_pwd_file="/data/path/auto_change_pwd.txt"

mkdir -p /data/path

touch $ftp_pwd_file

chmod 600 $ftp_pwd_file

ip_last=`/sbin/ifconfig eth0|grep "inet addr"|awk '{print $2}'|awk -F ":" '{print $2}'|cut -d \. -f3-4`

update_time=`date +"%Y-%m-%d %H:%M:%S"`

echo "$ip_last:" &gt;$ftp_pwd_file

echo "Update_time: $update_time" &gt;&gt; $ftp_pwd_file

echo "====================================================" &gt;&gt;$ftp_pwd_file

login_file=/home/logins.txt

sed -i '$d' $login_file 

ftp_pwd=`tr -dc _A-Z-a-z#$%^*-0-9 &lt;/dev/urandom |head -c${length}`

echo $ftp_pwd &gt;&gt; $login_file

db_load -T -t hash -f /home/logins.txt /etc/vsftpd_login.db

chmod 600 /etc/vsftpd_login.db

for i in `sed -n '3p' $login_file`

do

if [ $? == 0 ];then

echo -e "$i\t\t\t${ftp_pwd}"&gt;&gt; $ftp_pwd_file

echo "==================================================" &gt;&gt; $ftp_pwd_file

echo -e "change passwd for $i error" &gt;&gt; $ftp_pwd_file

done

cat&gt;&gt; /etc/pam.d/ftp&lt;&lt;EOF

auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login

account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

useradd -d /home/vsftpd -s /sbin/nologin vsftpd

mkdir /etc/vsftpd_user_conf/

for N in `sed -n 'p;n' $login_file`

mkdir /home/vsftpd/$N

cat &gt;&gt;/etc/vsftpd_user_conf/$N&lt;&lt;EOF

local_root=/home/vsftpd/$N

write_enable=YES

anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

chmod -R 700 /home/vsftpd/$N

chown -R vsftpd.vsftpd /home/vsftpd/$N

cat &gt;&gt;/etc/vsftpd-pam.conf&lt;&lt;EOF

listen=YES

listen_port=6006

connect_from_port_20=NO

pasv_max_port=6000

pasv_min_port=5000

tcp_wrappers=YES

anonymous_enable=NO

local_enable=YES

write_enable=NO

anon_upload_enable=NO

anon_mkdir_write_enable=NO

anon_other_write_enable=NO

chroot_local_user=NO

dirmessage_enable=YES

message_file=/etc/.message

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list

guest_enable=YES

guest_username=vsftpd

virtual_use_local_privs=YES

pasv_enable=YES

local_max_rate=2097152

#max_clients=50

max_clients=100

max_per_ip=2

user_config_dir=/etc/vsftpd_user_conf

#user_acl_list

#userlist_file=/etc/vsftpd.user_list

#userlist_enable=YES

#userlist_deny=NO

xferlog_enable=YES

xferlog_file=/var/log/xferlog

dual_log_enable=YES

vsftpd_log_file=/var/log/vsftpd.log

use_localtime=YES

cat &gt;&gt;/etc/.message&lt;&lt;EOF

Welcome to Teasure's FTP Website.You can upload and download things that you like!

cat &gt;&gt;/etc/vsftpd.chroot_list&lt;&lt;EOF

#start vsftpd

/usr/local/sbin/vsftpd-pam /etc/vsftpd-pam.conf &amp;

echo -e "================================================"

echo -e "service vsfptd-pam is start\n\n"

exit 0

****************************************************************************

腳本二:

#Auto_create_vsftpd_priv_64

sed -i 's#/lib/#lib64/#g' ./vsf_findlibs.sh

#set -x

cat&gt;/home/.logins.txt&lt;&lt;EOF

<a href="mailto:[email protected]" target="_blank">[email protected]</a>

echo -e "The logins.txt is configured ok \n\n"

login_file=/home/.logins.txt

db_load -T -t hash -f /home/.logins.txt /etc/vsftpd_login.db

cat&gt; /etc/pam.d/ftp&lt;&lt;EOF

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd_login

account required /lib64/security/pam_userdb.so db=/etc/vsftpd_login

cat &gt;/etc/vsftpd_user_conf/$N&lt;&lt;EOF

local_root=/data/.vsftpd/$N

chmod -R 700 /data/.vsftpd/$N

chown -R .vsftpd /data/.vsftpd/$N

chgrp -R .vsftpd /data/.vsftpd/$N

cat &gt;/etc/vsftpd-pam.conf&lt;&lt;EOF

#listen_port=21

#ftp_data_port=8080

guest_username=.vsftpd

max_per_ip=3

cat &gt;/etc/vsftpd.chroot_list&lt;&lt;EOF

echo -e "================================================\n\n"

****************************************************************************************

<a href="http://down.51cto.com/data/2360321" target="_blank">附件:http://down.51cto.com/data/2360321</a>

    本文轉自vcdog 51CTO部落格,原文連結:http://blog.51cto.com/255361/837958,如需轉載請自行聯系原作者