Basics

Pentru a începe acest tutorial trebuie să vă asigurați că sunteți în directorul potrivit. Rulați comanda cd ~/uso-lab/01-fs/support/basics/.

Listarea conținutului directorului curent se face folosind comanda ls.

student@uso:~/.../01-fs/support/basics$ ls
grotesque  'hacker-s secret'   rookiss  'toddler-s bottle'

Observăm că prin utilizarea comenzii ls putem vedea ce avem în directorul curent, dar nu și în subdirectoarele acestuia. Un mod pentru a putea vizualiza întreaga ierarhie începând cu directorul curent este utilizarea utilitarului tree. Dacă acesta nu este instalat, rulați comanda sudo apt-get install tree.

student@uso:~/.../01-fs/support/basics$ tree .
.
├── grotesque
│   ├── asg
│   ├── coin2
│   └── do you dare
│       ├── ascii
│       ├── dos4fun
│       ├── elf
│       ├── hunter
│       ├── hunting
│       ├── mipstake
│       └── rootkit
├── hacker-s secret
│   ├── hard
│   │   ├── malware
│   │   └── pwnsandbox
│   ├── medium
│   │   ├── softmmu
│   │   └── tiney
│   └── really hard
│       ├── exploitable
│       └── nuclear
├── rookiss
│   ├── ascii easy.pdf
│   ├── brain fuck
│   ├── echo2
│   ├── fix.pdf
│   ├── loveletter
│   ├── otp.pdf
│   └── syscall
└── toddler-s bottle
    ├── bof
    │   ├── easy
    │   │   ├── bof-bof-bof
    │   │   ├── bof1.txt
    │   │   ├── bof2.txt
    │   │   ├── bof3.txt
    │   │   ├── bof4.txt
    │   │   ├── bof5.txt
    │   │   ├── can-you-bof
    │   │   └── random-bof.txt
    │   ├── hard
    │   │   └── I bet you can-t
    │   └── medium
    │       └── getting-serious-here
    ├── collision
    ├── fd
    ├── flag
    ├── input
    ├── passcode
    │   ├── passcode1
    │   ├── passcode2
    │   └── random-org
    └── random
 
13 directories, 40 files

Vrem să afisăm calea curentă pentru a vedea în ce director ne aflăm. Vom folosi comanda pwd. După aceea, vom lista conținutul directorului pentru a-l inspecta.

student@uso:~/.../01-fs/support/basics$ pwd
/home/student/uso-lab/01-fs/support/basics
student@uso:~/.../01-fs/support/basics$ ls
grotesque  'hacker-s secret'   rookiss  'toddler-s bottle'

De multe ori avem nevoie să ne plasăm cu un director în spate. Pentru a ajunge în directorul părinte folosim comanda cd ... E bine să verificăm de fiecare dată că ne aflăm în directorul în care trebuie.

student@uso:~/.../01-fs/support/basics$ pwd
/home/student/uso-lab/01-fs/support/basics
student@uso:~/.../01-fs/support/basics$ cd ..
student@uso:~/uso-lab/01-fs/support$ pwd
/home/student/uso-lab/01-fs/support

După folosirea comenzii tree știm întreaga ierarhie și cunoaștem calea pană la un anumit subdirector. Vrem să ajungem acolo. Putem face asta prin comenzi succesive de tipul cd subdirector sau putem folosi o singură comandă pentru a ne ușura munca.

student@uso:~/uso-lab/01-fs/support$ cd ~/uso-lab/01-fs/support/basics/
student@uso:~/.../01-fs/support/basics$ tree .
.
├── grotesque
│   ├── asg
│   ├── coin2
│   └── do you dare
│       ├── ascii
│       ├── dos4fun
│       ├── elf
│       ├── hunter
│       ├── hunting
│       ├── mipstake
│       └── rootkit
├── hacker-s secret
│   ├── hard
│   │   ├── malware
│   │   └── pwnsandbox
│   ├── medium
│   │   ├── softmmu
│   │   └── tiney
│   └── really hard
│       ├── exploitable
│       └── nuclear
├── rookiss
│   ├── ascii easy.pdf
│   ├── brain fuck
│   ├── echo2
│   ├── fix.pdf
│   ├── loveletter
│   ├── otp.pdf
│   └── syscall
└── toddler-s bottle
    ├── bof
    │   ├── easy
    │   │   ├── bof-bof-bof
    │   │   ├── bof1.txt
    │   │   ├── bof2.txt
    │   │   ├── bof3.txt
    │   │   ├── bof4.txt
    │   │   ├── bof5.txt
    │   │   ├── can-you-bof
    │   │   └── random-bof.txt
    │   ├── hard
    │   │   └── I bet you can-t
    │   └── medium
    │       └── getting-serious-here
    ├── collision
    ├── fd
    ├── flag
    ├── input
    ├── passcode
    │   ├── passcode1
    │   ├── passcode2
    │   └── random-org
    └── random
 
