【程序猿硬核科普】由最近的刪庫事件聯想到的一些見解 | 更改rm命令實現Linux下的回收站機制

最近的刪庫事件鬧得沸沸揚揚,趕忙上B乎看了看,吃吃瓜,同時也看了點DBA相關知識,跟你們分享下,順便寫個腳本更改rm命令實現Linux下的回收站機制。前端

數據安全保障體系建設linux

如何有效避免和減小相似事件的影響,如下是部分安全保障體系建設的建議:面試

一、帳戶分等級、分權限、分體系設定shell

好比研發人員沒法對數據庫自己進行操做,只能經過頁面級的控制檯進行數據項的更新及簡單運維操做,部分敏感表或數據項的操做需主管審批。數據庫

二、生產環境管理制度編程

確保每一步操做都被執行規範,並被歸入監管。好比通常技術人員訪問生產環境,只能指定機器、指定帳號進行登陸,且部分登陸需執行主管審批流程。vim

三、機房管理制度安全

四、備份機制bash

不一樣級別、不一樣維度的備份機制,尤爲是核心數據,至少保障2~3份以上的異機、異地備份。服務器

五、數據快照機制

強制執行數據快照,通常人員沒法直接修改或干預。

六、實時監控與告警

好比利用大數據和AI,實現智能風控,當頻繁涉及對敏感數據的操做時,給予告警、暫停(5~30分鐘)、走審批等流程的風控策略。

七、安全意識和警示培訓

不按期進行宣傳和警示培訓,尤爲是真實案例的宣講。

八、線上安全考覈

由公司自主出題,以多個單選題和多選題的形式進行線上的全員考試。這種制度其實在一些大廠已經很日常了,好比你們衆所周知的幾家互聯網巨頭。

做者:賀定圓

連接:https://www.zhihu.com/questio...

來源:知乎

實現Linux下的回收站機制

大體思路:寫一個腳本代替rm命令,做用是執行rm命令時候將文件移動到回收站(一個指定的文件夾),再到.bashrc文件設置別名代替rm命令,以後設置定時任務按期清理回收站

. bashrc文件的做用:主要保存我的的一些個性化設置,如命令別名、路徑等。也即在同一個服務器上,只對某個用戶的個性化設置相關。每次修改.bashrc後,使用source ~/.bashrc(或者 . ~/.bashrc)就能夠馬上加載修改後的設置,使之生效。通常會在.bash_profile文件中顯式調用.bashrc。登錄linux啓動bash時首先會去讀取~/.bash_profile文件,這樣~/.bashrc也就獲得執行了,用戶的個性化設置也就生效了。

一、創建一個隱藏的回收站文件夾

mkdir ~/.recycleBin

二、編寫回收站腳本recycleBin.sh

#!/bin/bash 
if [[ $1 != '/' && $1 ]];then 
    mv $1 ~/.recycleBin/ 
    echo '['$1'] put into the recycle bin!'; 
else 
    echo 'false:can not rm /'; fi

賦予腳本可執行權限

chmod a+x recycleBin.sh

三、實現rm 命令和recycleBin.sh腳本的綁定

vim ~/.bashrc

alias命令用來設置指令的別名,至關於執行rm,實際執行的是recycleBin.sh

輸入source ~/.bashrc命令使別名當即生效。

而後咱們測試一下,試着用rm刪除一個文件,再到回收站文件夾看看

四、編寫crontab任務每週一清理回收站中7天前的文件

0 3 * * 1 find ~/.recycleBin/ -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1

alias 拓展小知識:

細心的讀者可能發現了,在自動清理回收站文件的命令中:用到了rm命令,這不是被咱們改爲了移動文件命令了嗎,這樣作還能實現清理回收站的功能嗎?答案是:能!

由於交互模式下alias 擴展默認是開啓的,腳本模式下默認是關閉的。

若是須要在腳本中使用別名,須要先執行:source ~/.bash_rc

檢查默認狀況下shell腳本中是否開啓alias擴展:

shopt expand_aliases

shell中開啓alias擴展:

shopt -s  expand_aliases

*使用safe-rm替代不安全的rm*

若是感受以上步驟比較繁瑣,有一個簡單的方法,實現上面的基本功能,安裝safe-rm,步驟以下:

1.下載

官網下載地址:https://launchpad.net/safe-rm

2.安裝

    ①解壓safe-rm

tar -zxf safe-rm-0.12.tar.gz

    ②複製safe-rm到/usr/local/bin目錄下

cp safe-rm-0.12/safe-rm   /usr/local/bin/rm

3.添加環境變量

vim /etc/profile

在最後一行添加

PATH=/usr/local/bin:$PATH

保存後使其生效

source /etc/profile

4.配置

配置路徑黑名單

vim /etc/safe-rm.conf
#添加要刪除的路徑按行分隔
/
/*
/bin
/boot
/dev
/etc
/home
/initrd
/lib
/proc
/root
/sbin
/sys
/usr
/usr/bin
/usr/include
/usr/lib
/usr/local
/usr/local/bin
/usr/local/include
/usr/local/sbin
/usr/local/share
/usr/sbin
/usr/share
/usr/src
/var

5.測試

測試刪除test文件夾

mkdir /root/test

顯示沒法刪除

safe-rm: skipping /root/test

參考文章

一、微盟系統被員工刪庫,這事到底有多嚴重?賀定圓的回答 - 知乎

https://www.zhihu.com/questio...

二、Linux 下回收站機制:

https://cloud.tencent.com/dev...

三、Linux 終端命令 rm 刪除的文件進入回收站實現方法:

https://www.iteye.com/blog/ye...

祝君工做順利,加油。

    【程序猿硬核科普】系列是利用晚上閒暇時間在半小時到一小時以內完成的科普類型文章,有不明白的就去搜資料,學習完就作筆記,旨在克服拖延症。文章可能多有疏漏之處,敬請指正!

浩Coding公衆號

Java、數據庫、前端相關

【程序猿硬核科普】系列

2020面試寶典、Linux教程

長按識別二維碼關注

往期精彩回顧

【程序猿硬核科普】Linux下Shell編程雜記 

【程序猿硬核科普】推薦一款十分好用的終端工具XShell及其使用教程

Linux命令之Crontab——定時任務

2020Java面試寶典 -- JavaSE基礎篇

你點的每一個贊,我都認真當成了喜歡

相關文章
相關標籤/搜索