Как узнать файлы, созданные определенным программным обеспечением?
Под Linux, когда я устанавливаю программное обеспечение, оно создает файлы и каталоги.
Как я могу узнать, какие из них?

Например, если я установлю vsftpd , этот инструмент создаст

/usr/sbin/vsftpd
/etc/vsftpd/vsftpd.conf 
...

Есть ли какая-либо командная строка или инструмент, созданный для этого?

2 ответа2

3

Для операционных систем на основе Debian просто введите в терминале:

dpkg -L <software>

Для операционных систем на базе Red-Hat

rpm -ql <software>

Оба выведут все файлы, связанные с программным обеспечением.
Например:

shell>#rpm -ql httpd

/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
/etc/httpd/conf.d/README
/etc/httpd/conf.d/autoindex.conf

...  (below ) ...

/usr/lib64/httpd/modules/mod_info.so
/usr/lib64/httpd/modules/mod_lbmethod_bybusyness.so

... ( around 400 lines below ) ...

/usr/share/man/man8/suexec.8.gz
/var/cache/httpd
/var/cache/httpd/proxy
/var/lib/dav
/var/log/httpd
/var/www
/var/www/cgi-bin
/var/www/html

,

3

Вы можете видеть изменения каталогов / файлов в вашей файловой системе на разных уровнях.

Если вы хотите узнать, какие файлы устанавливает официальный пакет, вы можете следить за ответами MariusMatutiae или Rishabh Soni и использовать dpkg .
IMHO apt-file более удобен, чем dpkg (например, apt-file list vsftpd).

Вообще говоря, если вы хотите быть уверенным, что это конкретная программа, а не другая, для создания файла, вам нужно следить за этой программой. В то же время, если вы хотите проверить, кто изменяет файл, вы должны следить за этим файлом. Это еще более верно для программ, которые не относятся к официальным пакетам дистрибутива Linux.

Чтобы «контролировать тем временем » процесс, который создает или изменяет файлы в вашей файловой системе, вы можете использовать inotify или FAM, расширения ядра, созданные и оптимизированные для этой цели.
Если вы хотите отслеживать только то, что создано / доступно процессу, вы можете использовать lsof

lsof -n -p `pidof your_app`   # If you know the PID of your software
./Install.sh & lsof -n -p $!  # Here it takes the last program in background

На другом уровне вы можете посмотреть на strace, способный отслеживать все системные вызовы процесса, который включает в себя весь доступ к файлам. Это мощный инструмент, даже если с выходом не очень чистый.

Вы можете использовать find если хотите видеть файлы, созданные или измененные во временном окне, например, после того, как вы установили программу, или когда вы предполагаете, или знаете, что программа работала. Например, вы можете искать все файлы (а не каталоги), созданные за последние 5 минут, где-то вниз, начиная с текущего каталога с помощью

find . -type f -mmin 5 -print

но изменяя параметры, вы можете искать файлы, каталоги, символические и жесткие ссылки ... Конечно, этот метод использует больше обращений к ЦП и дискам, чем выделенные исправления ядра, о которых сообщалось выше, но если вам придется искать его только один раз, это лучшее решение, особенно если вы не начинаете поиск с корня / .

И последнее, но не менее важное: вы можете попытаться определить тип файла с помощью командного file , например, file MyScript.sh , списка подписей (или магических чисел ) или списка расширений файлов. Когда вы знаете тип файла, вы можете угадать программу, которая создала или изменила файл среди тех, которые вы установили на этом компьютере ... и начать отслеживать их.

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