linux中vsftpd虚拟用户配置脚本示例

作者:简简单单 2014-08-25

每次新安装服务器后,都要进行一系列的配置,安装软件,修改配置等,为了今后更好的部署vsftpd,特此写了个脚本用于部署
登录FTP有三种方式,匿名登录、本地用户登录和虚拟用户登录。
匿名登录:在登录FTP时使用默认的用户名,一般是ftp或anonymous。
本地用户登录:使用系统用户登录,在/etc/passwd中。
虚拟用户登录:这是FTP专有用户,有两种方式实现虚拟用户,本地数据文件和数据库服务器。
FTP虚拟用户是FTP服务器的专有用户,使用虚拟用户登录FTP,只能访问FTP服务器提供的资源,大大增强了系统的安全。

 代码如下 复制代码
#!/bin/bash
#########################################
######### descprition ##################
# 1.安装vsftpd
# 2.配置vsftpd虚拟化
########################################
#init variables
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
 
ff_outputdir=/tmp/liufofu
curdate=$(date +%Y%m%d)
curtime=$(date +%H%M%S)
ff_logfile=${ff_outputdir}/$$.log
#
if [ ! -e ${ff_outputdir} ];then
    mkdir -p ${ff_outputdir}
fi
 
#处理过程中产生的日志由日志函数来进行处理记录
function log()
{
    echo "`date +"%Y:%m:%d %H-%M-%S"` $1 "  >> ${ff_logfile}
}
 
yum -y install vsftpd
yum -y install db4-utils
#生成vsftpd配置文件
cat > /etc/vsftpd/vsftpd.conf< anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
log_ftp_protocol=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
guest_enable=YES
#guest_username=www
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
user_config_dir=/etc/vsftpd/vuser_conf
userlist_enable=YES
tcp_wrappers=YES
#listen_address=172.20.1.175
#listen_port=21000
virtual_use_local_privs=YES
EOF
log "生成vsftpd配置文件"
#创建虚拟用户目录
if [ ! -e /etc/vsftpd/vuser_conf ];then
    mkdir -p /etc/vsftpd/vuser_conf
fi
log "创建虚拟用户目录"
#创建测试用户的根目录
if [ ! -e /var/www/html/liufofu ];then
     mkdir -p /var/www/html/liufofu
fi
log "创建虚拟用户目录"
#创建测试用户
cat >/etc/vsftpd/vuser_conf/liufofu< local_root=/var/www/html/liufofu
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
EOF
 
#限制虚拟用户的虚根
ls -l /etc/vsftpd/vuser_conf| grep -v total | awk '{print $NF}' > /etc/vsftpd/chroot_list
 
#设置虚拟用户名和密码
cat >/etc/vsftpd/ftplogins.txt< liufofu
liufofu
EOF
 
if [ -f /etc/vsftpd/ftplogins.txt ];then
    chmod 600 /etc/vsftpd/ftplogins.txt
fi
 
#设置vsftpd的虚拟验证方法
if [ $(uname -a | grep x86_64 | wc -l) -eq 1 ];then
cat >/etc/pam.d/vsftpd< #%PAM-1.0
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd
EOF
else
cat >/etc/pam.d/vsftpd< #%PAM-1.0
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd
EOF
fi
log "设置vsftpd的虚拟验证方法"
#建立vsftpd的宿主用户
if [ $(grep vsftpd /etc/passwd) -lt 1 ];then
    useradd vsftpd -s /sbin/nologin
    usermod -a -G www vsftpd
fi
log "建立vsftpd的宿主用户"
 
db_load -T -t hash -f /etc/vsftpd/ftplogins.txt /etc/vsftpd/vsftpd.db
log "生成虚拟用户数据库"
#启动vsftpd
service vsftpd start

相关文章

精彩推荐