13 directories, 40 files
student@uso:~/.../01-fs/support/basics$ cd grotesque/do<TAB>
student@uso:~/.../basics/grotesque/do you dare$ pwd
/home/student/uso-lab/01-fs/support/basics/grotesque/do you dare

Câteodată vrem să ne plasăm într-un alt subdirector din ierarhia mare care nu se află în calea curentă. Avem iarăși de ales între pași mici, succesivi sau folosirea unei sigure comenzi pentru a ne poziționa altundeva.

student@uso:~/.../basics/grotesque/do you dare$ pwd
/home/student/uso-lab/01-fs/support/basics/grotesque/do you dare
student@uso:~/.../basics/grotesque/do you dare$ cd ../../rookiss
student@uso:~/.../support/basics/rookiss$ pwd
/home/student/uso-lab/01-fs/support/basics/rookiss

Până acum ne-am jucat cu ierarhia dată de echipa de USO, dar cum facem dacă vrem să ajungem în directorul /usr/local? Folosim o cale absolută pentru a naviga direct acolo fără a ne face griji de directorul în care ne aflăm, cât va trebui să ne deplasăm în spate (sau în față) pentru a ajunge unde vrem.

student@uso:~/.../support/basics/rookiss$ cd /usr/local
student@uso:/usr/local$ pwd
/usr/local

Pentru a ajunge în directorul home al utilizatorului curent de oriunde ne-am afla, folosim:

student@uso:/usr/local$ cd ~ # 'tilda'
student@uso:~$ pwd
/home/student

Până a trece mai departe, trebuie să vă asigurați că ați înțeles cum trebuie navigarea printr-o ierarhie de directoare. Pentru asta, parcurgeți următoarele exerciții după care verificați cu asistentul că totul este în regulă.

  1. Plasați-vă în directorul hacker-s\ secret/medium.
  2. Navigați în sistemul de fișiere către directorul toddler-s\ bottle/bof/easy pornind din directorul home al utilizatorului curent.
  3. Ajungeți înapoi în directorul home al utilizatorului curent fără a folosi simbolul tilda(~).

Dacă vrem să renunțăm la folosirea ghilimelelor în cazul fișierelor ale căror nume conțin spații, putem escapa caracterul special spațiu folosind \ .

Listarea fișierelor dintr-un director

Plasați-vă din nou în directorul /uso-lab/01-fs/support/basics.

După cum am observat mai sus, listarea conținutului unui director se poate face folosind comanda ls. Această formă de utilizator nu ne prezintă foarte multe informații despre fișierele din directorul inspectat (dimensiune, drepturi, tip, etc.). Folosind argumentul -l al lui ls putem lista conținutul unui director în format lung. Astfel, putem afla mai multe informații despre fișiere, cum ar fi (în ordine): drepturile asupra fișierului, numărul de linkuri către fișier, numele ownerului, numele grupului owner, dimensiunea fișierului, data ultimei modificări și numerele acestuia.

student@uso:~/.../01-fs/support/basics$ ls -l
total 16
drwxr-xr-x 3 student student 4096 aug 21 22:17  grotesque
drwxr-xr-x 5 student student 4096 aug 21 22:17 'hacker-s secret'
drwxr-xr-x 2 student student 4096 aug 21 22:17  rookiss
drwxr-xr-x 4 student student 4096 aug 21 22:17 'toddler-s bottle'

Putem lista conținutul unui director altul decât cel în care ne aflăm dacă dăm comenzii ls, ca argument, calea către acesta (fie absolută, fie relativă).

