Grep

為什麼在 POSIX find-grep 中讓這些“Permission Denied”變得可讀?

  • February 9, 2018

我在 Posix 做,find $HOME +perm 0666 -type f -exec grep -l "XSym" {} \;但得到這個我不明白

find: ‘/home/masi/.dbus’: Permission denied
grep: /home/masi/.viminfo: Permission denied
grep: /home/masi/.cache/dconf/user: Permission denied

自從

drwx------  3 root root     4096 Jun 18 14:49 .dbus
-rw-------  1 root root     6266 Jun 18 13:24 .viminfo
-rw------- 1 root root 2 Jun 18 14:51 /home/masi/.cache/dconf/user

我不喜歡! -perm -g+r,u+r,o+r -prune 這裡的雙重否定結構和非 Posix 的東西,我認為它相當於! -perm 0444 -prune.

Kusalananda 修復後的提案

我願意

# http://unix.stackexchange.com/a/121020/16920
find / -type d \! -perm 0666 -prune -o -type f -name '._*' -print

輸出:沒有文件。預期輸出:許多文件和許多適當的文件。我跑

find / -type d \! -perm +0666 -prune -o -type f -name '._*' -print

我明白了

find: invalid mode ‘+0666’

系統:Ubuntu 16.04 64 位

Grep:2.25

查找:4.7.0-git

這些文件和目錄不屬於您,它們屬於使用者,並且對工作root的訪問權限過於嚴格。因此,抱怨不能進入目錄(做它的工作),抱怨不能讀取文件(做它的工作)。find``grep``find``/home/masi/.dbus``grep

這些文件和目錄不屬於您,即使它們位於您的主目錄中。它們反而屬於root使用者的原因很可能是您一直在執行事物(vim和其他事物),root並且這些程序已經創建了文件和目錄。

chown masi:masi您可以使用(masi:masi應替換為您的使用者名和預設組名,查看您的其他文件)更改這些文件和目錄的所有權,但您需root要這樣做,所以使用sudo chown ....

如果您想確保主目錄中的所有文件和目錄都屬於您,請執行sudo chown -R masi:masi $HOME,但首先要確保這確實是您想要的。

編輯:要查找屬於 user的所有文件和目錄$HOME,請執行以下操作:masi

$ find $HOME \! -user masi

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