Enumere todos los archivos de propiedad raíz en carpetas no raíz

Enumere todos los archivos de propiedad raíz en carpetas no raíz

Tengo que hacer una auditoría sobre la eliminación de privilegios de root para un servidor. Para minimizar el riesgo de que algo se rompa o siga el camino del dodo, quiero buscar todos los archivos/carpetas de propiedad raíz dentro de carpetas que no son de propiedad raíz.

¿Hay alguna manera de buscar y enumerar archivos como:

> ls -la
drwxr-xr-x. 24 admin users     4096 Sep 27 12:53 .      [non root folder]
dr-xr-xr-x. 28 root root       4096 Mar 15  2017 ..
drwxrwxr-x.  2 admin users     4096 Sep 27 13:00 bin
drwxr-xr-x.  6 root  root      4096 Feb  9  2017 monit  [root file/folder]

como

/bin/opt/monit
...

Gracias.

Respuesta1

1

find /starting/path -type d ! -user root -exec find {} -maxdepth 1 -user root \;

Para cada directorio que no es propiedad de root, findse ejecuta un directorio separado que enumera los elementos secundarios directos que pertenecen a root.

2

find /starting/path -user root -execdir sh -c 'test `stat -c %U ./` != root' \; -print

Para cada archivo propiedad de root, se ejecuta un shell separado que prueba si el directorio principal no es propiedad de root.


Los dos comandos tienen un rendimiento diferente. El primero crea un proceso hijo para cada directorio que no sea propiedad de root. El segundo comando crea dos procesos para cada archivo propiedad de root. Si espera relativamente pocos directorios de este tipo y muchos archivos de este tipo, utilice (1). Si espera muchos directorios de este tipo y pocos archivos de este tipo, utilice (2) tal vez.

En general, suele tener más archivos que directorios, por lo que debería preferir (1).

información relacionada