Які заходи обережності слід вжити з .debs, які я знаходжу в Інтернеті?


29

Отож, я переглянув Інтернет в інший день, і я натрапив на декілька місць, які хотіли завантажити .debфайли - і оскільки вони встановлені кореневими (і як такі мають "повноваження" та можливості root), я не був впевнений у цьому.

Відповіді:


32

Що слід врахувати:

  • Наскільки відомий сайт? Наприклад, чи був це випадковий блог, висвітлений в оголошеннях, чи це був випадковий користувач на якомусь форумі, чи це був добре відомий, шанований сайт?

  • Що він вимагає встановити? Наприклад, чи вимагає він встановити ядро ​​чи набір іконок, але чи великий він лише 1 Мб?

  • Наскільки "важливим" є те, що у вас є вміст цього .deb?

Способи надійної перевірки речей:

Я використовую arkose( його в стандартних репостах Встановіть arkose ) пісочницю з моїми дебасами (та іншими речами) - використовую його приблизно так:

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

Що , що це дає мені «пісочницю» (інакше відомий як «яй I CAN загвинчувати!») З копіювання при записі доступ до всього , на моєму комп'ютері, в тому числі і мій домашній каталог - так що якщо неприємний неприємний .debробить sudo rm -rf /*, я ДОН 'Т ВЗАЄМО ЯКІ-небудь дані!

Ще одна річ, яка недостатньо підкреслена, - ЗРОБИТИ ЗАПИСИ . Вони надзвичайно корисні, і у нас є багато запитань по цій темі.

Коротше кажучи, просто переконайтеся, що ви думаєте про це, а не просто завантажуйте випадковий деб і встановлюйте його.


2
Відкрийте .debвалик File, щоб побачити, що всередині. Хоча я мушу сказати, що я завантажив випадковий деб від випадкового користувача на випадковому потоці на форумах Ubuntu, щоб виправити свої проблеми з моїм принтером, він спрацював.
Урі Еррера

20

Якщо ви завантажуєте пакет з недовірених або сумнівних джерел, будьте параноїком. На таких популярних форумах, як ubuntuforums.org, якщо користувач робить свій перший запис, що містить лише короткий текст, наприклад "встановити це, працює для мене!", А потім посилання, будьте обережні з цим посиланням та / або інструкціями.

Не використовуйте бінарні пакунки, якщо це можливо, особливо з ненадійних джерел. Отримайте джерело (для офіційних пакетів Ubuntu це можна зробити apt-get source package-name) і ознайомтеся з ним.

Якщо розглянутий пакунок невеликий, можливо, варто його проаналізувати. Я вважаю за краще використовувати термінал для цього , тому що я тоді мати швидкий доступ до інших інструментів потужної командного рядка , як ls, find, file, less, vim, grep, sed, dpkgі багато інших. Скористайтеся доповненням вкладок (тобто натисканням Tabна виконання команд та імен файлів), це дійсно економить час!

Щоб завантажити .deb файл, ви можете скористатися браузером, але скопіювати посилання та потім скористатися wgetшвидше, оскільки ви вже можете з ним експериментувати.

$ 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

Далі настав час перевірити сам файл. less(через lesspipe) може забезпечити швидкий огляд вмісту файлу. Клавіші зі стрілками, вгору / вниз сторінки, домашня сторінка / кінець можуть бути корисними для навігації, Qвиходить із програми.

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

Після цього ви отримуєте огляд залежностей від пакета та того, який тип файлів він, можливо, містить. Час витягнути файли та проаналізувати вміст за допомогою dpkg-deb. Перша команда витягує дерево файлів у щойно створеному каталозі fs, друга - витягує його, DEBIANоскільки не вказано жодної іншої цілі:

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

Ми будемо використовувати lessще раз проаналізувати зміст сценаріїв супроводжуючого (тобто файли , які будуть використовуватися / працюють під час установки (і видалення). prerm, preinst, postrm, postinstСкрипти запуску перед / після видалення / установки , які є найбільш важливими для аналізу файлів Використовуйте :nта :pперемикайтесь між файлами Натискаючи =, ви отримуєте поточне ім'я файлу та номер рядка, а також кількість файлів у списку.

$ less DEBIAN/*

Якщо сценарії пакетів виглядають здоровими, настав час проаналізувати встановлений вміст (скористайтеся вкладкою-доповненням). Для сценаріїв оболонок та інтерпретованих сценаріїв (як-от Python) аналіз простіший (якщо вважати, що ви знаєте мову).

$ 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

Зверніть особливу увагу на файли конфігурації, особливо якщо вони використовують каталоги типу /etc/init(для сценаріїв запуску) або /etc/modprobe.d(варіанти завантаження модулів ядра).

Для двійкових файлів lddможна дати уявлення, для чого може бути використана програма. Наведена нижче програма виглядає як графічна програма, яка використовує 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)
...

Після того, як ви впевнені , що пакет виглядає дійсно, ви можете перейти встановити його в VirtualBox завантаженні з Live CD і використання ps aux, top, strace -f -o logfile.txt programnameдля подальшого аналізу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.