Listar todos los archivos propiedad de root en carpetas no root

1

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

¿Hay alguna manera de encontrar y enumerar los 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.

calaedo
fuente

Respuestas:

1

1

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

Para cada directorio que no sea propiedad de root, findse ejecuta un separado que enumera los hijos directos de propiedad de 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 padre 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 de esos archivos, use (1). Si espera muchos de esos directorios y pocos archivos, use (2) quizás.

En general, generalmente tiene más archivos que directorios, por lo que debe preferir (1).

Kamil Maciorowski
fuente