Skip to content

Instantly share code, notes, and snippets.

@millken
Created September 30, 2010 11:43
Show Gist options
  • Save millken/604444 to your computer and use it in GitHub Desktop.
Save millken/604444 to your computer and use it in GitHub Desktop.
#!/bin/bash
# author: koumm
# desc: auto vsftpd script
# date: 2010-07-30
# version: v1.1
# modify:
WEBROOT="/data1/htdocs/www.koumm.com"
FTP_PORT="3000"
VSFTPDROOT="/etc/vsftpd"
FTP_CONFIG="/etc/vsftpd/vsftpd.conf"
FTP_PAM="/etc/pam.d/vsftpd"
CURRENT_PATHS=`pwd`
function_vsftp()
{
#selinux=`cat /etc/selinux/config |grep "SELINUX=" |grep -v "# SELINUX" |cut -c 9-17`
selinux=`sestatus | awk -F "[: ]+" '{print $3}' | sed -n '1p'`
if [ "$selinux" = "enabled" ]; then
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
echo "****************************************************"
echo "selinux is disabled, You must reboot linux !!!"
echo "****************************************************"
echo ""
sleep 3
fi
echo ""
echo "*****************************"
echo "Installing vsftpd..."
echo "*****************************"
#ftp download/upload directory in WEBROOT
#user could change it self
HTTPDUSER=`cat /etc/passwd |grep apache |awk -F ":" '{print $1}'`
NGINXUSER=`cat /etc/passwd |grep nginx |awk -F ":" '{print $1}'`
unalias cp >> /dev/null 2>&1
if [ ! -d $WEBROOT ]; then
mkdir -p $WEBROOT
fi
#ftp vitural user
if [ "$HTTPDUSER" != "apache" -a "$NGINXUSER" != "nginx" ]; then
/usr/sbin/useradd apache -s /sbin/nologin >>/dev/null 2>&1
fi
chown -R apache:apache $WEBROOT
echo "YUM install vsftpd..."
yum install -y vsftpd db4-utils db4 db4-devel
echo "*****************************"
echo "Configuration vsftpd..."
echo "*****************************"
mkdir -p $VSFTPDROOT/conf.d
#vsftpd virt l user config
cat > $VSFTPDROOT/conf.d/www <<end..
guest_enable=YES
guest_username=apache
local_root=$WEBROOT
anon_world_readable_only=no
anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_umask=022
end..
#default www user and password
cat > $VSFTPDROOT/login.txt <<end..
www
www
end..
#default www user and password
cat > $VSFTPDROOT/rebuild_ftp_user.sh <<end..
/usr/bin/db_load -T -t hash -f $VSFTPDROOT/login.txt $VSFTPDROOT/db_login.db
end..
if [ ! -x $VSFTPDROOT/rebuild_ftp_user.sh ]; then
chmod +x $VSFTPDROOT/rebuild_ftp_user.sh
$VSFTPDROOT/rebuild_ftp_user.sh
else
$VSFTPDROOT/rebuild_ftp_user.sh
fi
if [ -e $VSFTPDROOT/vsftpd.conf.save ]; then
cp $VSFTPDROOT/vsftpd.conf.save $FTP_CONFIG
/bin/sed -i "$ a\listen_port=$FTP_PORT" $FTP_CONFIG
/bin/sed -i '$ a\use_localtime=YES' $FTP_CONFIG
/bin/sed -i "$ a\user_config_dir=$VSFTPDROOT/conf.d" $FTP_CONFIG
else
cp $FTP_CONFIG $VSFTPDROOT/vsftpd.conf.save
/bin/sed -i "$ a\listen_port=$FTP_PORT" $FTP_CONFIG
/bin/sed -i '$ a\use_localtime=YES' $FTP_CONFIG
/bin/sed -i "$ a\user_config_dir=$VSFTPDROOT/conf.d" $FTP_CONFIG
fi
#/etc/pam.d/vsftpd
if [ -e /etc/pam.d/vsftpd.save ]; then
cp /etc/pam.d/vsftpd.save $FTP_PAM
/bin/sed -i '1,8 s/^/#/' $FTP_PAM
/bin/sed -i "$ a\auth required pam_userdb.so db=$VSFTPDROOT/db_login" $FTP_PAM
/bin/sed -i "$ a\account required pam_userdb.so db=$VSFTPDROOT/db_login" $FTP_PAM
else
cp $FTP_PAM /etc/pam.d/vsftpd.save
/bin/sed -i '1,8 s/^/#/' $FTP_PAM
/bin/sed -i "$ a\auth required pam_userdb.so db=$VSFTPDROOT/db_login" $FTP_PAM
/bin/sed -i "$ a\account required pam_userdb.so db=$VSFTPDROOT/db_login" $FTP_PAM
fi
alias cp='cp -i'
chkconfig vsftpd on
service vsftpd restart
cat <<end..
Vsftpd completed ...
*****************************
end..
}
说明:
采用虚拟用户形式,一个帐号一个目录。
WEBROOT 是指定目录
FTP_PORT是指定端口
初始用户密码www/www
配置文件只是简单的处理了一下。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment