
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 -perm
Option nutzen kann.
Die obige Syntax ist Standard, mit Ausnahme des -ls
Teils (üblich, aber nicht POSIX), den Sie -exec ls -disl {} +
auf Systemen, auf denen find
dies 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 zBFreeBSDfind
Ist
find . ! -perm +700
Beide funktionieren auf die gleiche Weise. -perm /700
or -perm +700
stimmt überein, wenn eines der Besitzerberechtigungsbits gesetzt ist; !
negiert dies, also stimmt ! -perm /700
or ! -perm +700
überein, wenn keines der Besitzerberechtigungsbits gesetzt ist. Die anderen Bits werden ignoriert.
Antwort3
Wenn Sie sfind
oder ein beliebiges Programm verwenden libfind
oder 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
.