Wie können Sie die Dateien einer bestimmten Software kennen?

0

Wie können Sie die Dateien einer bestimmten Software kennenlernen?
Wenn ich unter Linux eine Software installiere, werden Dateien und Verzeichnisse erstellt.
Woher weiß ich welche?

Zum Beispiel wenn ich installiere vsftpd Dieses Werkzeug wird erstellt

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

Gibt es eine Kommandozeile oder ein Tool, das nur darauf aufmerksam gemacht wird?

user564928
quelle
Möchten Sie alle Dateien finden, die von einem bestimmten Programm erstellt wurden, oder das Quellprogramm für eine bestimmte Datei festlegen, oder Sie sprechen davon, die Konfigurationsdateien zu finden, die bei der Installation eines bestimmten Programms erstellt wurden, oder waren als Beispiel für eine Datei gedacht erstellt oder eine Liste aller Dateien, die als Teil einer Programminstallation installiert wurden, oder ... Wenn Sie definiert haben, was Sie möchten, suchen Sie nach einer Methode, um sie zu erhalten (wahrscheinlich thematisch) oder einer Softwareempfehlung ( Off-Topic)?
fixer1234
Sie stellen 2 verschiedene Fragen: (A) "Wie kann ich verstehen, welche Dateien ein Paket installieren" . (B) "Welches Programm kann eine Datei als XYZ-Datei erstellen / verwalten?" Was möchtest du wirklich wissen? Bitte wählen Sie eine und bearbeiten dein Beitrag oder Titel Ps & gt; Willkommen am [} Super Nutzer .
Hastur
Sie können beide wissen ... aber das sind andere Fragen (die Sie separat tun können, wenn Sie nicht gerade getan bekommen). Wollen Sie zum Beispiel wissen, was passiert oder was passiert? Auch das macht einen Unterschied. (Ich meine, möchten Sie wissen, welche Dateien einen laufenden Prozess erstellen / ändern, was zu tun ist, wenn ein Prozess getan hat, was zu tun ist, um zu wissen, was ein Prozess getan hat, was zu tun ist, bevor Sie wissen, was in der Zwischenzeit geschieht ... ). Auf dieser Website sollten Sie eine bestimmte Frage schreiben, damit andere Benutzer eine kurze, schnelle Antwort auf Ihre Frage schreiben können.
Hastur

Antworten:

3

Für Debian-basierte Betriebssysteme geben Sie einfach das Terminal ein:

dpkg -L <software>

Für Red Hat-Betriebssysteme

rpm -ql <software>

Beide geben alle mit der Software verknüpften Dateien aus.
Zum Beispiel:

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

.

Rishabh Soni
quelle
2
Das OP erwähnt debian in den Tags; rpm ist ein Befehl für RedHat, es existiert nicht unter Debian.
MariusMatutiae
@MariusMatutiae Danke, Kumpel. Ich habe meine Antwort für beide Kernelarten bearbeitet.
Rishabh Soni
Ich denke, Sie meinen "Distributionen" statt "Kernel".
ph0t0nix
3

Die Änderung der Verzeichnisse / Dateien in Ihrem Dateisystem finden Sie unter verschiedene Level .

Wenn Sie sehen möchten, welche Dateien ein offizielles Paket sind Installieren s, können Sie die Antworten von Marius Matutiae oder Rishabh Soni verfolgen und verwenden dpkg.
meiner bescheidenen Meinung nach apt-file ist gemütlicher dann dpkg (z.B. apt-file list vsftpd ).

Im Allgemeinen, wenn Sie möchten um sicher zu sein Das ist ein bestimmtes Programm und nicht ein anderes, um eine Datei zu erstellen Überwachen Sie dieses Programm . Auf die gleiche Weise, wenn Sie prüfen möchten, wer eine Datei ändert, müssen Sie dies tun Überwachen Sie diese Datei . Dies gilt umso mehr bei Programmen, die nicht zu den offiziellen Paketen einer Linux-Distribution gehören.

Zu "überwachen Sie inzwischen " ein Prozess das Erstellen oder Ändern von Dateien in Ihrem Dateisystem, das Sie verwenden können inotify oder FAM . Erweiterungen des Kernels erstellt und für diesen Zweck optimiert.
Wenn Sie nur das überwachen möchten, was erstellt / abgerufen wird durch einen Prozess Sie können verwenden 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

Auf einer anderen Ebene können Sie einen Blick darauf werfen strace , fähig Überwachen Sie alle Systemaufrufe eines Prozesses, der den gesamten Dateizugriff beinhaltet. Es ist ein leistungsfähiges Werkzeug, auch wenn die Ausgabe nicht so sauber ist.

Sie können verwenden find wenn Sie die Dateien sehen möchten in einem zeitlichen Fenster erstellt oder geändert werden , z.B. Danach haben Sie das Programm installiert oder Sie vermuten, oder Sie wissen, dass das Programm ausgeführt wurde. Sie können beispielsweise nach allen Dateien (und nicht nach Verzeichnissen) suchen, die in den letzten 5 Minuten erstellt wurden irgendwo unten beginnend mit dem aktuellen Verzeichnis mit

find . -type f -mmin 5 -print

Wenn Sie die Optionen ändern, können Sie nach Dateien, Verzeichnissen, symbolischen und festen Links suchen. Natürlich verwendet diese Methode mehr CPU- und Festplattenzugriffe als die oben angegebenen dedizierten Kernel-Patches. Wenn Sie dies jedoch nur einmal suchen müssen ist eine bessere Lösung, vor allem, wenn Sie nicht von der Wurzel aus suchen /.

Zu guter Letzt können Sie es auch versuchen einen Dateityp identifizieren mit dem Befehl file, z.B. file MyScript.shmit der Liste der Unterschriften (oder magische Zahlen ) oder mit dem Liste der Dateinamenerweiterungen . Sobald Sie den Dateityp kennen, können Sie das Programm, das eine Datei erstellt oder geändert hat, unter den auf diesem Computer installierten Dateien erraten ... und mit der Überwachung beginnen.

Hastur
quelle
Ps & gt; Um einen Dateityp zu identifizieren, können Sie es mit dem Befehl versuchen file. Z.B. file myfilemit der Liste der Unterschriften (oder magische Zahlen ) oder mit dem Dateierweiterungen . Wenn Sie den Dateityp kennen, können Sie erraten, welches Programm erstellt oder geändert werden soll.
Hastur