comment trouver des fichiers avec des autorisations incorrectes sur unix?

14

Je cherche un moyen de rechercher un répertoire ou des répertoires et de répertorier tous les fichiers qui ont les mauvaises autorisations pour un répertoire public.

sal
la source

Réponses:

15

Votre question pourrait être formulée plus clairement, en particulier. que voulez-vous dire par «les mauvaises autorisations» pour un répertoire public?

En supposant que vous vouliez que les répertoires soient 755 et les fichiers ordinaires 644, je le ferais comme ceci:

$ find \! -perm 644 -type f -o \! -perm 755 -type d
0x89
la source
Que fait le -o? Cela signifie-t-il quelque chose comme OU?
3
Dans ce cas particulier, RTFM n'est pas une réponse très utile étant donné les multiples niveaux de paramètres de recherche; il est particulièrement déroutant d'essayer de déterminer si le -o est associé à -type ou -perm.
Lighthart
Je me permets d'être en désaccord. La question était "Que fait le -o? Cela signifie-t-il quelque chose comme OU?". Ceci est parfaitement répondu par la page de manuel: "expr1 -o expr2 Or; expr2 n'est pas évalué si expr1 est vrai."
0x89
Btw. votre question sur la priorité est traitée dans le même paragraphe de la page de manuel: "OPÉRATEURS répertoriés par ordre de priorité décroissante" et "Deux expressions consécutives sont considérées comme jointes avec un 'et' implicite; expr2 n'est pas évaluée si expr1 est faux.").
0x89
5

Cela a fonctionné pour moi

find .  \! -perm +755

Le \!drapeau signifie non et l' -permoption utilise les options chmod normales

sal
la source
3

Tout dépend de ce que vous considérez comme une «autorisation incorrecte». man find vous aide en définissant la façon dont vous pouvez rechercher des fichiers / répertoires avec une autorisation donnée:

   -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
la source