student@uso:~/.../01-fs/support/basics$ ls hacker-s\ secret/hard/
malware     pwnsandbox

Utilizarea simplă a comenzii ls fără a-i da un argument special nu ne afisează fișierele acunse dintr-un director. Pentru asta, folosim argumentul -a. De remarcat, numele fișierelor ascunse încep cu ..

. reprezintă directorul curent, iar .. reprezintă directorul părinte.

student@uso:~/.../01-fs/support/basics$ cd hacker-s\ secret/really\ hard/
student@uso:~/.../basics/hacker-s secret/really hard$ ls -a
.  ..  .unexploitable  exploitable  nuclear

Câteodată un director poate avea foarte multe intrări, iar noi să dorim inspectăm doar o parte dintre ele. Spre exemplu, vrem să aflăm mai multe informații despre fișierele cu extensia .pdf. Pentru asta, vom folosi wildcards.

student@uso:~/.../basics/hacker-s secret/really hard$ cd ~/uso-lab/01-fs/support/basics
student@uso:~/.../01-fs/support/basics$ cd rookiss
student@uso:~/.../support/basics/rookis$ pwd
/home/student/uso-lab/01-fs/support/basics/rookiss
student@uso:~/.../support/basics/rookis$ ls *.pdf
'ascii easy.pdf'   fix.pdf   otp.pdf

Până a trece mai departe, trebuie să vă asigurați că ați înțeles și reținut cum puteți lista conținutul unui director sub diverse forme. Pentru asta, parcurgeți următoarele exerciții după care verificați cu asistentul că totul este în regulă. Recomandăm folosirea paginii de manual pentru utilitarul ls (man ls). Vă va da informații despre toate argumentele pe care le puteți da comenzii ls. Putem da oricate argumente comenzii ls, fie sub forma ls -a -b -c, fie ls -abc.

  1. Să se listeze in format lung conținutul directorului grotesque/do\ you\ dare/ cu afișarea dimensiunii fișierelor în format human readable. (Hint: man ls și căutați după șirul human readable).
  2. Afișati conținutul directorului toddler-s\ bottle/ cu afișarea unui simbol pentru tipul de fișier. Remarcați diferențele dintre fișiere. (Hint: classify)
  3. Listați directorul hacker-s\ secret/hard fără a naviga către el.
  4. Listați întreg conținutul directorului grotesque/ (inclusiv fișiere ascunse).
  5. Listați doar fișierele cu extensia .txt din directorul toddler-s\ bottle/bof/easy folosind o singură comandă.
  6. Plasati-vă în directorul toddler-s\ bottle/passcode și afisați toate fișierele ale căror nume au prefixul passcode.

Creare de noi directoare într-o ierarhie

Pentru a crea un nou director în directorul curent folosim comanda mkdir.

student@uso:~/.../basics/toddler-s bottle/passcode$ cd ~/uso-lab/01-fs/support/basics
student@uso:~/.../01-fs/support/basics$ ls
grotesque  'hacker-s secret'   rookiss  'toddler-s bottle'
student@uso:~/.../01-fs/support/basics$ mkdir my-new-folder
student@uso:~/.../01-fs/support/basics$ ls
grotesque  'hacker-s secret'   my-new-folder   rookiss  'toddler-s bottle'

În cazul în care vrem să creăm un director al cărui nume conține spații, avem 2 posibilități.

Varianta 1:

student@uso:~/.../01-fs/support/basics$ mkdir "weird directory"
student@uso:~/.../01-fs/support/basics$ ls
grotesque          my-new-folder  'toddler-s bottle'
'hacker-s secret'   rookiss        'weird directory'

Varianta 2:

student@uso:~/.../01-fs/support/basics$ mkdir weird\ directory\ 2
student@uso:~/.../01-fs/support/basics$ ls
 grotesque          my-new-folder  'toddler-s bottle'  'weird directory 2'
'hacker-s secret'   rookiss        'weird directory'

Intrați în primul director creat. Vrem să creăm un fișier cu conținutul “Hello, world”.

