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