讓小白優雅完成vsftpd服務器的平常管理

目錄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

客戶端測試上傳文件

wKioL1T6eAmjWrsoAAG6TAqoS1U528.jpg

wKiom1T6dwng9cLLAANGCR2Pt_c380.jpg

wKioL1T6eJCwAftsAAK7OrhLpGM769.jpg

經驗證,用戶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.」錯誤,以下圖

wKiom1T6d_ChWqIwAAEv_Hs9bqg885.jpg


沒過多久,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用戶進行管理。

相關文章
相關標籤/搜索