User si superuser (root)

Linux este un sistem operativ de tip multiuser. In orice sistem Linux, fiecare user este identificat printr-un nume(username) unic, ca si “linuxboy” sau “ionescu”, fiecare user detine o anumita parte privata din sistemul operativ. Apoi avem un user special, pe nume “root”, care are toate permisele necesare pentru a face orice in tot sistemul. Userii obisnuiti au restrictii: pot rula aproape orice program si, in general, pot modifica doar fisierele care le detin ei. Root-ul pe de alta parte poate crea, modifica sau sterge orice fisier si pot executa orice program.

Exista comenzi in Linux care pot fi executate doar de root. Se poate deosebi un user obisnuit de un superuser privind caracterul care vine dupa numele userului, pentru user normal avem semnul $, pentru superuser avem semnul #.

Pentru a deveni superuser nu e nevoie sa iesiti si sa intrati din nou in sistem (ca si in Windows), doar scrieti in shell comanda:

$ su -l (urmata de enter)

Password: ******** (va cere parola de root)

# (sunteti superuser :) )

Ca sa iesiti din modul superuser o faceti cu comanda:

# exit

$ (semnul dolar va indica ca sunteti din nou user normal).

Permisele in Linux

Orice este tratat ca un fisier.

Important de retinut: in Linux orice este un fisier. Ne referim la o poza oarecare, sau la unitatea de cd-rom , la hard disk, Linux le trateaza pe toate ca pe un fisier.

In Linux accesul la fisiere sau directoare este restrictionat. Useri nu au acelasi tip de permis cand vor sa stearga , sa execute sau chiar sa citeasca un fisier. Fiecare fisier contine informatie despre cine este propietarul, ce permise are si alta informatie care define ce se poate face cu acel fisier, si de catre cine.

Permisele in sistemele Linux sunt definite pentru useri, grupuri si ceilalti , in exact aceasta ordine. Fiecare user apartine cel putin unui grup.

User: numele userului care detine fisierul. Prin defect userul care creaza fisierul e si propietarul acelui fisier.

Grupul: grupul de useri care detin fisierul. Toti useri apartinand acestui grup au aceleasi permise asupra fisierulul in chestiune.

Ceilalti: in engleza “others”, se refera la restul userilor care nu sunt nici propietarii fisierului si nici nu apartin grupului care detine fisierul. De obicei intlegem prin “ceilalti” restul lumii care au acces la acel sistem Linux.

Avem trei tipuri de permise in Linux: r = read (citi sau deschide), w = write (scrie sau modifica), x = execute ( executa). Fiecare din aceste trei permise sunt definite separat pentru user, grup si ceilalti. In Linux, cand o sa folositi linia de comanda pentru a schimba permise, useri si grupurile sunt reprezentate doar de literele initiale dupa cum urmeaza:

u = user

g = grup

o = other (ceilalti)

a = all ( toti, afecteaza pe toti useri si toate grupurile)

Ca sa verificam permisele la un fisier sau la un director oarecare o facem cu comanda ls -l. Exemplu:

ls -l doc.txt

iar rezultatul:

- rwx r- – r- – adrian proiect 850 Feb 22 20:49 doc.txt

Sa analizam un pic rezulatul comenzi:

In prima coloana avem zece caractere, primul caracter ne indica tipul fisierului, in cazul acesta un fisier obisnuit, reprezentat prin caracterul -. Cand primul caracter este litera d atunci este vorba de un director.

In continuare avem noua caractere care sunt permisele pentru user, grup si ceilalti, impartite in grupuri de cate trei caractere.

Caracterele 2,3,4 , in cazul nostru, rwx, apartin userului, (adrian, in acest caz) care este propietarul fisierului, in ordinea in care apar sunt:

r : read, il poate citi sau deschide

w: write, dreptul de a modifica fisierul

x: execute, dreptul de a executa fisierul, de exemplu in cazul unui program

Urmatoarele trei caractere (5, 6, 7) r- -, apartin grupului (proiect) din care face parte userul adrian :

r: read, orice user apartinad grupului proiect poate citi fisierul

-: nici un permis, nici un user apartinand grupului proiect (in afara de adrian, desigur) nu are dreptul de a modifica fisierul

-: nici un permis, nici un user apartinand grupului proiect (in afara de adrian) nu are dreptul de a executa fisierul

Ultimele trei caractere, r- -, sunt permisele care le au restul userilor, deci cei care nu apartin grupului proiect:

r: read, au dreptul de a citi fisierul

-: nici un permis, restul userilor nu au drept de a modifica fisierul

-: nici un permis, fara drept de a executa fisierul

In a doua coloana avem numele userului care detine fisierul, urmat de numele grupului caruia apartine userul.

Urmeaza mai multa informatie despre fisier, cum ar fi marimea lui, data cand a fost modificat pentru ultima data si, ultima coloana, numele fisierului.

Cum schimbam permisele

chmod este comanda care schimba permisele. Doar root-ul si userul care detine fisierul in cauza pot schimba permisele. chmod are doua moduri: simbolic sau numeric.

1) Modul simbolic

Modul simbolic este cel mai usor de tinut minte. Prima data decide pentru cine o sa schimbi permisele: pentru user (u), pentru grup (g), pentru ceilalti (o) sau pentru toti trei deodata (a). Apoi decide daca adaugi un permis (+), stergi un permis (-) sau stergi toate permisele anterioare si adaugi unul nou (=). Urmatorul lucru ce trebuie decis este tipul de permis care vrei sa-l schimbi, permisul de a citi (r), de a modifica (w) sau de a executa (x). Apoi, pentru a termina, indicam fisierul caruia o sa-i schimbam permisele.

Sa trecem la cateva exemple practice. Avem un fisier obisnuit numit testfile , fisierul are toate permisele, o listare a permiselor cu comanda ls -l testfile ne da ca rezultat: -rwxrwxrwx.

Stergem toate permisele si adaugam permisul de a citi pentru toti:

$ chmod a=r testfile

Dupa aceia permisele arata asa: -r – -r – -r – -

Adaugam permisul de a executa pentru grup:

$ chmod g+x testfile

Acum permisele sunt: -r – -r-xr – -

Adaugam permisul de a modifica si executa pentru userul care detine fisierul. Dupa cum vedeti se pot seta mai multe permisii deodata.

$ chmod u+wx testfile

Permisele arata asa dupa comanda: -rwxr-xr- -

Stergem permixul de executa pentru grup si user.

$ chmod ug-x testfile

Acum permisele sunt: -rw-r- – r- -

2) Modul numeric

Cealalta modalitate de a schimba permisele cu chmod este modul numeric. Pare un pic mai complicat, dupa ce o sa intelegeti mecanismul o sa vedeti ca este simplu si rapid. Dupa cum spuneam permisele sunt reprezentate numeric de un numar format din 3 cifre.

4 = citi (r)

2 = scrie sau modifica (w)

1 = executa (x)

0 = nici un permis (-)

Pentru a obtine permisele puneti numarul de acord cu permisele dorite. De exemplu un permis total rwx in mod numeric este reprezentat de numarul 7, sau 4+2+1=7. Simplu, nu? Un permis de a citi si executa rx in mod numeric este 5, sau 4+1=5, iar un permis de citit si modificat rw este 6, sau 4+2=6.

Un exemplu:

$ chmod 755 testfile

Iar permisele ar arata asa: -rwxr-xr-x, permis total pentru propietarul fisierului (7=4+2+1) si permis de a citi si executa pentru grup si restul (5=4+1).

Inca un exemplu:

$ chmod 640 testfile

Ne lasa ca rezultat permisele: -r-xr – - – - -, permis de a citi si executa pentru propietar (6=4+2), permis pentru a citi pentru grup (4), iar pentru restul nici un permis (0).

Modul numeric nu esta asa de intuitiv ca si cel simbolic, dar este mai rapid si mai eficient.

Scurta introducere in Linux

Totul a inceput in 1991 cu un tanar student al Univesitatii Helsinki din Finlanda pe nume Linus Torvalds. Linus folosea in reteaua universitatii un mic sistem operativ numit Minix, dar nemultumit de limitatiile pe care le avea Minix-ul incepe sa scrie codul pentru un sistem operativ nou pe care avea sa-l numeasca Linux. Asa se naste primul kernel sau nucleu Linux, care il inregistreaza sub licenta GPL (Liecenta Publica Generala), licenta care permite libera distributie, modificare si folosire de software. Acesta a fost doar inceputul, imediat o multime de programatori din toate colturile lumii s-au alaturat proiectului, iar Linux a inceput sa creasca vertiginos.

Pentru multa lume cuvantul “Linux” suna a ceva misterios, ceva care e folosit doar de informaticieni si hackeri experti.Nimic mai neadevarat, Linux-ul din ziua de azi este destul de asemanator cu sistemul operativ Windows®, asta in ceea ce priveste aspectul grafic. Este adevarat ca Linux este un pic mai complex decat Windows®, dar odata probat o sa ramaneti incantat de prestatiile pe care vi le ofera. De ce sa folositi Linux? Imi trec prin minte o gramada de motive din care o sa amintesc doar cateva:

  • Pretul. Totul este gratis, orice program se poate descarca sau instala cu un coste zero. Este ideal pentru a fi folosit in scoli sau universitati cu un mare numar de calculatoare datorita costului redus care il presupune instalarea si intretinerea sistemelor Linux.
  • Securitate. Este mult mai sigur ca si Windows®, aproape ca nu exista virusi pentru Linux iar putinele “gauri” de securitate care se descopera sunt reparate foarte repede.
  • Stabilitate. Cand o sa folositi Linux o sa vedeti ca sunt foarte rare cazurile in care acesta se blocheaza, dovada ca in ziua de azi 80% din servidoarele web din toata lumea folosesc Linux ca plataforma, iar mari companii ca IBM, Dell, Hewlett-Packard, Novel, Oracle il folosesc in sistemele lor.
  • Compatibilitate. Se poate instala pe o mare varietate de hardware: computere personale(PC, MacIntosh si PowerPc), telefoane mobile, computere de buzunar, videoconsolas(XBox, Play Station 3, Play Station Portable, Dreamcast…).
  • Upgrade. Linux se misca foarte repede, nucleul este deja la versiunea 2.6 si se inbunatateste constant pentru a suporta hardware nou.
  • Personalizare. Mii de programe, aplicatii, gadgeturi sunt disponibile gratis pentru a face Linux sa arate asa cum vrei tu.
  • Utilizeaza putine recursuri. Ruleaza bine pe calculatoare vechi, nu are nevoie de hardware foarte performant, pentru a-l proba puteti sa folositi vechiul calculator care zace aruncat intr-un colt.

Pentru cei care nu au vazut inca Linux in actiune:

Cool, nu?

Daca v-am starnit curiozitatea si vrei sa simtiti pe pielea voastra ce inseamna Linux puteti sa va descarcati un LiveCd , va recomand Knoppix pentru usurinta cu care recunoaste hardware sau Gentoo pentru flexibilitatea care o ofera.

Ce este un LiveCd? Un LiveCd nu este altceva decat o distributie Linux functionala 100%, fara a fi nevoie de a instala nimic in calculatorul in care il probam. Avem nevoie doar de un calculator care poate boota de pe un cd(majoritatea pot). LiveCd-ul foloseste memoria RAM a calculatorului pentru a instala un “hard disk virtual” care emuleaza un hard disk normal. Nu va fie frica sa probati in orice calculator, cand o sa-l restartati totul o sa fie exact ca inainte, LiveCd-ul nu modifica nimic din configuratia originala.

Acelora care vor sa incerce o instalare reala le recomand sa inceapa cu Ubuntu, o distributie cu instalare grafica si care vine cu un desktop foarte complect si usor de folosit.Succes!

Sistemul de fisiere in Linux

Ca sa folositi orice sistem Linux, trebuie prima data sa intelegeti cum este organizat sistemul de fisiere in Linux. Fiecare fisier Linux este situat intr-o colectie numita director. Directoarele sunt ca si carpetele din sistemele Windows sau Mac. Directoarele formeaza o ierarhie sau arbore (tree): un director poate contine alt director, numit subdirector, care poate contine la randul lui alte fisiere si subdirectoare, si asa mai departe, pana la infinit. Directorul din varful ierarhiei este numit director root si este reprezentat de un slash ( / ).

Ne referim la fisiere si directoare folosind “nume si slash-uri”, sintaxa care este numita in engleza path(traducerea romaneasca fiind “cale “). O sa folosesc in continuare denumirea de “path”. De exemplu acesta este un path:

/unu/doi/trei/patru

care se refera la un director root /, care contine un director unu , care contine un director doi, care contine un director trei, ce contine un fisier sau un director final, patru. Daca path-ul incepe cu directorul root este numit paht absolut , daca nu, este un path relativ.

Cand rulam un shell, shell-ul se afla intr-un anumit director (in modul abstract).Sa presupunem ca suntem logati intr-un sistem Linux cu un user numit “adrian”, daca rulam un shell acesta o sa fie “situat” in directorul /home/adrian. Cand creem un nou user automat se creaza si un director /home/numeleuserului, care o sa fie directorul de lucru al userului. Cel mai simplu mod de a vedea unde este “situat” shell-ul intr-un moment dat este cu comanda pwd. Putem avea deschise cate shell-uri dorim, fiecare din ele putand fi “situate” in alt director pentru a ne face lucrul mai usor. Exemplu practic: suntem logati intr-un sistem Linux cu un user numit “linuxboy”. Deschidem un terminal si executam:

$ pwd (print working directory – ne arata directorul acutal)

o sa avem ca rezultat:

/home/linuxboy

Sa presupunem ca in subdirectorul linuxboy avem un alt subdirector numit “mystuff”. Deschidem un alt terminal si ne schimbam de director cu comanda:

$ cd mystuff

acum suntem “situati” in directorul mystuff. Executam din nou:

$ pwd

iar rezultatul este:

/home/linuxboy/mystuff

Acum avem doua shell-uri deschise, fiecare din ele fiind situate intr-un director diferit: /home/linuxboy si, respectiv, /home/linuxboy/mystuff.

Directoarele home

Fisierele personale ale userilor se gasesc in directorul /home (pentru useri normali) si in directorul /root (pentru superuser). Directorul tau personal este de obicei /home/userul-tau, ex: /home/adrian, /home/goodboy, etc.

Ca sa ne intoarcem automat in directorul nostru /home executam in terminal comanda cd (change directory) fara nici un parametru.

Cum spuneam Linux este un sitem multiuser, daca vrem sa ne situam in directorul /home al unui user in particular o putem face cu comanda:

cd ~“user”.

Ex:

$ cd ~adrian ( o sa ne situeze in directorul /home al userului adrian)

ca sa vedem rezulatatul folosim din nou comanda pwd:

$pwd (comanda “print working directory”)

iar rezultatul:

/home/adrian

Directoare de sistem

Un sistem Linux poate avea mii de directoare de sistem. Aceste directoare contin fisiere ale sistemului operativ, aplicatii, documente, practic orice in afara de fisiere private apartinand userilor (care de obicei le gasim in /home). Daca nu esti un administrator de sistem practic o sa intri foarte rar in majoritatea din aceste directoare – dar cu un pic de cunostinte poti sa intelegi sau sa ghicesti scopul lor.

Adesea numele directoarelor de sistem contin trei parti, pe care noi le vom numi scop, categorie si aplicatie (nu este ceva standard dar te vor ajuta sa intelegi mai bine unele lucruri).

Luam ca exemplu directorul: /usr/local/share/emacs

/usr/local ne arata scopul (fisiere de sistem instalate local)

/share ne arata categoria- de obicei documentatie

/emacs ne arata aplicatia – emacs este un editor de text

Poti explora sitemul de directoare cu comanda ls. Exemplu:

ls -l / , iti va lista toate subdirectoarele al directorului root (/).

ls -l /bin, iti va lista subdirectoarele ale subdirectorului /bin.

Categorii de directoare

O categorie ne spune tipul fisierelor aflate intr-un director. De exemplu, daca categoria este bin, putem fi siguri ca acel director contine programe.

Categoria programe:

bin programe ( de obicei fisiere binare)

sbin programe ( de obicei fisiere binare) destinate a fi rulate de superuser, root

lib librarii de cod utilizate de programe

libexec programe folosite de alte programe, un fel de “librarii de programe executabile”

Categoria documentatie:

doc documentatie

man fisiere de documentatie (manuale) care sunt folosite de programul man; de obicei aceste fisiere sunt comprimate

share fisiere specifice apartinand programelor, cum ar fi exemple de configuratie sau instructiuni de instalare

Categoria configurarea sistemului

etc fisiere de configuratie a sistemului

init.d fisiere de configuratie a felului in care porneste Linux

Categoria programare

include fisiere pentru programare

src codul sursa ale programel

Categoria web

cgi-bin scripturi/programe care se executa in paginile web

html pagini web

www pagini web

Categoria hardware

dev fisiere pentru componente hardware: hard disk, cd-rom , etc.

mnt puncte de montaj: directoare ce proportioneaza acces la hard disk, cd-rom, usb, etc.

Categoria logs

var fisiere specifice ale computerului, create si actualizate pe masura ce sistemul ruleaza

log fisiere de log, in ele se inregistreaza tot ce se intampla in sistem

mail contine fisiere cu mail-urile primite

run fisiere PID, contin ID-urile de la procesele active

tmp director de stocare temporala pentru programe sau useri

proc informatii despre sistem in timp real

Cam atat despre sistemul de fisiere, in continuare o sa aruncam o privire asupra unui aspect important al fisierelor in Linux: securitatea.

Terminalul de Linux

Ai terminat de instalat Linux-ul, totul merge perfect dar te-ai plictisit de schimbat tema de la desktop. Vezi tot timpul o chestie numita “terminal” si te-a facut curios. E timpul sa inveti unde este adevarata putere a Linux-ului: linia de comanda sau mai pe scurt shell.

Ce face shell-ul? Shell-ul preia comenzile scrise de noi prin intermediul tastaturii si le transmite sistemului operativ sa le execute. Pe vremuri shell-ul era singura interfata disponibila in sistemele Unix, in ziua de azi avem interfata grafica (GUI) in completarea liniei de comada. Cel mai popular program shell in Linux este bash. Xterm, gnome-terminal, konsole… toate sunt programe care iti deschid o fereastra din care poti interactua cu shell-ul.

Ce este o comanda? O comanda Linux este numele unui program urmat de optiuni si argumente. Numele programului se refera la un program aflat undeva pe hard disk pe care shell-ul o sa-l gaseasca si o sa-l execute. Optiunile, care de obicei incep cu semnul cu caracterul “-” , afecteaza comportarea programului iar argumentele reprezinta de obicei nume de fisiere sau directoare la care sa se aplice comanda. De exemplu aceasta comanda numara linile dintr-un fisier:

$ wc -l fisierulmeu

wc este programul (word count), -l este o optiune care indica programului ca trebuie sa numere liniile, iar myfile este argumentul care indica programului ce fisier trebuie sa citeasca.

Optiunile pot fi date individual:

$ programulmeu -a -b -c fisierulmeu (trei optiuni individuale)

sau pot fi combinate in spatele caracterului “-”:

$ programulmeu -abc fisierulmeu (este acelasi lucru ca si -a -b -c)

Bun, cred ca stiti destul despre shell asa ca deschideti unul. Ar trebui sa aveti un prompter care contine numele userului urmat de numele calculatorului terminat in semnul dolar ($).

Important: nu lucra niciodata in Linux logat ca si root decat daca este absolut necesar. Daca nu ai un user normal fa-ti unul acum.