Welche Vorsichtsmaßnahmen sollte ich bei .debs treffen, die ich im Internet finde?


29

Also habe ich neulich im Internet gestöbert und bin auf einige Stellen gestoßen, an .debdenen ich Dateien herunterladen wollte - und da diese von root installiert wurden (und als solche die "Fähigkeiten" von root haben), war ich das nicht dessen sicher.

Antworten:


32

Dinge, die man beachten muss:

  • Wie bekannt ist die Website? War es zum Beispiel ein zufälliger Blog, der in Anzeigen enthalten ist, war es ein zufälliger Benutzer in einem Forum oder war es eine bekannte, angesehene Site?

  • Was behauptet es zu installieren? Behauptet es beispielsweise, einen Kernel oder ein Iconset zu installieren, ist es aber nur 1 MB groß?

  • Wie "wichtig" ist es, dass Sie den Inhalt davon haben .deb?

So testen Sie Dinge sicher:

Ich benutze arkose( in den Standard-Repos Installieren Sie Arkose ) Sandboxing für meine Debs (und andere Dinge) - benutze es in etwa so:

sudo arkose -n -c "cd $PWD; $SHELL"

Was das gibt es mir eine „Sandbox“ mit copy-on-write Zugriff auf alles auf meinem Computer (sonst bekannt als „YAY I CAN vermasseln!“), Mein Home - Verzeichnis inklusive - also wenn die bösen böse .debtut sudo rm -rf /*, ich DON VERLIERE KEINE DATEN!

Eine andere Sache, die nicht genug betont wird, ist, BACKUPS ZU MACHEN . Diese sind äußerst hilfreich und wir haben viele Fragen zu diesem Thema.

Kurz gesagt, stellen Sie einfach sicher, dass Sie darüber nachdenken, und laden Sie nicht einfach eine zufällige Deb herunter und installieren Sie sie.


2
Öffnen Sie den .debOrdner mit der Dateirolle und sehen Sie, was sich darin befindet. Obwohl ich sagen muss, dass ich eine zufällige Deb von einem zufälligen Benutzer in einem zufälligen Thread in den Ubuntu-Foren heruntergeladen habe, um meine Probleme mit meinem Drucker zu beheben, hat es funktioniert.
Uri Herrera

20

Wenn Sie ein Paket von nicht vertrauenswürdigen oder fragwürdigen Quellen herunterladen, seien Sie paranoid. Wenn ein Benutzer in populären Foren wie ubuntuforums.org seinen ersten Beitrag nur mit einem kurzen Text wie "install this, works for me!", Gefolgt von einem Link, erstellt, achten Sie auf diesen Link und / oder Anweisungen.

Verwenden Sie nach Möglichkeit keine Binärpakete, insbesondere aus nicht vertrauenswürdigen Quellen. Holen Sie sich den Quellcode (für offizielle Ubuntu-Pakete können Sie diesen verwenden apt-get source package-name) und schauen Sie ihn sich an.

Wenn das betreffende Paket klein ist, kann es sich lohnen, es zu analysieren. Ich ziehe das Terminal für das benutzen , weil ich dann einen schnellen Zugriff auf andere mächtige Kommandozeilen - Tools haben wie ls, find, file, less, vim, grep, sed, dpkgund viele andere. Nutzen Sie die Tab-Vervollständigung (dh drücken Tab, um Befehle und Dateinamen zu vervollständigen), das spart wirklich Zeit!

Zum Herunterladen einer .deb-Datei können Sie den Browser verwenden. Das Kopieren und anschließende Verwenden des Links wgetist jedoch schneller, da Sie bereits damit experimentieren können.

$ mkdir /tmp/foo && cd /tmp/foo
$ wget http://nl.archive.ubuntu.com/ubuntu/pool/main/n/nvidia-common/nvidia-common_0.2.35_amd64.deb

Als nächstes ist es Zeit, die Datei selbst zu überprüfen. less(durch lesspipe) kann einen schnellen Überblick über den Dateiinhalt geben. Pfeiltasten, Seite hoch / runter, Home / Ende können für die Navigation nützlich sein, Qbeendet das Programm.

$ less nvidia-common_0.2.35_amd64.deb
nvidia-common_0.2.35_amd64.deb:
 new debian package, version 2.0.
 size 10802 bytes: control archive= 1877 bytes.
     197 bytes,    11 lines   *  config               #!/bin/sh
     703 bytes,    16 lines      control              
     741 bytes,    10 lines      md5sums              
     163 bytes,     9 lines   *  postinst             #!/bin/sh
     206 bytes,     8 lines   *  postrm               #!/bin/sh
     827 bytes,    38 lines   *  preinst              #!/bin/sh
     263 bytes,    14 lines   *  prerm                #!/bin/sh
     365 bytes,    12 lines      templates            
 Package: nvidia-common
 Version: 1:0.2.35
 Architecture: amd64
 Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
 Installed-Size: 156
 Pre-Depends: dpkg (>= 1.15.7.2)
 Depends: python2.7 | python2.6, python (>= 2.7.1-0ubuntu2), python (<< 2.8), debconf (>= 0.5.00) | debconf-2.0, pciutils, python-apt
 Conflicts: nvidia-180-modaliases, nvidia-185-modaliases, nvidia-current-modaliases
 Replaces: nvidia-180-modaliases, nvidia-185-modaliases, nvidia-current-modaliases
 Section: admin
 Priority: optional
 Description: Find obsolete NVIDIA drivers
  This package will find obsolete NVIDIA drivers in use,
  detect the hardware and recommend the most appropriate
  driver.
 Python-Version: 2.6, 2.7

*** Contents:
drwxr-xr-x root/root         0 2011-09-07 11:06 ./
drwxr-xr-x root/root         0 2011-09-07 11:06 ./usr/
drwxr-xr-x root/root         0 2011-09-07 11:06 ./usr/share/
drwxr-xr-x root/root         0 2011-09-07 11:06 ./usr/share/doc/
drwxr-xr-x root/root         0 2011-09-07 11:06 ./usr/share/doc/nvidia-common/
-rw-r--r-- root/root      1174 2011-09-07 11:07 ./usr/share/doc/nvidia-common/changelog.gz
-rw-r--r-- root/root       466 2011-06-24 14:45 ./usr/share/doc/nvidia-common/copyright
...

Danach erhalten Sie einen Überblick über die Paketabhängigkeiten und welche Art von Dateien diese möglicherweise enthalten. Zeit, um die Dateien zu extrahieren und den Inhalt mit zu analysieren dpkg-deb. Der erste Befehl extrahiert den Dateibaum in ein neu erstelltes Verzeichnis fs, der zweite extrahiert ihn in ein DEBIANanderes Verzeichnis , da kein anderes Ziel angegeben ist:

$ dpkg-deb -x nvidia-common_0.2.35_amd64.deb fs
$ dpkg-deb -e nvidia-common_0.2.35_amd64.deb

Wir verwenden lesswieder den Inhalt der Betreuer - Skripte zu analysieren (dh die Dateien , die (und Entfernung während der Installation verwendet / laufen wird). prerm, preinst, postrm, postinstSind Skripte laufen vor / nach dem Entfernen / Installation , die die wichtigsten Dateien zu analysieren Verwenden Sie :nund :p, um zwischen den Dateien zu wechseln. Durch Drücken von erhalten =Sie den aktuellen Dateinamen und die Zeilennummer sowie die Anzahl der Dateien, die in der Liste enthalten sind.

$ less DEBIAN/*

Wenn die Paketskripte vernünftig aussehen, ist es Zeit, die installierten Inhalte zu analysieren (Tab-Vervollständigung verwenden). Bei Shell-Skripten und interpretierten Skripten (wie Python) ist die Analyse einfacher (vorausgesetzt, Sie kennen die Sprache).

$ less fs/usr/bin/nvidia-detector    # fs<TAB><TAB>/usr/ <TAB><TAB>bin ...
$ less fs/usr/lib/nvidia/pre-install
$ ls -la fs/usr/lib     # quickly check the directory contents, my memory is weak
drwxr-xr-x 5 peter peter 100 2011-09-07 11:06 .
drwxr-xr-x 5 peter peter 100 2011-09-07 11:06 ..
drwxr-xr-x 2 peter peter  60 2011-09-07 11:06 nvidia
drwxr-xr-x 3 peter peter  60 2011-09-07 11:06 python2.6
drwxr-xr-x 3 peter peter  60 2011-09-07 11:06 python2.7
$ # I conclude: python2.6 is not a symlink to python2.7
$ less fs/usr/lib/python2.7/dist-packages/NvidiaDetector/*
press 'v' to open an editor (e.g. nano, vim) to get syntax highlighting if preferable

Achten Sie besonders auf Konfigurationsdateien, insbesondere wenn sie Verzeichnisse wie /etc/init(für Startskripte) oder /etc/modprobe.d(Optionen zum Laden von Kernelmodulen) verwenden.

lddKann für Binärdateien eine Idee geben, wofür ein Programm verwendet werden könnte. Das folgende Programm sieht aus wie ein grafisches Programm, das OpenGL verwendet.

$ ldd /usr/bin/glxgears
    linux-vdso.so.1 =>  (0x00007fff7d3ff000)
    libGL.so.1 => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 (0x00007fa2ead11000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa2eaa8d000)
    libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fa2ea754000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa2ea3b5000)
...

Nachdem Sie sicher sind , dass das Paket gültig aussieht, können Sie auf es in VirtualBox Booten von einer Live - CD und Nutzung gehen installieren ps aux, top, strace -f -o logfile.txt programnamefür die weitere Analyse.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.