天天看点

vsftp虚拟多用户多权限一键部署脚本

vsftp虚拟多用户多权限一键部署脚本

最近公司需要搭建vsftp服务器,并使用ftp访问。核心要求是:可以根据需要添加多个账号,并且多个账号访问同一个目录时,具有不同的权限。(比如有的账号只允许下载、有的可以上传和下载、有的具有管理员权限)

通过搜索网上资料,发现最简便的方式,便是采用PAM虚拟用户的方式,进行用户管理和用户的权限控制。这种机制,不扰乱linux的本地用户,是最安全的一种方式。

经过各种采坑,最终通过脚本方式,将配置、安装、部署流程固化成shell脚本。

在centos下,只需简单配置shell脚本,即可完成vsftp的虚拟多用户的部署。

贴出部署脚本:

#!/bin/bash 

. ./commonFunction.sh

#公共配置
FTP_USER1="ftpuser1"  #允许上传,下载
FTP_USER1_PASSWD="ftppassword1"
FTP_USER2="ftpuser2"	#只允许下载
FTP_USER2_PASSWD="ftppassword_2"
FTP_DIR="$APPLICATION_HOME/ftpdata"
ADMIN_USER="admin"	#全部权限
ADMIN_PASSWD="[email protected]"
#输出日志

installBase(){
	#创建本地用户ftpuser,home目录指定为$FTP_DIR,用于ftp的虚拟用户文件访问
	mkdir -p $FTP_DIR
	useradd -d $FTP_DIR localftpuser
	chown -R localftpuser $FTP_DIR
	#创建虚拟用户及PAM授权文件
	rm -rf $INSTALL_HOME/ftp/ftp_virtual_users.txt
	cat > $INSTALL_HOME/ftp/ftp_virtual_users.txt <<-EOF
		$FTP_USER1
		$FTP_USER1_PASSWD
		$FTP_USER2
		$FTP_USER2_PASSWD
		$ADMIN_USER
		$ADMIN_PASSWD

	EOF
	db_load -T -t hash -f $INSTALL_HOME/ftp/ftp_virtual_users.txt /etc/vsftpd/vsftpd_login.db
        chmod 600 /etc/vsftpd/vsftpd_login.db
        rm -rf $INSTALL_HOME/ftp/ftp_virtual_users.txt
        cat > /etc/pam.d/vsftpd.vu <<-EOF1
		auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
		account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
	EOF1
	#创建用户权限目录
	mkdir -p /etc/vsftpd/user_permission
	#逐个创建用户的权限
	#创建user1的权限文件
	cat > /etc/vsftpd/user_permission/ftpuser1 <<-EOF
		anon_world_readable_only=NO
		write_enable=YES
		anon_mkdir_write_enable=YES
		anon_upload_enable=YES
		local_root=$FTP_DIR
	EOF
	cat > /etc/vsftpd/user_permission/ftpuser2 <<-EOF
		anon_world_readable_only=NO
		local_root=$FTP_DIR
	EOF
	cat > /etc/vsftpd/user_permission/admin <<-EOF
		anon_world_readable_only=NO
		write_enable=YES
		anon_mkdir_write_enable=YES
		anon_upload_enable=YESi
		anon_other_write_enable=YES
		local_root=$FTP_DIR
	EOF
}

#安装配置FTP
installFTP(){
	{ # try
	  ftp_exist=$(rpm -qa | grep vsftpd | wc -l )
	  if [ $ftp_exist -le 0 ]; then
		  cd $INSTALL_HOME/ftp
		  sysout $1"删除原有的ftp"
		  for i in `rpm -qa | grep -i vsftpd`;
			do
			rpm -e $i --nodeps
			sysout $1$1"删除原有的ftp:$i成功"
		  done
		  sysout $1"安装ftp"
		  rpm -ivh vsftpd-3.0.2-28.el7.x86_64.rpm
		  sysout $1"配置ftp"
		  \cp -a $INSTALL_HOME/ftp/vsftpd.conf /etc/vsftpd/vsftpd.conf
		  #重启vsftpd服务
		  systemctl enable vsftpd.service
		  systemctl restart vsftpd.service
	  else
		  echo "FTP 已存在!"
	  fi
	} || { # catch
	  sysout $1"部署FTP发生错误"
	  exit 0 
	}
}

sysout "配置FTP基础环境"
#installBase "----"
sysout "配置FTP基础环境完成"
#sysout "开始部署FTP"
installFTP "----"
#sysout "部署FTP完成"
sleep 2
exit 0
           

说明:脚本唯一需要更改的地方,是根据需要,在公共配置中,修改ftp用户名和密码。

脚本默认配置了3个用户。如果用户数不够,可以修改脚本,多添加几个用户,并给每个新用户增加权限文件即可。

vsftp虚拟多用户一键部署安装包

继续阅读