Files

如何在特定文件夾中找到我沒有寫入權限的所有文件?

  • January 6, 2021

如何找到我無法寫入的所有文件?

如果考慮到標準權限和 acls 會很好。

有沒有“簡單”的方法,還是我必須自己解析權限?

嘗試

find . ! -writable

該命令find返回文件列表,-writable僅過濾您具有寫入權限的文件,並!反轉過濾器。

-type f如果您想忽略目錄和其他“特殊文件”,您可以添加。

在非 Linux 系統和沒有 GNUfind的系統上,以下可能會給出與 相同的輸出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 ')' ')'

四個測試順序:

  1. 是普通文件嗎?
  2. 它是我擁有但我沒有寫入權限的文件嗎?
  3. 它是不是我不擁有但屬於我的組且我沒有組寫入權限的文件?
  4. 它是不是我不擁有且不屬於我的組且我沒有一般(“其他”)寫入權限的文件?

這樣做的好處是您可以替換為另一個使用者的名稱和組,我認為 GNUfind不允許-writable您這樣做。


相同的命令,但邏輯以 AND 形式編寫:

find . -type f \
   ! '('   -user "$myname"                     -perm -u=w ')' \
   ! '(' ! -user "$myname"   -group "$mygroup" -perm -g=w ')' \
   ! '(' ! -user "$myname" ! -group "$mygroup" -perm -o=w ')'

引用自:https://unix.stackexchange.com/questions/425205