Очень важно иметь возможность найти нужные нам файлы и папки. Как только мы получим доступ к системе на базе Linux, важно будет найти конфигурационные файлы, скрипты, созданные пользователями или администратором, и другие файлы и папки. Нам не нужно вручную просматривать каждую отдельную папку и проверять, когда изменено в последний раз. Есть некоторые инструменты, которые мы можем использовать, чтобы облегчить эту работу.
Одним из распространенных инструментов является which. Эта команда возвращает путь к файлу или ссылке, которые должны быть выполнены и позволяет нам определить, доступны ли конкретные программы, такие как cURL, netcat, wget, python, gcc, в операционной системе. Пример поиска Python3:
┌──(kali㉿kali)-[~]
└─$ which python3
/usr/bin/python3
Если программа, которую мы ищем, не существует, результаты не будут отображаться.
Еще одним удобным инструментом является find. Помимо функции поиска файлов и папок, этот инструмент также содержит функцию фильтрации результатов. Мы можем использовать параметры фильтра, такие как размер файла или дата. Мы также можем указать, если мы ищем только файлы или папки.
┌──(kali㉿kali)-[~]
└─$ find / -type f -name '*.conf' -user kali -size -10k -newermt 2022-03-01 -exec ls -la {} \\; 2>/dev/null
-rw-r--r-- 1 kali kali 316 Apr  3 10:28 /home/kali/.config/xsettingsd/xsettingsd.conf
-rw-r--r-- 1 kali kali 107 Feb 28 13:12 /home/kali/.config/QtProject.conf
-rw-r--r-- 1 kali kali 619 Mar 23 12:17 /home/kali/.config/kde.org/UserFeedback.org.kde.dolphin.conf
-rw-r--r-- 1 kali kali 439 Feb 28 13:55 /home/kali/.config/kde.org/UserFeedback.org.kde.kate.conf
-rw-r--r-- 1 kali kali 109 Apr  3 10:28 /home/kali/.config/kde.org/UserFeedback.org.kde.plasmashell.conf
-rw-r--r-- 1 kali kali 1041 Apr  3 10:28 /home/kali/.config/Trolltech.conf
-rw-r--r-- 1 kali kali 84 Dec 31 13:21 /home/kali/.config/KDE/UserFeedback.conf
Теперь рассмотрим параметры подробнее:
| Параметр | Описание | 
|---|---|
-type f | 
Таким образом определяем тип искомого объекта. В этом случае f означает file. | 
-name '*.conf' | 
С помощью -name указываем имя файла, который мы ищем. Звездочка * означает ВСЕ файлы с расширением .conf | 
-user kali | 
Этот параметр фильтрует все файлы, владельцем которых является пользователь kali. | 
-size -10k | 
Позволяет отфильтровать все расположенные файлы и указать, что мы хотим видеть только файлы размером менее 10 КБ. | 
-newermt 2020-03-01 | 
С помощью этой опции мы устанавливаем дату. Будут представлены только файлы новее указанной даты. | 
-exec ls -la {} \\; | 
Этот параметр выполняет указанную команду, используя фигурные скобки в качестве заполнителей для каждого результата. Обратная косая черта избегает интерпретации следующего символа оболочкой, поскольку в противном случае точка с запятой завершит команду и не достигнет перенаправления. | 
2>/dev/null | 
Это перенаправление STDERR на “нулевое устройство”. Если по простому - это перенаправление гарантирует, что в терминале не будут отображаться ошибки. Его можно использовать в любых командах помимо find | 
Потребуется много времени для поиска по всей системе, чтобы наши файлы и каталоги выполняли множество различных поисков. Команда locate предлагает нам более быстрый способ поиска в системе. В отличие от команды find, locate работает с локальной базой данных, содержащей всю информацию о существующих файлах и папках. Мы можем обновить эту базу данных с помощью команды sudo updatedb
┌──(kali㉿kali)-[~]
└─$ locate *.conf
/etc/adduser.conf
/etc/appstream.conf
/etc/ca-certificates.conf
/etc/debconf.conf
/etc/deluser.conf
.........................