Wie „findet“ man alle Dateien und Ordner mit 0**-Berechtigungen?

Wie „findet“ man alle Dateien und Ordner mit 0**-Berechtigungen?

Ich hatte eine seltsame Situation, in der ich eine Reihe von Dateien und Ordnern gefunden habe, für die die Berechtigung 000 festgelegt war. Dies ließ sich leicht reparieren:

sudo find . -perm 000 -type f -exec chmod 664 {} \; 
sudo find . -perm 000 -type d -exec chmod 775 {} \;

Leider wurde mir plötzlich klar, dass das Problem etwas komplizierter war und einige seltsame Berechtigungen wie 044 und einige andere seltsame Einstellungen enthielt. Es stellte sich heraus, dass diese verstreut und unvorhersehbar sind.

Gibt es eine Möglichkeit, nach Berechtigungen wie 0** oder anderen sehr einschränkenden Berechtigungskonfigurationen zu suchen?

Antwort1

Ich würde so etwas verwenden:

find . ! -perm -u=r ! -perm -u=w ! -perm -u=x -ls

Oder wenn Sie die Oktalnotation bevorzugen:

find . ! -perm -400 ! -perm -200 ! -perm -100 -ls

Leider keine Idee, wie ich das als eine -permOption nutzen kann.

Die obige Syntax ist Standard, mit Ausnahme des -lsTeils (üblich, aber nicht POSIX), den Sie -exec ls -disl {} +auf Systemen, auf denen finddies nicht unterstützt wird , durch ersetzen können -ls, um eine ähnliche Ausgabe zu erhalten.

Antwort2

MitGNUfind, können Sie dies tun, indem Sie nach Dateien suchen, bei denen „kein Bit für den Eigentümer gesetzt“ ist:

find . ! -perm /700

Das gleiche gilt zBFreeBSDfindIst

find . ! -perm +700

Beide funktionieren auf die gleiche Weise. -perm /700or -perm +700stimmt überein, wenn eines der Besitzerberechtigungsbits gesetzt ist; !negiert dies, also stimmt ! -perm /700or ! -perm +700überein, wenn keines der Besitzerberechtigungsbits gesetzt ist. Die anderen Bits werden ignoriert.

Antwort3

Wenn Sie sfindoder ein beliebiges Programm verwenden libfindoder wenn Sie verwenden BSD find, dürfen Sie Folgendes verwenden:

find path -perm +0xxx

um Dateien zu finden, bei denen eines der im Muster genannten Bits gesetzt ist, also

find . ! -perm +0700

sollte in Ihrem Fall funktionieren. Übrigens: Dies wird auch unterstützt von GNU find.

Beachten Sie, dass dies eine Erweiterung ist, die weder in POSIX erwähnt noch in einem SVr4-basierten implementiert ist find.

verwandte Informationen