student@uso:~/.../01-fs/support/basics$ cd w<TAB>
student@uso:~/.../support/basics/weird directory$ echo "Hello, world" > my_file.txt
student@uso:~/.../support/basics/weird directory$ ls -l
total 4
-rw-r--r-- 1 student student 13 aug 21 22:59 my_file.txt

Până a trece mai departe, trebuie să vă asigurați că ați înțeles cum puteți crea noi fișiere și directoare. Pentru asta, parcurgeți următoarele exerciții după care verificați cu asistentul că totul este în regulă. Recomandăm folosirea paginii de manual pentru utilitarul ls (man ls). Vă va da informații despre toate argumentele pe care le puteți da comenzii ls.

  1. Vă aflați în weird directory. Creați directorul cu numel third weird directory la calea basics/toddler-s\ bottle. Mutați-vă la acea cale.
  2. Creați un fișier gol cu numele my_second_file.txt.
  3. Modificați conținutul fișierului și afișați conținutul acestuia folosind comanda cat. Puteți folosi orice editor de text doriți pentru face modificări asupra fișierului.

Mutarea fișierelor și directoarelor

Pentru a redenumi un fișier folosim comanda mv. Comanda mv are formatul mv sursă destinație. În cazul în care uitați, folosiți pagina de manual a acesteia.

student@uso:~/.../basics/toddler-s bottle/third weird directory$ cd ~/uso-lab/01-fs/support/basics/toddler-s\ bottle
student@uso:~/.../support/basics/toddler-s bottle$ ls
bof         fd     input      random
collision   flag   passcode  'third weird directory'
student@uso:~/.../support/basics/toddler-s bottle$ mv collision my-new-collision
student@uso:~/.../support/basics/toddler-s bottle$ ls
 bof   flag    my-new-collision   random
 fd    input   passcode          'third weird directory'

Bineînțeles, putem redenumi un fișier aflat într-un alt director.

student@uso:~/.../support/basics/toddler-s bottle$ cd ~/uso-lab/01-fs/support/basics/toddler-s\ bottle
student@uso:~/.../support/basics/toddler-s bottle$ ls ../grotesque/do\ you\ dare/
ascii  dos4fun  elf  hunter  hunting  mipstake  rootkit
student@uso:~/.../support/basics/toddler-s bottle$ mv ../grotesque/do\ you\ dare/mipstake ../grotesque/do\ you\ dare/mistake
student@uso:~/.../support/basics/toddler-s bottle$ ls ../grotesque/do\ you\ dare?/
ascii  dos4fun  elf  hunter  hunting  mistake  rootkit

Folosim tot comanda mv pentru a muta un fișier într-un alt director.

student@uso:~/.../support/basics/toddler-s bottle$ ls
 bof   flag    my-new-collision   random
 fd    input   passcode          'third weird directory'
student@uso:~/.../support/basics/toddler-s bottle$ ls ../hacker-s\ secret/
 hard   medium  'really hard'
student@uso:~/.../support/basics/toddler-s bottle$ mv my-new-collision ../hacker-s\ secret/ # păstrand numele
student@uso:~/.../support/basics/toddler-s bottle$ ls
 bof   fd   flag   input   passcode   random  'third weird directory'
student@uso:~/.../support/basics/toddler-s bottle$ ls ../hacker-s\ secret/
 hard   medium   my-new-collision  'really hard'

Există posibilitatea să mutăm un fișier într-un alt director și să-i schimbăm numele în același timp.

student@uso:~/.../support/basics/toddler-s bottle$ ls
 bof   fd   flag   input   passcode   random  'third weird directory'
student@uso:~/.../support/basics/toddler-s bottle$ ls ../hacker-s\ secret/
 hard   medium   my-new-collision  'really hard'
student@uso:~/.../support/basics/toddler-s bottle$ mv flag ../hacker-s\ secret/my-new-flag # schimbând numele
student@uso:~/.../support/basics/toddler-s bottle$ ls
 bof   fd   input   passcode   random  'third weird directory'
student@uso:~/.../support/basics/toddler-s bottle$ ls ../hacker-s\ secret/
 hard   medium   my-new-collision   my-new-flag  'really hard'

În cazul în care avem mai multe fișiere de mutat într-un alt (același) director, folosim tot comanda mv.

