Wie finde ich Dateien mit falschen Berechtigungen unter Unix?

14

Ich suche nach einer Möglichkeit, ein Verzeichnis oder Verzeichnisse zu durchsuchen und alle Dateien aufzulisten, die die falschen Berechtigungen für ein öffentliches Verzeichnis haben.

sal
quelle

Antworten:

15

Ihre Frage könnte klarer formuliert werden. Was meinst du mit "den falschen Berechtigungen" für ein öffentliches Verzeichnis?

Angenommen, Sie möchten, dass die Verzeichnisse 755 und die normalen Dateien 644 sind, dann würde ich das so machen:

$ find \! -perm 644 -type f -o \! -perm 755 -type d
0x89
quelle
Was macht das -o? Bedeutet es so etwas wie ODER?
3
In diesem speziellen Fall ist RTFM keine sehr hilfreiche Antwort, da es mehrere Ebenen mit Einstellungen für Suchvorgänge gibt. Es ist besonders verwirrend herauszufinden, ob das -o mit -type oder -perm assoziiert ist.
Lighthart
Ich erlaube mir, nicht zuzustimmen. Die Frage lautete: "Was macht das -o? Bedeutet es so etwas wie ODER?". Dies wird von der Manpage perfekt beantwortet: "expr1 -o expr2 Oder: expr2 wird nicht ausgewertet, wenn expr1 wahr ist."
10.11.15 Uhr,
Btw. Ihre Frage zur Rangfolge wird im selben Absatz der Manpage behandelt: "OPERATOREN nach abnehmender Rangfolge aufgelistet" und "Zwei Ausdrücke in einer Reihe werden verwendet, um mit einem implizierten 'und' verbunden zu werden; expr2 wird nicht ausgewertet, wenn expr1 ist falsch.").
0x89
5

Das hat bei mir funktioniert

find .  \! -perm +755

Das \!Flag bedeutet nicht und die -permOption verwendet die normalen chmod-Optionen

sal
quelle
3

Alles hängt davon ab, was Sie als "falsche Erlaubnis" betrachten. Mit man find können Sie festlegen, wie nach Dateien / Verzeichnissen mit der angegebenen Berechtigung gesucht werden soll:

   -perm -mode
          All of the permission bits mode are set for the file.  Symbolic modes are
          accepted in this form, and this is usually the way in which would want to
          use them.  You must specify ‘u’, ‘g’ or ‘o’ if you use a  symbolic  mode.
          See the EXAMPLES section for some illustrative examples.

   -perm /mode
          Any of the permission bits mode are set for the file.  Symbolic modes are
          accepted in this form.  You must specify ‘u’, ‘g’ or ‘o’  if  you  use  a
          symbolic  mode.  See the EXAMPLES section for some illustrative examples.
          If no permission bits in mode are set, this test matches  any  file  (the
          idea here is to be consistent with the behaviour of -perm -000).

   -perm +mode
          Deprecated,  old  way  of  searching for files with any of the permission
          bits in mode set.  You should use -perm /mode instead. Trying to use  the
          ‘+’  syntax with symbolic modes will yield surprising results.  For exam‐
          ple, ‘+u+x’ is a valid symbolic mode (equivalent to +u,+x, i.e. 0111) and
          will  therefore  not be evaluated as -perm +mode but instead as the exact
          mode specifier -perm mode and so it matches files with exact  permissions
          0111  instead of files with any execute bit set.  If you found this para‐
          graph confusing, you’re not alone - just use -perm /mode.  This  form  of
          the -perm test is deprecated because the POSIX specification requires the
          interpretation of a leading ‘+’ as being part of a symbolic mode, and  so
          we switched to using ‘/’ instead.

asdmin
quelle