Répertoriez tous les fichiers appartenant à la racine dans des dossiers non racine

1

Je dois effectuer un audit concernant la suppression des privilèges root d'un serveur. Pour minimiser le risque de casser ou d'aller dans le sens du dodo, je souhaite rechercher tous les fichiers / dossiers appartenant à la racine dans des dossiers non détenus.

Existe-t-il un moyen de rechercher et de répertorier les fichiers tels que:

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

comme

/bin/opt/monit
...

Je vous remercie.

calaedo
la source

Réponses:

1

1

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

Pour chaque répertoire n'appartenant pas à root, une instance distincte findest exécutée qui répertorie les enfants directs appartenant à root.

2

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

Pour chaque fichier appartenant à root, un shell distinct est exécuté, qui teste si le répertoire parent n'appartient pas à root.


Les deux commandes ont des performances différentes. Le premier crée un processus enfant pour chaque répertoire n'appartenant pas à root. La deuxième commande crée deux processus pour chaque fichier appartenant à root. Si vous vous attendez à relativement peu de répertoires de ce type et à de nombreux fichiers, utilisez (1). Si vous vous attendez à de nombreux répertoires et à de tels fichiers, utilisez (2) peut-être.

En général, vous avez généralement plus de fichiers que de répertoires, vous devriez donc préférer (1).

Kamil Maciorowski
la source