Quali precauzioni dovrei prendere con .debs che trovo su Internet?


29

Quindi stavo navigando sul web l'altro giorno, e mi sono imbattuto in alcuni posti che mi volevano scaricare .debfile - e poiché quelli sono installati da root (e come tali hanno i "poteri" e le capacità di root), non lo ero certo.

Risposte:


32

Cose da considerare:

  • Quanto è noto il sito? Ad esempio, era un blog a caso coperto da annunci pubblicitari, era un utente a caso su un forum o era un sito ben noto e rispettato?

  • Cosa pretende di installare? Ad esempio, afferma di installare un kernel o un set di icone, ma è grande solo 1 MB?

  • Quanto è "importante" che tu ne abbia il contenuto .deb?

Modi per testare le cose in modo sicuro:

Uso arkosenei Installa Arkose repository standard ) sandboxing con i miei debs (e altre cose) - usalo in questo modo:

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

Cosa mi dà un "sandbox" (altrimenti noto come "YAY CAN CAN SCREW UP!") Con accesso copia su scrittura a tutto sul mio computer, inclusa la mia directory home - quindi se lo .debfa il cattivo sudo rm -rf /*, DON PERDERE QUALUNQUE DATO!

Un'altra cosa che non è abbastanza stressata è FARE BACKUPS . Sono estremamente utili e abbiamo molte domande sull'argomento.

In breve, assicurati di pensarci e non scaricare semplicemente un deb casuale e installarlo.


2
Apri il .debcon il rullo File per vedere cosa c'è dentro. Anche se devo dire che ho scaricato un deb casuale da un utente casuale su un thread casuale nei forum di Ubuntu per risolvere i miei problemi con la mia stampante, ha funzionato.
Uri Herrera,

20

Se stai scaricando un pacchetto da fonti non attendibili o discutibili, sii paranoico. Su forum popolari come ubuntuforums.org, se un utente pubblica il suo primo post contenente solo un breve testo come "installa questo, funziona per me!", Seguito da un link, fai attenzione a quel link e / o istruzioni.

Non usare pacchetti binari se possibile, specialmente da fonti non attendibili. Ottieni il sorgente (per i pacchetti Ubuntu ufficiali, puoi farlo apt-get source package-name) e dai un'occhiata.

Se il pacchetto in questione è piccolo, potrebbe valere la pena analizzarlo. Io preferisco usare il terminale per questo, perché io allora ho accesso veloce ad altri strumenti potenti della riga di comando, come ls, find, file, less, vim, grep, sed, dpkge un sacco altri. Usa il completamento delle tabulazioni (ovvero premi Tabper completare comandi e nomi di file), ti fa davvero risparmiare tempo!

Per scaricare un file .deb, è possibile utilizzare il browser, ma copiare il collegamento e quindi utilizzare wgetè più veloce poiché è già possibile sperimentarlo.

$ 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

Successivamente, è il momento di controllare il file stesso. less(tramite lesspipe) può fornire una rapida panoramica del contenuto del file. I tasti freccia, pagina su / giù, home / end possono essere utili per la navigazione, Qesce dal programma.

$ 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
...

Successivamente, si ottiene una panoramica delle dipendenze del pacchetto e del tipo di file eventualmente contenuti. Tempo di estrarre i file e analizzare i contenuti utilizzando dpkg-deb. Il primo comando estrae l'albero dei file in una directory appena creata fs, il secondo lo estrae DEBIANperché non è stata specificata un'altra destinazione:

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

Useremo lessdi nuovo per analizzare il contenuto dei script del manutentore (cioè i file che verranno utilizzati / eseguiti durante l'installazione (e la rimozione). prerm, preinst, postrm, postinstSono script eseguiti prima / dopo la rimozione / installazione, che sono la maggior parte dei file importanti da analizzare Utilizzare :ne :pper alternare tra i file Premendo =si ottengono il nome del file e il numero di riga correnti, nonché il numero di file presenti nell'elenco.

$ less DEBIAN/*

Se gli script del pacchetto sembrano sani, è tempo di analizzare i contenuti installati (utilizzare il completamento con tabulazione). Per gli script shell e gli script interpretati (come Python), l'analisi è più semplice (supponendo che tu sia noto con la lingua).

$ 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

Prestare particolare attenzione ai file di configurazione, specialmente se utilizzano directory come /etc/init(per gli script di avvio) o /etc/modprobe.d(opzioni per il caricamento dei moduli del kernel).

Per i binari, lddpuò dare un'idea di cosa potrebbe essere utilizzato un programma. Il programma seguente sembra un programma grafico che utilizza OpenGL.

$ 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)
...

Dopo si è sicuri che il pacchetto sembra valida, si può andare a installarlo in VirtualBox fare il boot da un CD Live e l'utilizzo ps aux, top, strace -f -o logfile.txt programnameper ulteriori analisi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.