student@uso:~/.../support/basics/toddler-s bottle$ ls
 bof   fd   input   passcode   random  'third weird directory'
student@uso:~/.../support/basics/toddler-s bottle$ ls ../rookiss/
'ascii easy.pdf'   echo2     loveletter   syscall
'brain fuck'       fix.pdf   otp.pdf
student@uso:~/.../support/basics/toddler-s bottle$ mv fd input ../rookiss
student@uso:~/.../support/basics/toddler-s bottle$ ls
 bof   passcode   random  'third weird directory'
student@uso:~/.../support/basics/toddler-s bottle$ ls ../rookiss
'ascii easy.pdf'   echo2   fix.pdf   loveletter   syscall
'brain fuck'       fd      input     otp.pdf

Până a trece mai departe în cadrul acestei secțiuni, trebuie să ne asigurăm că ați înțeles cum funcționează comanda mv. Rezolvați exercițiile următoare până să treceți mai departe. Consultați-vă cu asistentul pentru orice nelămurire.

  1. Mutați fișierul grotesque/asg în directorul grotesque/do\ you\ dare/ din locul în care vă aflați.
  2. Mutați fisierele elf hunter mistake din directorul grotesque/do\ you\ dare/ în directorul părinte al acestora.
  3. Navigați către directorul hacker-s\ secret și mutați directorul hard în directorul home al utilizatorului curent.
  4. Plasați-vă în directorul toddler-s\ bottle/bof/easy. Mutați în directorul basics toate fișierele ale căror nume încep cu bof și se termină cu .txt. (Hint: wildcards)

Pentru a redenumi un fișier am văzut că folosim comanda mv. În cazul în care vrem ca noul nume să conțină spații, procedăm ca mai devreme (vezi crearea directoarelor).

student@uso:~/.../toddler-s bottle/bof/easy$ cd ~/uso-lab/01-fs/support/basics
student@uso:~/.../01-fs/support/basics$ ls
 bof1.txt   bof4.txt   'hacker-s secret'  'toddler-s bottle'
 bof2.txt   bof5.txt    my-new-folder     'weird directory'
 bof3.txt   grotesque   rookiss           'weird directory 2'
student@uso:~/.../01-fs/support/basics$ mv rookiss/ "my new rookiss"
student@uso:~/.../01-fs/support/basics$ ls
 bof1.txt   bof4.txt   'hacker-s secret'  'toddler-s bottle'
 bof2.txt   bof5.txt    my-new-folder     'weird directory'
 bof3.txt   grotesque   'my new rookiss'    'weird directory 2'

Putem întâlni sitația în care vrem să redenumim un fișier al cărui nume conține deja spații, acestea trebuie escapate ca mai devreme. Putem scrie numele între ghilimele, însă există riscul să greșim în cazul numelor complicate și lungi. Cel mai sigur și ușor este să abuzăm de tasta <TAB> pentru a fi siguri că nu greșim. Vrem să modificăm numele directorului weird directory în weird directory again.

student@uso:~/.../01-fs/support/basics$ mv w<TAB> "weird directory again"
student@uso:~/.../01-fs/support/basics$ ls
 bof1.txt   bof4.txt   'hacker-s secret'  'toddler-s bottle'
 bof2.txt   bof5.txt    my-new-folder     'weird directory 2'
 bof3.txt   grotesque   'my new rookiss'    'weird directory again'

Până a trece mai departe, trebuie să ne asigurăm că ați reținut cum trebuie lucrat în cazul în care avem de-a face cu nume de fișiere/directoare care conțin spații. Până să treceți la următoarea secțiune, parcurgeți următoarele exerciții și consultați-vă cu asistentul.

  1. Mutați fișierul toddler-s\ bottle/passcode/random-org în directorul curent fără a naviga către acel fișier. (Hint: directorul curent este .)
  2. Copiați toate fișierele ale căror nume conțin spații din directorul toddler-s\ bottle/bof/hard în directorul home al utilizatorului curent fără a schimba directorul curent. (Hint: man cp)

Ștergerea fișierelor și directoarelor

Ne-a rămas o singură comandă de bază despre care nu am vorbit, ștergerea. Pentru a șterge un fișier, folosim comanda rm. Înainte să

