天天看點

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虛拟多使用者一鍵部署安裝包

繼續閱讀