一件安装vsftpd虚拟用户的脚本--大家提提建议
时间:2008-09-05 来源:pop_star
|
# 自动话安装虚拟用户的ftp脚本
# 使用该脚本前,请确保机器网络通畅, 请确保机器本身没有安装vsftpd
# 测试用户名和密码均为 test
# 软件基础: vsftpd-2.0.5.tar.gz on ftp://vsftpd.beasts.org/users/cevans/
# 日期: 2008-09-04
# 作者: 飞龙
# QQ: 76790859 # 定义相关变量
VAR(){
export user_cf_dir="/etc/vsftpd_user_conf"
export ftp_root_dir="/var/ftpvu/testftp"
} # 拷贝原始配置文件为备份配置文件
cf_bak(){
cp vsftpd.conf /etc/vsftpd.conf.bak
} # 生成指定配置文件
cf_file(){
echo -e 'local_enable=YES
anon_umask=070
chown_uploads=YES
chown_username=ftpguest
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
connect_from_port_20=YES
listen=YES
guest_enable=YES
guest_username=ftpguest
pam_service_name=ftp.vu
user_config_dir=/etc/vsftpd_user_conf'>/etc/vsftpd.conf
} # 生成虚拟用户所需要的pam文件
pam_file(){
echo -e 'auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login'>/etc/pam.d/ftp.vu
} # 生成vsftpd启动脚本
service_file(){
echo -e '. /etc/rc.d/init.d/functions . /etc/sysconfig/network [ ${NETWORKING} = "no" ] && exit 0 [ -x /usr/local/sbin/vsftpd ] || exit 0 RETVAL=0
prog="vsftpd" start() {
if [ -f /etc/vsftpd.conf ] ; then
for i in vsftpd.conf ; do
site=`basename $i`
echo -n $"Starting $prog for $site: "
/usr/local/sbin/vsftpd /etc/$i &
RETVAL=$?
[ $RETVAL -eq 0 ] && {
touch /var/lock/subsys/$prog
success $"$prog $site"
}
echo
done
else
RETVAL=1
fi
return $RETVAL
} stop() {
echo -n $"Shutting down $prog: "
killproc $prog
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
return $RETVAL
} case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
RETVAL=$?
;;
condrestart)
if [ -f /var/lock/subsys/$prog ]; then
stop
start
RETVAL=$?
fi
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
exit 1
esac exit $RETVAL'>/etc/init.d/vsftpd chmod 755 /etc/init.d/vsftpd
} # 生成login.txt文件
login_file(){
touch $user_cf_dir/login.txt
} VAR # 获得安装包
wget -c ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.5.tar.gz
# 安装软件包
tar -zxvf vsftpd-2.0.5.tar.gz
cd vsftpd-2.0.5
make && make install # 生成相关目录
for dir in $user_cf_dir $ftp_root_dir
do
if [ ! -d $dir ] ; then
mkdir -p $dir
fi
done CF_FILES=(1=/etc/vsftpd.conf.bak \
2=/etc/vsftpd.conf \
3=/etc/pam.d/ftp.vu \
4=/etc/init.d/vsftpd \
5=$user_cf_dir/login.txt) for file_name in ${CF_FILES[@]}
do
FILE=`echo $file_name | cut -d= -f2`
if [ ! -f $FILE ] ; then
NO=`echo $file_name | cut -d= -f1`
case $NO in
1)
cf_bak
;;
2)
cf_file
;;
3)
pam_file
;;
4)
service_file
;;
5)
login_file
esac
fi
done # 添加一个ftp用户
id ftpguest
if [ $? != "0" ] ; then
useradd -s /sbin/nologin ftpguest
fi # 生成用户测试用户文件
echo -e 'test
test'>$user_cf_dir/login.txt # 生成用户名和密码文件
db_load -T -t hash -f $user_cf_dir/login.txt /etc/vsftpd_login.db
chmod 600 /etc/vsftpd_login.db unset user_cf_dir
unset ftp_root_dir exit 0
相关阅读 更多 +