Liste todos os arquivos de propriedade raiz em pastas não raiz

Liste todos os arquivos de propriedade raiz em pastas não raiz

Tenho que fazer uma auditoria relativa à remoção de privilégios de root de um servidor. Para minimizar o risco de algo quebrar ou seguir o caminho do dodô, quero procurar todos os arquivos/pastas de propriedade do root dentro de pastas que não sejam de propriedade do root.

Existe uma maneira de localizar e listar os arquivos 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
...

Obrigado.

Responder1

1

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

Para cada diretório que não pertence ao root, findé executado um separado que lista os filhos diretos de propriedade do root.

2

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

Para cada arquivo pertencente ao root, é executado um shell separado que testa se o diretório pai não pertence ao root.


Os dois comandos têm desempenho diferente. O primeiro cria um processo filho para cada diretório que não pertence ao root. O segundo comando cria dois processos para cada arquivo pertencente ao root. Se você espera relativamente poucos diretórios e muitos arquivos, use (1). Se você espera muitos desses diretórios e poucos arquivos, use (2) talvez.

Em geral você costuma ter mais arquivos do que diretórios, então você deve preferir (1).

informação relacionada