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, find
se 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).