Faceți căutări pe acest blog

duminică, 19 iunie 2011

La început a fost... CLI

 Prima etapă în interacțiunea om- mașină (calculator) a fost linia de comandă. CLI prezintă avantajul simplității, intuitivității (nu zâmbiți ironic, este mult mai simplu să rețineți/ înțelegeți câteva comenzi, decât să dați clicuri în neștire prin interfața grafică :D ), universalității (comenzile sunt valabile indiferent de distribuția sau mediul grafic folosit), și mai ales al complexității/ profunzimii setărilor (parametri, opțiuni date unei comenzi) și vitezei de lucru net superioare.

 O comandă este exact ce spune numele: un ordin adresat sistemului de operare să facă ceva. Este ca o conversație cu sistemul: computer fă asta.
 Atât... Subiect+ predicat+ complemente...
 Aprofundând puțin, subiectul este întotdeauna același, calculatorul/ computerul/ mașina/ sistemul, deci este inutil să specificăm acest lucru, se subînțelege, este implicit. Deci comanda va fi: fă asta. Acțiune+ parametri sau opțiuni.
 Exemple:
1- crearea unui fișier text:                                      touch fișier.txt
2- ștergerea unui fișier text:                                  rm fișier.txt
3- crearea unui director/ folder:                            mkdir director
4- ștergerea unui director -a) gol                          rmdir director
                                              b) plin/ ocupat           rm -rf director
 După cum se observă în ultimul exemplu au apărut ceva termeni noi (rf) precedați de -, caracter care se pune înaintea unei opțiuni. Simplu, aceștia sunt anumite opțiuni/ parametri necesare. Un director gol se șterge imediat, dar dacă directorul este ocupat cu subdirectoare sau fișiere, sistemul nu știe cum să interpreteze comanda: va șterge sau nu subdirectoarele și fișierele conținute? Trebuie precizări clare. În exemplul nostru r= recursive= se aplică conținutului directorului, și f= force= forțat= nu ne interesează că sistemul consideră un fișier necesar sau important, vrem să facă ce-i spune comanda. Da, -f poate fi o opțiune periculoasă...


Partea frumoasă a CLI este faptul că majoritatea comenzilor sunt:
1-numele aplicațiilor pe care dorim să le rulăm:
   mplayer fișier
   vlc fișier
  nvidia-settings
  systemsettings
