您可以在以下位置查看文件系统上目录/文件的修改不同层次。

您可以在以下位置查看文件系统上目录/文件的修改不同层次。

如何知道某个软件创建的文件?
在 Linux 下,当我安装某个软件时,它会创建文件和目录。
我如何知道哪些文件和目录?

例如,如果我安装vsftpd,此工具将创建

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

是否有任何命令行或工具可以知道这一点?

答案1

对于基于 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

答案2

您可以在以下位置查看文件系统上目录/文件的修改不同层次

如果你想查看官方包中有哪些文件安装s,您可以按照 MariusMatutiae 或 Rishabh Soni 的答案并使用dpkg
恕我apt-file直言更舒适然后dpkg(例如apt-file list vsftpd)。

一般来说,如果你想为了确定这是一个特定的程序,而不是另一个要创建文件的程序,你必须监视该程序。同样,如果你想检查谁在修改文件,你必须监视该文件. 对于不属于 Linux 发行版官方软件包的程序来说更是如此。

“同时监控“ 一个过程即创建或修改文件系统上的文件,你可以使用通知或者法姆扩展为此目的而创建和优化的内核。
如果您只想监视创建/访问的内容通过一个过程您可以使用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

从另一个层面上看,你可以看看斯特拉斯, 能够监控所有系统调用进程,包括所有文件访问。即使输出不是那么清晰,它仍然是一个强大的工具。

您可以使用find如果你想查看文件在时间窗口中创建或修改例如,在您安装该程序之后,或者当您假设或知道该程序正在运行时。例如,您可以搜索过去 5 分钟内创建的所有文件(而不是目录)下面某处从当前目录开始

find . -type f -mmin 5 -print

但是通过改变选项你可以搜索文件、目录、符号和硬链接...当然,这种方法比上面报告的专用内核补丁使用更多的 CPU 和磁盘访问,但是如果你只需要搜索一次,这是一个更好的解决方案,特别是如果你不从根开始搜索/

最后但同样重要的是,你可以尝试识别文件类型使用命令file,例如file MyScript.sh使用签名列表(或神奇数字)或使用文件扩展名列表。一旦您知道了文件类型,您就可以猜测出在该计算机上安装的程序中创建或修改了文件的程序......并开始监视它们。

相关内容