ฉันควรระวังอะไรบ้างเมื่อใช้. deb ที่ฉันพบบนอินเทอร์เน็ต


29

ดังนั้นเมื่อวันก่อนฉันได้ท่องเว็บและพบบางแห่งที่ต้องการให้ฉันดาวน์โหลด.debไฟล์ - และตั้งแต่ที่ติดตั้งโดยรูท (และเช่นนั้นมี "พลัง" และความสามารถของรูท) ฉันจึงไม่ แน่ใจเกี่ยวกับที่

คำตอบ:


32

สิ่งที่ต้องพิจารณา:

  • เว็บไซต์นี้รู้จักกันดีแค่ไหน? ตัวอย่างเช่นมันเป็นบล็อกแบบสุ่มที่กล่าวถึงในโฆษณาเป็นผู้ใช้ที่สุ่มในฟอรัมหรือไม่หรือเป็นไซต์ที่รู้จักกันดี

  • มันอ้างว่าติดตั้งอะไร? ตัวอย่างเช่นมันอ้างว่าติดตั้งเคอร์เนลหรือชุดไอคอน แต่มันมีขนาดใหญ่เพียง 1MB หรือไม่

  • "สำคัญ" คุณมีเนื้อหาเกี่ยวกับเรื่องนี้.debอย่างไร

วิธีทดสอบสิ่งต่าง ๆ อย่างปลอดภัย:

ฉันใช้ sandboxing arkose( ใน repos มาตรฐาน ติดตั้ง arkose ) กับ debs ของฉัน (และสิ่งอื่น ๆ ) - ใช้บางอย่างเช่นนี้:

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

อะไรที่มันไม่ให้ฉัน "ทราย" (หรือที่เรียกว่า "ยายฉันจะกรูขึ้น!") ที่มีการเข้าถึงสำเนาเมื่อเขียนทุกอย่างบนคอมพิวเตอร์ของฉันรวมทั้งไดเรกทอรีบ้านของฉัน - ดังนั้นหากที่น่ารังเกียจน่ารังเกียจ.debไม่sudo rm -rf /*, ฉัน DON จะไม่สูญเสียข้อมูลใด ๆ !

สิ่งที่ไม่ได้เน้นมากพอคือสร้างแบ็คแพ็ค สิ่งเหล่านี้มีประโยชน์มากและเรามีคำถามมากมายในหัวข้อ

กล่าวโดยย่อคือให้แน่ใจว่าคุณคิดและอย่าดาวน์โหลด deb แบบสุ่มและติดตั้ง


2
เปิด.debไฟล์ด้วยลูกกลิ้งดูว่ามีอะไรอยู่ข้างใน แม้ว่าฉันต้องบอกว่าฉันดาวน์โหลด deb แบบสุ่มจากผู้ใช้แบบสุ่มบนเธรดสุ่มบนฟอรัม Ubuntu เพื่อแก้ไขปัญหาของฉันกับเครื่องพิมพ์ของฉัน แต่ก็ใช้งานได้
Uri Herrera

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) สามารถให้ภาพรวมอย่างรวดเร็วของเนื้อหาไฟล์ ปุ่มลูกศร, หน้าขึ้น / ลง, home / end อาจมีประโยชน์สำหรับการนำ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 บูตออกซีดีสดและการใช้งานps aux, top, strace -f -o logfile.txt programnameสำหรับการวิเคราะห์ต่อ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.