目錄shell
一、vsftpd使用場景回顧及需求的產生vim
二、功能管理細分安全
三、規劃腳本bash
四、腳本的實現服務器
4.一、增長僅可下載權限用戶腳本編輯器
4.二、增長可上傳權限用戶腳本ide
4.三、用戶權限變動腳本測試
4.四、刪除用戶腳本ui
五、測試spa
六、總結
一、vsftpd使用場景回顧及需求的產生
在前邊的博文中已把公司對vsftpd的需求及搭建過程進行了整理(博文地址:http://zhaochj.blog.51cto.com/368705/1614030),對熟悉Linux系統的管理員來講維護這套系統就是一盤小菜。概括起來就是當公司人員有變更時vsftpd的管理員需求對vsftpd服務器的訪問用戶進行新增、刪除、權限改變、鎖定用戶、解除鎖定等操做,這些操做都是屬於Linux系統管理的知識,簡單的幾個命令就能完美的完成管理工做。但當不得不把此套系統交換給其餘人員來管理,而他又對Linux系統不熟悉,看到字符操做就頭疼,連簡單的文本文本編輯器(vim)操做都不會,讓他來管理此套系統顯然是不合適的。因此我計劃把對vsftpd的平常管理用幾個簡單的腳原本實現,讓vsftpd的管理者即使是在不瞭解Linux系統的操做的狀況下也能在幾分鐘的培訓後完成vsftpd服務器的平常管理。
從上次搭建vsftpd的博文中可知,屬於「group-r」組中的用戶只能下載資料,屬於「group-w」組中的用戶能夠上傳資料;對全部vsftpd用戶都就限定在指定的根目錄,可不能隨意變換目錄,這是爲了安全性的須要,因此vsftpd用戶都得在「/etc/vsftpd/chroot_list」這文件中存在;對鎖定用戶時需求把用戶名寫入到「/etc/vsftpd/ftpusers」文件中,工解除鎖定時則須要把這個用戶名移除。
二、功能管理細分
梳理一下vsftpd服務器平常管理所須要的操做:
第一:一新同事入職,會根據此同事的角色添加用戶並給予相應的可上傳、下載的權限;
第二:項目部中原是項目經理職位的用戶因表現不佳,職位被降級爲現場管理人員或是普通員工;而一個普通的員工在項目上成長很快,公司決定把他升職爲項目經理,因此涉及到vsftpd用戶權限的改變,從擁有可上傳權限的用戶降級爲只有下載的權限,也有多是從只有下載權限升級爲擁有上傳權限;
第三:若是一同事生病、請假等狀況,爲了管理上的須要及數據的安全性須要,需對此用戶在請假期間不能登錄vsftpd服務器;而假期結束回到公司後,則須要開放vsftpd服務器的登錄權限,因此會涉及到鎖定用戶及解除鎖定的操做;
第四:某員工辭職了,那他的vsftpd登錄用戶是須要刪除的。
三、規劃腳本
準備建立5個腳本:
第一個腳本完成新增僅有下載權限的用戶,腳本名稱爲「adduser-r.sh」;
第二個腳本完成新增擁有上傳權限的用戶,腳本名稱爲「adduser-w.sh」;
第三個腳本完成用戶下載、上傳權限的變動,腳本名稱爲「chusergp.sh」;
第四個腳本完成用戶的刪除,腳本名稱爲「deluser.sh」;
第五個腳本完成用戶的鎖定、解除鎖定操做,腳本名稱爲「limituser.sh」。
[root@LCKJ-ftpserver ftpmanagementtool]# pwd /root/bin/ftpmanagementtool [root@LCKJ-ftpserver ftpmanagementtool]# ls adduser-r.sh adduser-w.sh chusergp.sh deluser.sh limituser.sh
四、腳本的實現
4.一、增長僅可下載權限用戶腳本
[root@LCKJ-ftpserver ftpmanagementtool]# vim adduser-r.sh #!/bin/sh #Description: This shell script increase the read-only user. #Author: zhaochj #Time: 2015-3-6 #Version: 1.0 #Processname: adduser-r.sh SHELL=/sbin/nologin GROUP=group-r read -p "Enter add read-only username: " USERNAME /usr/sbin/useradd -s $SHELL -G $GROUP $USERNAME read -p "Enter $USERNAME password: " PASSWD echo $PASSWD | /usr/bin/passwd --stdin $USERNAME > /dev/null echo "$USERNAME" >> /etc/vsftpd/chroot_list echo "Read-only user $USERNAME create success."
4.二、增長可上傳權限用戶腳本
[root@LCKJ-ftpserver ftpmanagementtool]# vim adduser-w.sh #!/bin/sh #Description: This shell script increase the write user. #Author: zhaochj #Time: 2015-3-6 #Version: 1.0 #Processname: adduser-w.sh SHELL=/sbin/nologin GROUP=group-w read -p "Enter add write username: " USERNAME /usr/sbin/useradd -s $SHELL -G $GROUP $USERNAME read -p "Enter $USERNAME password: " PASSWD echo $PASSWD | /usr/bin/passwd --stdin $USERNAME > /dev/null echo "$USERNAME" >> /etc/vsftpd/chroot_list echo "Write user $USERNAME create success."
4.三、用戶權限變動腳本
[root@LCKJ-ftpserver ftpmanagementtool]# vim chusergp.sh #!/bin/sh #Description: This shell script change user group. #Author: zhaochj #Time: 2015-3-6 #Version: 1.0 #Processname: chusergp.sh read -p "Enter the user name you want to change group: " USERNAME read -p "Please select the group you want [group-r|group-w]: " GROUP /usr/sbin/usermod -G $GROUP $USERNAME
4.四、刪除用戶腳本
[root@LCKJ-ftpserver ftpmanagementtool]# vim deluser.sh #!/bin/sh #Description: This shell script delete user. #Author: zhaochj #Time: 2015-3-6 #Version: 2.0 #Processname: deluser.sh CHROOT_LIST=/etc/vsftpd/chroot_list read -p "Enter you delete username: " USERNAME id $USERNAME | egrep "\<group-r\>|\<group-w\>" > /dev/null return=$? if [ $return -eq 0 ];then echo "The $USERNAME is a vsftp user." else echo "The $USERNAME is not a vsftp user." echo "Warning: Please check your user." exit 4 fi read -p "Do you really want to delete $USERNAME user? [y|n]: " CHOSE if [ $CHOSE == 'y' -o $CHOSE == 'Y' ];then /usr/sbin/userdel -r $USERNAME /bin/sed -i "/$USERNAME/d" $CHROOT_LIST echo "User $USERNAME has been deleted." else exit 6 fi
4.五、用戶鎖定、解除鎖定腳本
[root@LCKJ-ftpserver ftpmanagementtool]# vim limituser.sh #!/bin/sh #Description: This shell script LOCK or UNLOCK user. #Author: zhaochj #Time: 2015-3-6 #Version: 1.0 #Processname: limituser.sh LOCKFILE=/etc/vsftpd/ftpusers read -p "Type do you want to LOCK or UNLOCK user name: " USERNAME read -p "Please select operation option [lock|unlock]: " OPTION if [ $OPTION == lock ];then echo "$USERNAME" >> $LOCKFILE elif [ $OPTION == unlock ];then /bin/sed -i "/$USERNAME/d" $LOCKFILE else echo "Warning: Your input is wrong!" exit 10 fi
最後再給這5個腳本可執行權限,並僅把腳本所在目錄增長進PATH環境中
[root@LCKJ-ftpserver ftpmanagementtool]# chmod +x ./* [root@LCKJ-ftpserver ftpmanagementtool]# vim /etc/profile.d/ftpmanagementtool.sh export PATH=$PATH:/root/bin/ftpmanagementtool [root@LCKJ-ftpserver ftpmanagementtool]# source /etc/profile.d/ftpmanagementtool.sh
至此,5個腳本建立完畢。
五、測試
新增長一個擁有上傳權限的用戶:
[root@LCKJ-ftpserver ~]# adduser-w.sh Enter add write username: test Enter test password: 111111 Write user test create success.
檢測用戶是否增長成功:
[root@LCKJ-ftpserver ~]# id test uid=510(test) gid=510(test) 組=510(test),502(group-w) [root@LCKJ-ftpserver ~]# cat /etc/vsftpd/chroot_list | grep test test
客戶端測試上傳文件
經驗證,用戶test是能夠正常上傳文件的。
有一天test用戶從項目經理被貶爲現場的實施人員了,權限也得收回來,只能讓他擁有下載的權限,那運行「chusergp.sh」腳本:
[root@LCKJ-ftpserver ~]# id test uid=510(test) gid=510(test) ×é=510(test),502(group-w) [root@LCKJ-ftpserver ~]# chusergp.sh Enter the user name you want to change group: test Please select the group you want [group-r|group-w]: group-r [root@LCKJ-ftpserver ~]# id test uid=510(test) gid=510(test) ×é=510(test),501(group-r)
這樣test用戶就只有下載資料的權限了。
若是有一天test用戶請假了,那就鎖定此用戶,運行「limituser.sh」腳本:
[root@LCKJ-ftpserver ~]# grep test /etc/vsftpd/ftpusers [root@LCKJ-ftpserver ~]# limituser.sh Type do you want to LOCK or UNLOCK user name: test Please select operation option [lock|unlock]: lock [root@LCKJ-ftpserver ~]# grep test /etc/vsftpd/ftpusers test
這樣test用戶就被寫入到了/etc/vsftpd/ftpusers這個文件,如今此用戶就被鎖定沒法登錄vsftp服務器,鏈接服務器時會報「503 Permission denied.」錯誤,以下圖
沒過多久,test用戶回到了工做崗位,那就解除鎖定吧,依然運行「limiuser.sh」腳本:
[root@LCKJ-ftpserver ~]# limituser.sh Type do you want to LOCK or UNLOCK user name: test Please select operation option [lock|unlock]: unlock [root@LCKJ-ftpserver ~]# grep test /etc/vsftpd/ftpusers [root@LCKJ-ftpserver ~]#
就樣test用戶又能夠愉快的工做了。
若是有一天test用戶辭職了呢,那就運行「deluser.sh」腳原本刪除此用戶:
[root@LCKJ-ftpserver ~]# deluser.sh Enter you delete username: test The test is a vsftp user. Do you really want to delete test user? [y|n]: y User test has been deleted. [root@LCKJ-ftpserver ~]# id test id: test:無此用戶
六、總結
有需求才有實現,有實現才能提高本身的專業技能,沒有需求也要創造需求來鍛鍊、提高本身。經過這幾個腳本的實現,對vsftp管理員的要求降到的極致,只要他能正常的鏈接vsftp服務器,簡單的輸入幾個腳本的名稱,根據腳本的提示信息就能很好的對vsftp用戶進行管理。