Que precauções devo tomar com .debs que encontro na internet?

29

Então, eu estava navegando na web outro dia, e me deparei com alguns lugares que queriam que eu baixasse .debarquivos - e como eles são instalados pelo root (e, como tal, têm os "poderes" e os recursos do root), eu não estava certeza sobre isso.

jrg
fonte

Respostas:

32

Coisas a considerar:

  • Quão bem conhecido é o site? Por exemplo, era um blog aleatório coberto de anúncios, era um usuário aleatório em algum fórum ou era um site conhecido e respeitado?

  • O que ele afirma instalar? Por exemplo, ele afirma instalar um kernel ou um conjunto de ícones, mas tem apenas 1 MB de tamanho?

  • Quão "importante" é que você tenha o conteúdo disso .deb?

Maneiras de testar as coisas com segurança:

Eu uso arkose( é nos repositórios padrão Instalar arkose ) sandboxing com minhas dívidas (e outras coisas) - use algo como isto:

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

O que ele me dê uma "sandbox" (também conhecido como "YAY posso estragar!") Com acesso copy-on-write para tudo no meu computador, incluindo o meu diretório home - por isso, se o desagradável desagradável .debfaz sudo rm -rf /*, I DON PERDE TODOS OS DADOS!

Outra coisa que não é estressada o suficiente é fazer backups . Essas são extremamente úteis e temos muitas perguntas sobre o assunto.

Em resumo, certifique-se de pensar sobre isso e não faça o download de uma deb aleatória e instale-a.

jrg
fonte
2
Abra o .debrolo com Arquivo para ver o que há dentro. Embora eu deva dizer que baixei uma deb aleatória de um usuário aleatório em um tópico aleatório nos fóruns do Ubuntu para corrigir meus problemas com a impressora, ele funcionou.
Uri Herrera
20

Se você estiver baixando um pacote de fontes não confiáveis ​​ou questionáveis, fique paranóico. Em fóruns populares como o ubuntuforums.org, se um usuário fizer sua primeira postagem contendo apenas um texto breve como "instale isso, funciona para mim!", Seguido de um link, tenha cuidado com esse link e / ou instruções.

Não use pacotes binários, se possível, especialmente de fontes não confiáveis. Obtenha o código-fonte (para pacotes oficiais do Ubuntu, isso pode ser feito apt-get source package-name) e dê uma olhada nele.

Se o pacote em questão for pequeno, pode valer a pena analisá-lo. Eu prefiro usar o terminal para isso porque eu então ter acesso rápido a outras ferramentas poderosas de linha de comando, como ls, find, file, less, vim, grep, sed, dpkge muitos outros. Faça uso do preenchimento de guias (ou seja, pressione Tabpara concluir comandos e nomes de arquivos), isso realmente economiza tempo!

Para baixar um arquivo .deb, você pode usar o navegador, mas copiar o link e usá-lo wgeté mais rápido, pois você já pode experimentar.

$ 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

Em seguida, é hora de verificar o próprio arquivo. less(através lesspipe) pode fornecer uma visão geral rápida do conteúdo do arquivo. As teclas de seta, página para cima / baixo, página inicial / fim podem ser úteis para navegar, Qfecham o programa.

$ 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 <[email protected]>
 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
...

Depois disso, você obtém uma visão geral das dependências do pacote e que tipo de arquivos ele possivelmente contém. Hora de extrair os arquivos e analisar o conteúdo usando dpkg-deb. O primeiro comando extrai a árvore de arquivos em um diretório recém-criado fs, o segundo extrai DEBIANporque nenhum outro destino está especificado:

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

Usaremos lessnovamente para analisar o conteúdo dos scripts de manutenção (ou seja, os arquivos que serão usados / executados durante a instalação (e remoção). prerm, preinst, postrm, postinstSão scripts executados antes / depois da remoção / instalação que são os arquivos mais importantes para analisar Use :ne :ppara alternar entre os arquivos Ao pressionar =, você obtém o nome do arquivo e o número da linha atuais, bem como o número de arquivos que estão na lista.

$ less DEBIAN/*

Se os scripts do pacote parecerem saudáveis, é hora de analisar o conteúdo instalado (use a conclusão de tabulação). Para scripts de shell e scripts interpretados (como Python), a análise é mais fácil (supondo que você seja conhecido com a linguagem).

$ 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

Preste atenção especial aos arquivos de configuração, especialmente se eles estiverem usando diretórios como /etc/init(para scripts de inicialização) ou /etc/modprobe.d(opções para carregar módulos do kernel).

Para binários, lddpode-se ter uma idéia de como um programa pode ser usado. O programa abaixo parece um programa gráfico que usa o 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)
...

Após certificar-se de que o pacote parece válido, você pode ir em instalá-lo no VirtualBox inicialização através de um Live CD e uso ps aux, top, strace -f -o logfile.txt programnamepara posterior análise.

Lekensteyn
fonte