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