Linux
是否可以搜尋具有特殊 Linux 文件屬性的文件?
是否可以在 linux 作業系統中搜尋具有特定文件屬性的文件,如下所示:
---S--l---
---S--l--- 1 root root 0 Mar 1004:25/opt/csTuner/iba/wys/tuer_lolk
權限中的S是什麼:
S - 更改同步寫入磁碟;這相當於應用於文件子集的“同步”掛載選項。
我的目標是搜尋在磁碟上同步寫入的文件。
您問題中的範例看起來像
ls -l
輸出,而不是lsattr
輸出。在ls -l
輸出中,第一個欄位是mode,即類型(正常、目錄、符號連結…)和權限。該位置的
S
位意味著setuid
但沒有使用者的執行權限。鑑於使用者/組/其他都沒有執行權限,這沒什麼意義。這l
意味著 setgid 位已設置但未執行。對於正常文件,這意味著啟用了強制鎖定的文件。更有可能的是,該文件是使用錯誤的權限創建的,例如
chmod 6000
而不是chmod 600
.
S
現在,您所指的“同步”位用於lsattr
.如果您
chattr +S file
在 Linux 上執行此操作,則lsattr file
輸出將如下所示:--S----------e-- file
要查找具有此類標誌的文件:
如果文件名不包含換行符,您可以這樣做:
find . ! -type l -exec lsattr -d {} + | sed -n 's/^[^ ]*S[^ ]* //p'
請注意,
S
線上的位置或-------
零件的長度不保證從一個版本e2fsprogs
到下一個版本相同。如果您不能保證文件名不包含換行符,則可以改為:
(find .//. ! -type l -exec lsattr -d {} +; echo //) | sed -ne '/\/\//!{H;d;}' -e 'x; s|^[^ ]*S[^ ]* .//.|./|p'
(每個文件名的開頭將由 標識
.//
)。