student@uso:~/.../01-fs/support/basics$ cd ~/uso-lab/01-fs/support/basics/grotesque
 coin2  'do you dare'   elf   hunter   mistake
student@uso:~/.../support/basics/grotesque$ rm coin2
student@uso:~/.../support/basics/grotesque$ ls
'do you dare'   elf   hunter   mistake

Avem posibilitatea de a șterge fișiere multiple folosind o singură comandă. Pentru asta, va trebui să pasăm ca argument comenzii toate fișierele pe care dorim să le ștergem.

student@uso:~/.../support/basics/grotesque$ cd ~/uso-lab/01-fs/support/basic/toddler-s\ bottle/bof/easy
student@uso:~/.../toddler-s bottle/bof/easy$ ls
bof-bof-bof  can-you-bof  random-bof.txt
student@uso:~/.../toddler-s bottle/bof/easy$ rm bof-bof-bof can-you-bof
student@uso:~/.../toddler-s bottle/bof/easy$ ls
random-bof.txt

Ne aflăm în directorul ~/uso-lab/01-fs/support/basics/grotesque și vrem să ștergem un fișier dintr-un alt director fără a schimba directorul în care ne aflăm. Putem face acest lucru ușor dându-i comenzii rm calea către acel fișier (fie absolută, fie relativă).

student@uso:~/.../support/basics/grotesque$ ls
'do you dare'   elf   hunter   mistake
student@uso:~/.../support/basics/grotesque$ rm ../toddler-s\ bottle/bof/medium/getting-serious-here  
student@uso:~/.../support/basics/grotesque$ ls ../toddler-s\ bottle/bof/medium
student@uso:~/.../support/basics/grotesque$

În cazul în care vrem să ștergem un întreg director, comanda rm <nume_director> nu va funcționa. Trebuie să îi precizăm că vrem să ștergem recursiv toate fișierele și subdirectoarele din aceasta ierarhie. Pentru acest lucru, folosim argumentul -r al comenzii rm. Dacă directorul pe care vrem să-l ștergem este gol, putem folosi și comanda rmdir.

student@uso:~/.../support/basics/grotesque$ cd ~/uso-lab/01-fs/support/basics
student@uso:~/.../01-fs/support/basics$ ls
 bof1.txt   bof5.txt           'my new rookiss'      'weird directory again'
 bof2.txt   grotesque          random-org
 bof3.txt  'hacker-s secret'  'toddler-s bottle'
 bof4.txt   my-new-folder     'weird directory 2'
student@uso:~/.../01-fs/support/basic$ rm -r "weird directory again"
student@uso:~/.../01-fs/support/basic$ ls
 bof1.txt   bof4.txt   'hacker-s secret'   random-org
 bof2.txt   bof5.txt    my-new-folder     'toddler-s bottle'
 bof3.txt   grotesque   'my new rookiss'    'weird directory 2'
student@uso:~/.../01-fs/support/basic$ rmdir weird\ directory\ 2/
student@uso:~/.../01-fs/support/basic$ ls
 bof1.txt   bof4.txt   'hacker-s secret'   random-org
 bof2.txt   bof5.txt    my-new-folder     'toddler-s bottle'
 bof3.txt   grotesque   'my new rookiss'

Pentru a vă asigura că ați înțeles cum se șterg fișierele și directoarele dintr-o ierarhie, parcurgeți următoarele exerciții și consultați-vă cu asistentul în cazul oricărei nelămuriri.

  1. Mergeți în directorul my new rookiss și ștergeți fișierul syscall.
  2. În cadrul aceluiaș director, ștergeți fișierele loveletter și input folosind o singură comandă.
  3. Rămâneți în acest director. Ștergeți fișierul random-org din directorul părinte.
  4. Ștergeți directorul really hard din hacker-s secret.
  5. Ștergeți toate fișierele ale căror nume conțin spații din directorul toddler-s\ bottle/bof/hard.
  6. Ștergeți toate fișierele cu extensia .txt din directorul toddler-s\ bottle/bof/easy.
  7. Folosind o singură comandă, ștergeți tot conținutul directorului basics.
uso/laboratoare/new/01-fs/basics.txt · Last modified: 2019/10/02 23:04 by liza_elena.babu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0