Linux: Fișierele dispozitivelor (#20)

0

Bine ați revenit, dragii mei greenhorn hackers!

În tutorialele recente, am făcut referire la numele și locația dispozitivelor Linux în sistemul de fișiere, cum ar fi sda (unitate SATA sau SCSI). Am menționat modul în care Linux desemnează unitățile hard disk atunci când face o imagine a unui hard disk în scopuri de recunoaștere.

Pentru a înțelege modul de utilizare și administrare a hard disk-urilor și a altor dispozitive în Linux, trebuie să  înțelegem mai întâi modul în care Linux specifică aceste dispozitive în sistemul său de fișiere.

Foarte des, dacă folosim hard disk-ul într-un hack sau într-un scop de recunoaștere, va trebui să abordăm în mod specific numele fișierului dispozitivului. Aceste nume de fișiere ale dispozitivului permit dispozitivului (de exemplu, unității hard disk) să interacționeze cu software-ul de sistem și kernel-ul prin apelurile de sistem.

Aceste fișiere nu sunt drivere de dispozitiv, ci mai degrabă puncte de întâlnire, ce sunt folosite pentru a comunica cu driverele. Linux menține un fișier de dispozitiv pentru fiecare dispozitiv din sistem în directorul /dev.

În acest tutorial, vom examina modul în care Linux numește și interacționează cu sistemul de fișiere prin directorul /dev și fișierele sale.

Directorul /Dev

Directorul /dev conține toate fișierele care reprezintă dispozitive periferice fizice prezente pe sistem, cum ar fi unitățile de disc, terminalele și imprimantele. Directorul /dev este sub directorul /. Dacă navigăm acolo, vom vedea o intrare pentru toate dispozitivele noastre.

kali > cd /dev
kali > ls -l

Dispozitivele bloc vs dispozitevele de caractere

Linux face o distincție între dispozitivele bloc și dispozitivele de caractere. Dispozitivele de caractere sunt cele care trimit date în interiorul și în afara mașinii direct cât și indirect. Acestea ar fi tastatura, mouse-ul, monitorul etc. Datorită faptului că datele au o mică întârziere, tendința constă într-un proces lent.

Pe de altă parte, dispozitivele bloc sunt cele care transmit date în interiorul cât și în afara mașini prin blocuri. Acestea includ dispozitive precum hard disk-uri, CD-uri, DVD-uri, dischete, unități flash etc. Acest transfer de date tinde să fie mult mai rapid.

Observăm în listă lungă a directorului /dev că unele fișiere încep cu un ,,c” iar altele cu un ,,b”. Dispozitivele pentru caractere încep cu un ,,c”, iar blocurile încep cu un “b”.

Vom observa în a treia linie a directorului /dev că există un director numit ,,block”. O să navigăm acolo și o să-l listăm.


kali > cd /block
kali > ls -l

Aici vedem o listă a tuturor dispozitivelor bloc. În prima linie vedem sr0; care ar fi primul CD-ROM (Linux are tendința de a începe să numere la 0, nu de la 1). În partea de jos, vedem sda, sda1, sda2, sda5 (lista ta poate fi diferită), unde sda1 reprezintă prima partiție primară de pe unitatea SATA, iar sda2 reprezintă cea de-a doua partiție primară de pe unitatea SAME.

Denumirea convențiilor dispozitivelor în Linux

Inițial, hard discurile au fost de două tipuri, IDE sau SCSI. IDE (sau mai târziu, E-IDE) a fost conceput ca o alternativă ieftină pentru PC-uri cu costuri reduse. Au fost relativ lente și permiteau doar patru dispozitive pe mașină. În plus, acestea trebuiau setate într-o configurație master și slave. Fiecare combinație master și slave avea un cablu și un controler.



O alternativă mai rapidă, dar mai scumpă a fost cea a sistemului SCSI (Small Computer System Interface). Unitățile SCSI au fost (sunt) mai rapide și mai costisitoare. Pe lângă avantajul de viteză, nu au nevoie de o configurație master/slave, ci mai degrabă au fost configurate cu un controler și o serie de dispozitive de până la 15.

Linux desemnează hard disk-urile IDE cu hd și SCSI-urile cu sd. În ultimii ani, cu dezvoltarea și proliferarea unităților SATA, observăm că Linux desemnează aceste unități cu sd, la fel ca driverele SCSI.

Prima unitate IDE a fost desemnată cu hda, a doua hdb, a treia hdc și așa mai departe. La fel se întâmplă și cu dispozitivele SCSI și SATA; primul este desemnat cu sda, al doilea sdb, al treilea sdc și așa mai departe.

Alte fișiere de dispozitive includ:

  • /dev/usb – dispozitivele USB
  • /dev/lp – imprimantă cu port paralel
  • /dev/tty – terminalul local
  • /dev/fd – floppy drive (le mai folosește cineva?)

Partițiile logice vs partițiile fizice ale unui hard disk

Linuxul este capabil să recunoască patru partiții de hard disk primare pe sistemul de operare. Acest lucru nu se limitează la patru unități hard disk sau patru partiții, deoarece putem folosi și partiții logice sau extinse. Putem avea până la 15 partiții logice sau extinse pe disc și fiecare dintre aceste partiții acționează ca unitate proprie și funcționează la fel de rapid ca o partiție primară.



Prima partiție primară în Linux cu un drive SATA ar fi sda1, a doua sda2, a treia sda3 și a patra sda4. Dincolo de aceste partiții primare, putem partiționa unitatea, dar ele sunt acum partiții logice. Prima partiție logică ar fi sda5 cu un drive SATA. Acest lucru poate fi apoi urmat de încă 14 unități logice, dacă este necesar, cu ultima unitate logică pe prima unitate SATA fiind sda19 (4 partiții primare și 15 partiții logice).

În Linux, avem, în general, o partiție separată pentru spațiul swap. Spațiul de transfer este acea zonă a unității de disc care este utilizată ca memorie virtuală. Aceasta inseamna că atunci când vom rula memorie (RAM) pentru un anumit proces sau aplicație, sistemul de operare va folosi acest spațiu pe hard disk ca și cum ar fi RAM, dar evident mult mai lent (aproximativ de 1000 de ori mai lent).

Dispozitive speciale

Linux are un număr de fișiere speciale pentru dispozitive. Aceasta este o listă a câtorva dintre cele mai importante fișiere speciale ale dispozitivelor.

/dev/null

Acest dispozitiv este numit uneori și o ,,găleată de biți”. Face ca datele să dispară. Dacă redirecționați ieșirea către acest dispozitiv, acesta va dispărea. Dacă citiți din /dev/null, veți obține un șir nul. Dacă aș fi vrut să formatez drive-ul, ștergând toate datele, aș putea folosi:

dd if=/dev/null of=/dev/sda



/dev/zero

Acest dispozitiv poate fi utilizat ca fișier de intrare pentru a furniza cât mai mulți octeți nuli (0x00), după cum este necesar. Este adesea folosit pentru a inițializa un fișier sau un hard disk.

/dev/ full

Acest dispozitiv este un fișier special care întoarce întotdeauna eroarea ,,device full”. De obicei, este folosit pentru a testa modul în care un program reacționează la o eroare de tip ,,disk full”. De asemenea, este capabil să furnizeze un număr infinit de caractere de octeți nuli pentru orice proces de testare.

/dev/random

Acest dispozitiv poate fi folosit ca intrare pentru a umple un fișier sau o partiție cu date aleatorii sau mai precis, date pseudo-aleatoare. S-ar putea să folosesc acest lucru pentru a suprascrie un fișier sau o partiție pentru a face mult mai dificilă recuperarea fișierelor șterse de către un investigator criminalistic.

Este aproape imposibil să elimini dovezile unui fișier de la recuperare de către un anchetator calificat, cu timp și resurse nelimitate. Din moment ce puțini anchetatori criminalistici dețin cunoștințele, timpul sau banii necesari, această tehnică va inhiba cele mai multe investigații criminalistice.

Pentru a face acest lucru, putem folosi comanda dd. De exemplu:

dd if=/dev/random of=evidencefile bs=1 count=1024

 

Continuați să reveniți pe Blackweb, dragii mei greenhorn hackers, pentru mai multe tutoriale despre hacking și despre elementele de bază ale Linux-ului, ce ar fi bine să le cunoașteți, în drumul vostru de a deveni niște hackeri talentați.

Până data viitoare, să ne citim cu bine! 🙂

 
Choose your Reaction!
Leave a Comment

Your email address will not be published.

Opțiunea copy-paste a fost dezactivată pentru acest site.