Odpowiedzi:
Rzeczy do rozważenia:
Jak dobrze znana jest strona? Na przykład, czy był to przypadkowy blog pokryty reklamami, czy był to przypadkowy użytkownik na jakimś forum, czy też była to dobrze znana, szanowana strona?
Co twierdzi, że instaluje? Na przykład, czy twierdzi, że instaluje jądro lub zestaw ikon, ale czy ma tylko 1 MB?
Jak „ważne” jest to, że masz w tym zawartość .deb
?
Sposoby bezpiecznego testowania rzeczy:
Używam arkose
( jest w standardowych repozytoriach
) piaskownicy z moimi debsami (i innymi rzeczami) - używam go mniej więcej tak:
sudo arkose -n -c "cd $PWD; $SHELL"
Co to ma dać mi „piaskownicy” (inaczej znany jako „Yay mogę zepsuć!”) Z dostępem kopiowanie przy zapisie do wszystkiego na moim komputerze, w tym moim katalogu domowym - więc jeśli paskudny paskudny .deb
robi sudo rm -rf /*
, I DON „UTRACIE DANYCH!
Kolejną rzeczą, która nie jest wystarczająco zestresowana, jest tworzenie kopii zapasowych . Są bardzo pomocne i mamy wiele pytań na ten temat.
Krótko mówiąc, upewnij się, że o tym pomyślisz, a nie tylko pobieraj losowe pliki deb i instaluj je.
Jeśli pobierasz pakiet z niezaufanych lub wątpliwych źródeł, bądź paranoikiem. Na popularnych forach takich jak ubuntuforums.org, jeśli użytkownik opublikuje swój pierwszy post zawierający tylko krótki tekst w stylu „zainstaluj to, działa dla mnie!”, A następnie link, bądź ostrożny z tym linkiem i / lub instrukcjami.
Jeśli to możliwe, nie używaj pakietów binarnych, zwłaszcza z niezaufanych źródeł. Uzyskaj źródło (w przypadku oficjalnych pakietów Ubuntu można to zrobić apt-get source package-name
) i spójrz na to.
Jeśli pakiet jest mały, warto go przeanalizować. Wolę korzystać z terminala za to, bo wtedy mają szybki dostęp do innych narzędzi wiersza polecenia potężny jak ls
, find
, file
, less
, vim
, grep
, sed
,dpkg
i wiele innych. Skorzystaj z uzupełniania tabulatorów (tj. Uderzania w Tabcelu wykonania poleceń i nazw plików), to naprawdę oszczędza czas!
Aby pobrać plik .deb, możesz użyć przeglądarki, ale skopiowanie łącza, a następnie użycie wget
jest szybsze, ponieważ możesz już z nim eksperymentować.
$ 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
Następnie nadszedł czas, aby sprawdzić sam plik. less
(przez lesspipe
) może zapewnić szybki przegląd zawartości pliku. Klawisze strzałek, strona w górę / w dół, strona główna / koniec mogą być przydatne do nawigacji, Qzamykanie programu.
$ 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
...
Następnie uzyskasz przegląd zależności pakietu i jakie pliki może zawierać. Czas wyodrębnić pliki i przeanalizować zawartość za pomocą dpkg-deb
. Pierwsze polecenie wyodrębnia drzewo plików w nowo utworzonym katalogu fs
, drugie polecenie wyodrębnia je, DEBIAN
ponieważ nie określono innego obiektu docelowego:
$ dpkg-deb -x nvidia-common_0.2.35_amd64.deb fs
$ dpkg-deb -e nvidia-common_0.2.35_amd64.deb
Użyjemy less
ponownie przeanalizować zawartość skryptów instalacyjnych (czyli pliki, które będą używane / uruchamianych podczas instalacji (i usuwania). prerm
, preinst
, postrm
, postinst
Są skrypty uruchamiane przed / po usunięciu / instalacji, które są najważniejsze pliki do analizy Do przełączania się między plikami używaj :n
i :p
. Naciskając przycisk =
, otrzymujesz aktualną nazwę pliku i numer linii oraz liczbę plików znajdujących się na liście.
$ less DEBIAN/*
Jeśli skrypty pakietu wyglądają rozsądnie, czas przeanalizować zainstalowaną zawartość (użyj uzupełniania tabulatorami). W przypadku skryptów powłoki i skryptów interpretowanych (takich jak Python) analiza jest łatwiejsza (zakładając, że znasz język).
$ 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
Zwróć szczególną uwagę na pliki konfiguracyjne, szczególnie jeśli używają katalogów takich jak /etc/init
(dla skryptów startowych) lub /etc/modprobe.d
(opcje ładowania modułów jądra).
W przypadku plików binarnych ldd
może dać wyobrażenie o tym, do czego można użyć programu. Poniższy program wygląda jak program graficzny korzystający z 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)
...
Po upewnieniu się, że opakowanie wygląda prawidłowa, można przejść na zainstalowanie go w VirtualBox bootowanie z CD live jak i pracy ps aux
, top
, strace -f -o logfile.txt programname
do dalszej analizy.
.deb
pomocą rolki pliku, aby zobaczyć, co jest w środku. Chociaż muszę powiedzieć, że pobrałem losowy deb od losowego użytkownika w losowym wątku na forach Ubuntu, aby naprawić moje problemy z drukarką, zadziałało.