Files
如何在特定文件夾中找到我沒有寫入權限的所有文件?
如何找到我無法寫入的所有文件?
如果考慮到標準權限和 acls 會很好。
有沒有“簡單”的方法,還是我必須自己解析權限?
嘗試
find . ! -writable
該命令
find
返回文件列表,-writable
僅過濾您具有寫入權限的文件,並!
反轉過濾器。
-type f
如果您想忽略目錄和其他“特殊文件”,您可以添加。
在非 Linux 系統和沒有 GNU
find
的系統上,以下可能會給出與 相同的輸出find . -type f ! -writable
,但是它沒有考慮次要組。myname=$( id -un ) mygroup=$( id -gn ) find . -type f '(' \ '(' -user "$myname" ! -perm -u=w ')' -o \ '(' ! -user "$myname" -group "$mygroup" ! -perm -g=w ')' -o \ '(' ! -user "$myname" ! -group "$mygroup" ! -perm -o=w ')' ')'
四個測試順序:
- 是普通文件嗎?
- 它是我擁有但我沒有寫入權限的文件嗎?
- 它是不是我不擁有但屬於我的組且我沒有組寫入權限的文件?
- 它是不是我不擁有且不屬於我的組且我沒有一般(“其他”)寫入權限的文件?
這樣做的好處是您可以替換為另一個使用者的名稱和組,我認為 GNU
find
不允許-writable
您這樣做。相同的命令,但邏輯以 AND 形式編寫:
find . -type f \ ! '(' -user "$myname" -perm -u=w ')' \ ! '(' ! -user "$myname" -group "$mygroup" -perm -g=w ')' \ ! '(' ! -user "$myname" ! -group "$mygroup" -perm -o=w ')'