¿Cómo encontrar archivos con permisos incorrectos en Unix?

14

Estoy buscando una manera de buscar un directorio o directorios y enumerar todos los archivos que tienen los permisos incorrectos para un directorio público.

sal
fuente

Respuestas:

15

Su pregunta podría formularse más claramente, especialmente. ¿Qué quiere decir con "los permisos incorrectos" para un directorio público?

Suponiendo que desea que los directorios sean 755 y que los archivos normales sean 644, lo haría así:

$ find \! -perm 644 -type f -o \! -perm 755 -type d
0x89
fuente
¿Qué hace el -o? ¿Significa algo como OR?
3
En este caso particular, RTFM no es una respuesta muy útil dados los múltiples niveles de configuración de búsqueda; es particularmente confuso tratar de averiguar si el -o está asociado con -type o -perm.
Lighthart
Me permito estar en desacuerdo. La pregunta era "¿Qué hace el -o? ¿Significa algo como OR?". La página del manual responde perfectamente a esto: "expr1 -o expr2 O; expr2 no se evalúa si expr1 es verdadero".
0x89
Por cierto. su pregunta sobre la precedencia se maneja en el mismo párrafo de la página de manual: "OPERADORES listados en orden de precedencia decreciente" y "Se toman dos expresiones en una fila para unirse con un 'y' implícito; expr2 no se evalúa si expr1 es falso.").
0x89
5

Esto funciono para mi

find .  \! -perm +755

La \!bandera significa no y la -permopción usa las opciones normales de chmod

sal
fuente
3

Todo depende de lo que consideres 'permiso incorrecto'. man find le ayuda a definir la forma en que puede buscar archivos / directorios con el permiso dado:

   -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
fuente