2- numele acțiunii sau prescurtarea acestui nume sau un acronim (mda, în engleză, dar engleza e utilă oricui, nu?):
 cd= change directory= schimbă directorul curent= mutarea în alt director
 cp= copy= copie
 rm= remove= înlătură/ șterge
 date= dată= informați dată/ oră
 cal= calendar= afișează calendar

 Puteți observa simplitatea sintaxei.
 Mulți începători se blochează din cauza a două aspecte: locația (calea către directorul/ fișierul destinație) și permisiunile (drepturile pe care un utilizator le are sau nu asupra unei locații).
 Chestiile aste sunt mult mai simple decât sperați, odată înțeles mecanismul, totul e o joacă de copii! Evident, puțin exercițiu practic ajută întotdeauna.
 Hai să vedem care-i treaba cu cele două aspecte.

 A- Locația/ calea către un obiect. Prin obiect înțelegem un director/ fișier. În GNU/ Linux există o ierarhie simplă, toate partițiile/ directoarele/ fișierele  provin din și aparțin partiției  / (root). Este o ierarhie arborescentă.
 De exemplu partiția noastră home. Adresa/ locația/ numele/ calea corectă este: /home/user. Primul / semnifică partiția / (de acolo aparțin toate obiectele), apoi vine home, adică partiția unde sunt directoarele personale ale utilizatorilor, și-n fine user, adică numele corect al utilizatorului nostru. Să presupunem că avem trei conturi de user: dan, alex și root. Acești utilizatori au directorul personal /home/dan, /home/alex și respectiv /root. Fiecare director personal poate conține alte directoare și fișiere: /home/dan/Desktop, /home/dan/Downloads, /home/dan/Music, /home/dan/Videos, șamd, și evident fiecare director poate avea alte subdirectoare și fișiere.
 Partiția /home conținând directoarele /home la trei conturi de user (dan, shogun și stressat; conturi de user de pe distribuții diferite...):
 
 În practică este uneori greoi să scriem /home/dan/Music/Videoclipuri/Preferate, de aceea avem posibilitatea ca în interiorul partiției noastre /home să fie recunoscute implicit locațiile. Deci /home/dan/Music/Videoclipuri/Preferate poate fi scis doar Music/Videoclipuri/Preferate. Altă posibilitate: indiferent de unde ne aflăm (locația curentă, de exemplu /usr/bin, putem înlocui /home/dan cu caracterul ~. Deci /home/dan/Music/Videoclipuri/Preferate va fi ~/Music/Videoclipuri/Preferate.
 Un mic ajutor primim datorită funcției Autocomplete. Apăsând tasta Tab după ce scriem 2-3 litere dintr-un director, fișier, comandă, etc, numele va fi autocompletat. ~/Mu  va fi completat ~/Music  apoi mai scriem 2-3 litere ~/Music/Vid, apăsăm Tab și vom obține~/Music/Videoclipuri, șamd.
 Toate aceste directoare, subdirectoare și fișiere aparținând partiției /home/user sunt proprietatea userului respectiv, utilizatorul este proprietarul acestora, deci are toate drepturile asupra lor, poate crea, citi, modifica, copia, muta, șterge aceste obiecte după bunul plac. Se pare c-am ajuns la permisiuni/ drepturi de utilizare.


 B- Permisiuni. Un alt aspect care sperie (nejustificat, zic eu!) începătorii este reprezentat de drepturile  asupra unui obiect, partiție, director, fișier sau proces. În sistemele Linux, totul este un fișier; dacă ceva nu este un fișier atunci este un proces!
 Drepturile sau permisiunile acestea se împart în trei:
1- drepturi de citire= r= read = 4                            (poți edita un fișier)
2-drepturi de scriere= w= wright= 2                      (poți modifica un fișier)
3- drepturi de execuție= x= execute = 1                (poți executa/ rula un fișier)
 Directoarele au implicit mai multe drepturi decât fișierele. Un director are întotdeauna permisiuni de execuție, altfel acel director nu ar fi accesibil, nu ar putea fi deschis.
 Aceste drepturi sunt stabilite pe trei categorii: proprietar, grupul proprietarului și restul lumii, al utilizatorilor.
 Pentru a vedea permisiunile folosim în consolă comanda ls (list= listează/ afișează conținutul directorului curent), urmat de unul sau doi parametri: a= all= toate obiectele, chiar și cele ascunse, și l= long listing= dă detalii/ asta ne interesează. Evident comanda va fi ls -al sau doar ls -l dacă nu ne interesează fișierele ascunse, fișiere care sunt de configurare, deci deocamdată le ignorăm cu măreție...
 După cum puteți observa outputul comenzii ls -l este de genul:
[shogun@arch-stressat ~]$ ls -l
total 1000
drwxr-xr-x  3 shogun root   4096 Jun 18 06:48 ~
-rw-r--r--  1 shogun root 376686 Jun 18 07:25 arch-screen.png
-rw-r--r--  1 shogun root  83399 Jun 15 20:16 bootchart.png
drwx------  2 shogun root   4096 Jun 19 08:37 Desktop
drwxr-xr-x  2 shogun root   4096 Jun 19 14:24 Documents
drwxr-xr-x  8 shogun root   4096 Jun 16 19:52 Downloads
-rwxrwxrwx  1 shogun root    263 Nov 20  2010 fbterm-bi
drwxr-xr-x  2 shogun root   4096 Jun 17 20:36 gmediafinder-downloads
-rw-r--r--  1 shogun root   8486 Jun 19 08:37 imgur_history
-rw-r--r--  1 shogun root 443339 Jun 18 16:24 kdm_latest.png
drwx------  4 shogun root   4096 May  7 08:33 mail
drwxr-xr-x  5 shogun root   4096 May 14 19:51 Music
-rw-------  1 shogun root  12649 May 29  2010 Poante
-rw-r--r--  1 root   root    496 May 29 22:16 Poante.dat
drwxr-xr-x  6 shogun root   4096 May 22 10:53 screen-4.0.3
-rw-------  1 shogun root   1593 Dec  6  2010 screen.sh


Ok, simplu ca bună ziua. Bănuiesc c-ați realizat că ultima parte a fiecărei linii este numele directoarelor și fișierelor respective. Celelalte componente ale liniilor reprezintă în ordine, permisiunile asupra obiectelor (drwxr-xr-x), proprietarul obiectului (shogun) și grupul din care face parte (root), data și ora creării/ ultimei modificări (Jun 18 06:48).
 Deocamdată suntem interesați doar de drepturile asupra directoarelor/ fișierelor, deci vom încerca să ne lămurim care sunt acestea.
drwxr-xr-x
-rw-r--r--
 Prima linie începe cu caracterul d: avem de-a face cu un director.
 A doua linie începe cu o linie -: este vorba de un fișier.
 Următoarele 9 caractere reprezintă permisiunile pentru proprietar (owner), grupul acestuia (group) și pentru restul lumii (all), grupate câte trei. Primele 3 caractere= drepturi owner, următoarele 3= drepturi grup, ultimele 3= drepturile celorlalți utilizatori din sistem.
 Reamintesc:
r= read= 4= drept citire
w= wright= 2= drept scriere (modificare)
x= execute= 1= drept execuție
 În locurile unde unul din aceste caractere (r, w sau x) este înlocuit de o linie (-), înseamnă că acel drept lipsește.
 Pentru prima linie (drwxr-xr-x) avem următoarele permisiuni ale directorului (linia începe cu d) respectiv:
owner: rwx= drepturi complete: citire+ scriere+ execuție
grup: r-x= drepturi de citire și execuție, nu și cel de scriere
all: r-x= drepturi de citire și execuție, nu și cel de scriere
 Pentru a doua linie (-rw-r--r-- )avem permisiunile următoare pentru respectivul fișier (linia începe cu -):
owner: rw-= drepturi de citire și scriere, nu și cel de execuție, deci fișierul nu este executabil
grup: r--= doar drept de citire
all= r--= drept de citire

 Poate ați observat că am notat aceste permisiuni și cu cifre: 4, 2 și 1. Adunând aceste drepturi avem echivalentul numeric al drepturilor asupra unui obiect (unde nu avem acel drept nu adunăm numărul respectiv, eventual adunăm 0, ca semn al lipsei acelui drept):
rwx= 4+2+1= 7= toate drepturile
rw-= 4+2+0= 6= drepturi scriere- citire (nu și execuție)
r-x= 4+0+1= 5= drepturi scriere- execuție (nu și scriere)
r--= 4+0+0= 4= numai drept de citire, etc.
 Repet: în interiorul partiției noastre /home avem toate drepturile, și toate obiectele conținute de /home/userul_nostru ne aparțin!
 Ce facem în situația când trebuie să lucrăm cu alte directoare/ fișiere care nu ne aparțin și asupra cărora nu avem drepturi suficiente? Avem trei variante:
1- lucrul cu acele fișiere ca root;
2- modificăm acele drepturi cu comanda chmod;
3- modificăm proprietarul obiectului respectiv folosind comanda chown.

Putem obține drepturi de root (ATENȚIE: drepturi depline, totale!):
a- logându-ne ca root: comanda su urmată de introducerea parolei de root la cerere;
b- folosind sudo înaintea comenzii dorite (de exemplu sudo rm /root/.bashrc), asta cu condiția să avem instalat/ setat sudo pe sistemul nostru;
c- rulând o aplicație ca root: Alt+F2=> scriem în câmpul apărut kdesu dolphin / dacă folosim Kde sau gksu nautilus / dacă folosim Gnome)=> punem la solicitare parola de root, astfel pornim managerul de fișiere Dolphin sau Nautilus cu drepturi depline.

 Putem modifica drepturile asupra unui obiect:
 chmod a+x /usr/bin/bashburn        =dăm tuturor dreptul de execuție asupra fișierului /usr/bin/bashburn
 chmod -R 777 /media/disk1            = dăm drepturi depline tuturor asupra directorului /media/disk1 și a conținutului acestui director (opțiunea -R= recursiv= se aplică la orice conține acel director).

 Putem modifica proprietarul unui obiect cu chown:
 chown -R shogun:root /media/disk1

Sursă:    http://wiki.mandrivausers.ro/mandriva/ghid/sectiunea_3#consola_prietenul_nostru_cel_mai_bun

Niciun comentariu:

Trimiteți un comentariu

Back to top