1

Я должен сделать аудит, касающийся удаления корневых привилегий для сервера. Чтобы свести к минимуму риск того, что что-то сломается или пойдет по пути додо, я хочу найти все файлы / папки, принадлежащие root, в папках, не принадлежащих root.

Есть ли способ найти и перечислить файлы, такие как:

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

как

/bin/opt/monit
...

Спасибо.

1 ответ1

1

1

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

Для каждого каталога, не принадлежащего root, выполняется отдельная find в которой перечисляются прямые дочерние объекты, принадлежащие root.

2

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

Для каждого файла, принадлежащего пользователю root, выполняется отдельная оболочка, которая проверяет, не принадлежит ли родительский каталог пользователю root.


Две команды имеют разную производительность. Первый создает дочерний процесс для каждого каталога, не принадлежащего пользователю root. Вторая команда создает два процесса для каждого файла, принадлежащего пользователю root. Если вы ожидаете относительно немного таких каталогов и много таких файлов, используйте (1). Если вы ожидаете много таких каталогов и мало таких файлов, используйте (2) возможно.

Обычно у вас больше файлов, чем каталогов, поэтому вы должны предпочесть (1).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .