安全運(yùn)維必看:如何用 find -perm 檢查高危權(quán)限文件?
在日常的Linux系統(tǒng)管理工作中,經(jīng)常需要查找具有特定權(quán)限的文件。這時(shí),我們可以用find命令的-perm選項(xiàng)來(lái)高效地完成這項(xiàng)任務(wù)。這個(gè)功能非常實(shí)用,特別是當(dāng)我們需要進(jìn)行安全檢查的時(shí)候。本文會(huì)用淺顯易懂的方式,詳細(xì)介紹如何使用find命令的-perm選項(xiàng),以及如何通過(guò)實(shí)際案例來(lái)掌握它的使用方法。
一、基本語(yǔ)法
find [查找路徑] -perm [權(quán)限模式]
知識(shí)點(diǎn):
- 查找路徑:要搜索的目錄,. 代表當(dāng)前目錄。
- 權(quán)限模式:需要匹配的權(quán)限,可以是絕對(duì)模式(八進(jìn)制)或符號(hào)模式(符號(hào)權(quán)限)。
在使用find命令時(shí),-perm選項(xiàng)提供了三種不同的表達(dá)方式來(lái)幫助您根據(jù)文件權(quán)限進(jìn)行搜索。
為了方便下面的演示,我準(zhǔn)備了一些文件。這些文件名與其權(quán)限呈對(duì)應(yīng)狀態(tài)。可以通過(guò)如下腳本創(chuàng)建。
#!/bin/bash
# 創(chuàng)建 perm 目錄
mkdir -p perm
# 定義文件名和權(quán)限的對(duì)應(yīng)關(guān)系
files=(
"000"
"001"
"002"
"004"
"005"
"006"
"007"
"010"
"020"
"040"
"050"
"060"
"070"
"100"
"200"
"400"
"440"
"500"
"600"
"644"
"666"
"700"
"755"
"777"
)
# 遍歷文件名列表
for file in "${files[@]}"; do
# 創(chuàng)建文件路徑
filename="perm/${file}.txt"
# 創(chuàng)建文件并寫(xiě)入內(nèi)容
echo -e "$file" > "$filename"
# 設(shè)置文件權(quán)限為文件名中的權(quán)限值
chmod "$file" "$filename"
echo "Created file: $filename with permissions: $file"
done
echo "All files created successfully in the 'perm' directory!"
執(zhí)行上述腳本,會(huì)在指定的目錄下生成如下文件:
二、精確查找
在Linux文件權(quán)限中,每個(gè)權(quán)限由3組數(shù)字(用戶(hù)、組、其他)表示。如下圖所示:
知識(shí)點(diǎn):
- 第一位數(shù)字7:表示文件所有者擁有讀寫(xiě) 執(zhí)行(rwx) 權(quán)限.
- 第二位數(shù)字5:表示文件所屬組擁有讀執(zhí)行(r-x) 權(quán)限.
- 第三位數(shù)字5:表示文件其他組擁有讀執(zhí)行(r-x) 權(quán)限.
有了以上這些基礎(chǔ)知識(shí)后,下面通過(guò)幾個(gè)例子來(lái)鞏固一下:
查找權(quán)限精確匹配 644 的文件:
find . -perm 644
上述命令執(zhí)行后,會(huì)在當(dāng)前目錄匹配出是644權(quán)限的所有文件,如下圖所示:
三、模糊匹配
在模糊匹配情況下,有兩種寫(xiě)法,一種是在權(quán)限加上-,另外一種是在權(quán)限加上/。
1. 所有匹配模式(-前綴)
這兩種模糊匹配有什么區(qū)別呢?下面通過(guò)例子來(lái)闡述:
find . -perm -111
執(zhí)行上述命令后,輸出如下結(jié)果:
通過(guò)觀(guān)察上述結(jié)果發(fā)現(xiàn)-perm -111匹配到兩個(gè)權(quán)限文件分別是755和777。這個(gè)-perm -111表示3個(gè)權(quán)限位必須至少有1。
2. 任意匹配模式(/前綴)
find . -perm /111
執(zhí)行上述命令輸出如下結(jié)果:
相比于使用“-”,采用“/”能夠匹配到更多的文件。這里的“/”類(lèi)似于正則表達(dá)式中的“或”邏輯,這意味著在三個(gè)權(quán)限位中,只要有一個(gè)滿(mǎn)足了匹配條件,那么其他兩個(gè)權(quán)限位就不需要再考慮了。
四、結(jié)合-exec 進(jìn)行批量操作
這個(gè)命令用于查找 /var/www 目錄下權(quán)限為 777 的文件或目錄,并將它們的權(quán)限修改為 755。
find /var/www -perm 777 -exec chmod 755 {} \;
知識(shí)點(diǎn):
- {} 是一個(gè)占位符,表示 find 查找到的每個(gè)文件或目錄的路徑。
- ; 表示 -exec 命令的結(jié)束。