Sunteți pe pagina 1din 61

Sistemul de operare UNIX

Generalităţi
UNIX este un sistem de operare (SO) cu instrumente sofisticate de alocare a resurselor şi
gestiune automată a memoriei de tip time-sharing, multitasking şi multiutilizator. O altă
caracteristică a SO UNIX este faptul că promovează modularitatea permiţând extinderea simplă a
funcţiilor sale ceea ce duce la creşterea continuă a performanţelor SO. Pentru operaţiile de
intrare/ieşire sunt utilizate aşa-numitele intrări/ieşiri generalizate prin asocierea a câte unui fişier de
tip special fiecărei intrări/ieşiri. În scopul realizării mediului multitasking există un sistem de
gestiune a proceselor reentrante şi asincrone multiple, care se pot sincroniza prin intermediul unui
sistem de întreruperi logice. Gestiunea memoriei se face printr-un mecanism ce permite schimbul
de pagini între memoria RAM şi cea virtuală, gestionându-se spaţiul alocat execuţiei proceselor şi
controlându-se timpul de acces la procesele în aşteptare. Pentru interacţiunea cu utilizatorul, SO
UNIX dispune de o interfaţă simplă şi interactivă prin intermediul componentei SHELL, care nu
este integrată în nucleul sistemului de operare (KERNEL).
Componenta SHELL reprezintă mecanismul prin care sistemul de operare realizează
interfaţa între utilizator şi sistemul de calcul. Această componentă include un interpretor de
comenzi care citeşte liniile introduse de către utilizator şi determină execuţia comenzilor solicitate.
Printre cele mai populare componente SHELL se poate menţiona Bourne SHELL (sh), bash
(Bourne Again SHELL), Berkeley C SHELL (csh) şi altele. Aceste SHELL-uri sunt orientate pe
text. Pentru facilităţi grafice printre cele mai cunoscute sunt: Graphic Interface al firmei Macintosh
sau Presentation Manager de la IBM, X/Window de la MIT, OpenLook al firmelor AT&T şi SUN,
DECwindows al firmei DEC.
SO UNIX este utilizat pe toate tipurile de calculatoare, începând de la PC până la
supercalculatoare. În esenţă, orice UNIX conţine un nucleu, una sau mai multe componente
SHELL şi un sistem de fişiere.
Linux face parte din familia sistemelor de operare UNIX. Deși există numeroase
implementări ale SO Linux, există multe similitudini în acestea, deoarece maşinile Linux sunt ca
un întreg alcătuit din piese pe care le adăugăm în funcţie de nevoile pe care le avem sau de
viziunea proprie.
Linux-ul se bazează pe unelte GNU, care asigură un set de standarde pentru alcătuirea şi
gestionarea sistemului. Toate uneltele GNU sunt sursă deschisă, aşa că pot fi instalate pe orice
sistem. Cele mai multe distribuţii oferă pachete precompilate ale celor mai cunoscute unelte, cum
ar fi pachetele RPM de la RedHat şi pachetele Debian (deb sau dpkg) din distribuţia cu acelaşi
nume (sau din Ubuntu).

Iată o listă a unor programe GNU mai cunoscute:


- Bash: consola GNU
- GCC: compilatorul C al GNU
- GDB: unealta pentru căutarea erorilor
- Coreutils: un set de unelte de bază în stilul UNIX, precum ls, cat sau chmod
- Findutils: utilitar pentru căutarea şi cercetarea fişierelor
- Fontutils: folositor la convertirea fonturilor dintr-un format în altul şi realizarea de fonturi
- The Gimp: program pentru gestionarea imaginilor din GNU
- Gnome: interfaţa grafică cu utilizatorul

1
- Emacs: un editor puternic
- Ghostscript şi Ghostview: interpretoare şi interfaţă grafică pentru fişierele
PostScripts
- GNU Photo: program pentru interacţiunea cu aparatele foto digitale
- Octave: un limbaj de programare, destinat iniţial pentru executarea de calcule numerice şi
procesări de imagine
- GNU SQL: baze de date relaţionale
- Radius: server pentru autentificare la distanţă şi gestiune reţea ș.a.

Pentru a instala pachetele lipsă sau pachete noi, aveţi nevoie de un tip de program pentru
gestionarea pachetelor. Cele mai cunoscute implementări includ RPM şi dpkg. RPM este numit
programul de gestionare a pachetelor RedHat (RedHat Package Manager). Dpkg este
programul de gestionare a pachetelor Debian, care utilizează o interfaţă numită apt-get, care
poate gestiona şi pachete RPM. Novell Ximian Red Carpet este o implementare a
programului RPM, care dispune de o interfaţă grafică, realizată de către compania Novell.
Kernelul Linux - coloana vertebrală a sistemului, nu este parte a proiectului GNU (GNU nu
este UNIX), dar utilizează aceeași licență cu programele GNU. Marea majoritate a utilităților și
uneltelor pentru dezvoltare, care nu sunt specifice Linux-ului, sunt luate din proiectul GNU.
Deoarece orice sistem care se dorește a fi utilizabil trebuie să conțină atât kernelul, cât și un set
minimal de utilități, există voci care cer ca un asemenea sistem să fie numit sistem GNU/Linux.
Structura generală a sistemului de operare UNIX
Ca orice sistem de operare, UNIX asigură mecanisme pentru gestionarea resurselor
sistemului de calcul şi o interfaţă pentru utilizatori şi programele de aplicaţii. O primă caracteristică
a acestui SO este reprezentată de faptul că interfaţa cu structura fizică a sistemului de calcul nu se
face prin intermediul programului BIOS. UNIX are propriile rutine pentru interacţiunea cu sistemul
fizic al calculatorului. Din acest motiv, după ce a fost încărcat în memorie, interacţiunea cu
componenta hardware este făcută direct (ignorându-se BIOS-ul) de către nucleul sistemului de
operare (fig. 1).

Figura 1 - Interacţiunea UNIX cu structura fizică

Structura de programe a SO UNIX este alcătuită din trei componente majore (fig. 2):

2
Figura 2- Componentele software ale sistemului de operare UNIX

- nucleul (Kernel);
- sistemul de fişiere (SF) ce cuprinde programe utilitare, aplicative şi programe de gestiune
I/E;
- SHELL.
Relaţiile între cele trei module principale ale sistemului se realizează prin:
- apeluri sistem;
- utilitare;
- proceduri standard folosite de limbajul C;
- programe de gestiune a intrărilor/ieşirilor, furnizate odată cu sistemul şi diferite de la un
sistem de calcul la altul.
Interfeţele oferite utilizatorului de către sistem sunt organizate pe trei niveluri:
- nivel exterior nucleului (prin utilitare);
- nivel intermediar oferit de funcţiile din biblioteca standard C;
- nivel scăzut oferit de funcţiile sistem.
Nucleul sistemului de operare UNIX este partea centrală a sistemului asigurând servicii sistem
către programele de aplicaţie pentru realizarea gestiunii proceselor, a memoriei, a intrărilor/ieşirilor
şi a timpului. Nucleul gestionează memoria reală, alocă procesorul în mod automat şi furnizează
răspunsul pentru funcţiile sistem (system calls) apelate de procesele de aplicaţie.
Sistemul UNIX creează şi distruge frecvent procese. De exemplu, ori de câte ori un utilizator
introduce o comandă, SHELL-ul creează un proces separat pentru a rula fişierul executabil asociat
comenzii. Fiecare proces posedă o regiune de cod, o regiune de date, o stivă şi structuri de date
nucleu asociate, care constituie contextul procesului. În mod normal contextul procesului include
conţinutul registrelor, prioritatea procesului şi o listă a fişierelor sale deschise. Procesele nu pot să-
şi modifice direct contextul asociat, ci doar să solicite modificări prin intermediul funcţiilor sistem.
Procesele pot fi terminate voluntar (prin apelul funcţiei sistem exit) sau involuntar ca rezultat al
acţiunilor ilegale, al semnalelor (inclusiv retragerea forțată a procesorului) sau al întreruperilor
generate de utilizator.
Accesul în sistem
Sub UNIX mai mulţi utilizatori pot folosi calculatorul în acelaşi timp, executând
independent diferite aplicaţii. Pentru a avea acces la un sistem UNIX, utilizatorul trebuie să
primească un cont. Pentru un utilizator contul este reprezentat de un nume şi o parolă.
Administratorului contul servește pentru a duce evidenţa utilizării resurselor la care utilizatorul are
drept de acces.

3
Utilizatorii unui sistem de operare UNIX se împart în două mari categorii: superutilizatorul numit
și administrator de sistem (superuser) şi utilizatorii obişnuiţi (users).
Administratorul de sistem are drepturi de acces nelimitate şi are ca sarcină principală administrarea
şi întreţinerea sistemului de operare. Numele administratorului este fi întotdeauna root.
Utilizatorii obişnuiţi au drepturi de acces limitate în sistem, drepturile de acces putând fi extinse
sau restrânse, până la anulare, de către administratorul de sistem. Utilizatorii obişnuiţi pot forma
grupuri de utilizatori cărora administratorul de sistem le poate acorda drepturi comune sau
individuale.
Structura fişierelor sub sistemul de operare UNIX
Una din cele mai importante funcţii ale unui sistem de operare este gestionarea fişierelor
proprii şi ale utilizatorilor. Pentru a putea fi folosite, fişierele trebuie, pe de o parte, să fie uşor de
memorat şi uşor de gestionat, iar pe de altă parte, trebuie să fie de dimensiuni adecvate mediului
fizic accesibil. Aceste cerinţe impun ca sistemul de fişiere să aibă o structură logică eficientă şi o
structură fizică potrivită pentru dispozitivele utilizate în păstrarea fişierelor.
Tipuri de fişiere
În concepţia UNIX, un fişier este un şir de caractere terminat printr-o marcă de sfârşit de
fişier, considerându-se uneori că un fişier este constituit dintr-un set de linii, fiecare linie
terminându-se cu un caracter de linie nouă, care este generat de la tastatură atunci când se tastează
ENTER.
Fiecărui utilizator i se atribuie un director care conţine fişierele utilizatorului, numele de fişiere
având până la 14 caractere, cu excepţia spațiului. Sistemul UNIX face deosebirea între caractere
mari şi mici. Este permisă utilizarea punctului (.) în cadrul numelui fişierelor, apărând astfel
posibilitatea diferenţierii între mai multe fişiere înrudite.
Sistemul de operare UNIX System V recunoaşte patru tipuri de fişiere: fişiere obişnuite, fișiere
speciale, fișiere director (catalog) şi FIFO.
Fişiere obişnuite
Un fişier obişnuit este privit de către sistemul de operare ca un şir de octeţi, fără o organizare
logică specială. Un astfel de fişier poate conţine informaţii precum:
- informaţie binară (pentru un fişier în format executabil);
- linii de text, separate de caracterul NewLine (cod ASCII 10H).
Structura logică a informaţiei din fişier cade exclusiv în sarcina programului.
Fişiere speciale
O particularitate care diferenţiază SO UNIX de alte sisteme de operare este asocierea
dispozitivelor periferice cu fişiere speciale. Fişierele speciale sunt citite/scrise exact ca şi cele
obişnuite, rezultatul unei astfel de operaţii fiind activarea driver-ului dispozitivului asociat. Un
program de aplicaţie poate utiliza aceeaşi sintaxă pentru a accesa un fişier obişnuit sau unul
special.
Unui dispozitiv periferic îi este asociat cel puţin un fişier special, care va conţine întotdeauna
informaţii despre driver-ul acestui periferic. Posibilitatea de a trata perifericele ca fişiere speciale
asigură următoarele avantaje:
- simplitate şi eleganţă - utilizarea unor comenzi similare pentru fişiere şi dispozitive
periferice;
- fişierele speciale beneficiază de mecanismul de protecţie al fişierelor.
Fişiere director și de tip FIFO

4
Fişierele director reprezintă o modalitate de a structura logic sistemul de fişiere. Informaţia din
director este organizată ca o tabelă care conţine câte o intrare pentru fiecare fişier din acel director.
O astfel de intrare memorează identificatorul intern (inumber) şi numele fişierului. Fiecare
utilizator dispune de un director propriu în care îşi poate crea propriile fişiere şi care se numeşte
home directory. Fişierul director poate conţine orice tip de fişiere. El nu poate fi citit sau scris în
mod direct, ci doar prin intermediul anumitor programe (ls, mv, rm, ln etc).
Fişierele de tip FIFO sunt fişiere speciale utilizate pentru realizarea comunicaţiei între procese prin
mecanismul de conductă (pipe).
Structura arborescentă a sistemului de fişiere
În sistemul de operare UNIX fişierele sunt organizate într-un sistem de fişiere cu structură
arborescentă. O astfel de structură reprezintă un mod de organizare eficient, deoarece permite
utilizatorilor să-şi creeze medii proprii de lucru şi să-şi grupeze logic fişierele. Toate fişierele sunt
structurate în directori, organizate ierarhic, în vârful ierarhiei (la rădăcina arborelui) aflându-se un
director particular numit rădăcină (root), notat cu simbolul linie de împărţire - slash (/).
Structura standard a sistemului de fişiere pentru sistemul de operare UNIX este prezentată în figura
3.

Figura 3 - Structura standard a sistemului de fișiere


Protecţia fişierelor

5
Toate sistemele UNIX includ o schemă formală a drepturilor de acces la fişiere, care
prevede în general că utilizatorii obişnuiţi au deplin acces la propriile lor fişiere şi acces restrâns la
fişierele de sistem. Schema de acces la fişiere prevede trei drepturi de acces: read (r) – citire, write
(w) – scriere şi execute (x) – execuţie şi trei categorii de utilizatori: user (u) - proprietar, group (g) -
grup şi others (o) - ceilalţi utilizatori. Rezultă că vor trebui să existe 9 poziţii pentru precizarea
completă drepturilor (3 drepturi de acces x 3 categorii de utilizatori).
Pentru fişiere, semnificaţia drepturilor de acces reiese din numele acestor drepturi, write
incluzând şi posibilitatea de ştergere. Pentru fişierele director, drepturile de acces au alte
semnificaţii:
- read – există posibilitatea de listare a directorului cu comanda ls;
- write – se pot crea/şterge fişiere director;
- execute – se poate parcurge directorul pentru accesul la fişierele conţinute.
Drepturile de acces pot fi vizualizate cu comanda ls, cu opţiunile:
- l (forma lungă);
- a (toate intrările);
- t (sortează după tipul ultimei modificări);
- r (ordine inversă).
În urma comenzii pe ecran este afişat un text de forma:

Primul caracter dintr-o linie indică tipul fişierului: director (d), fişier special (b sau c) sau fişier
ordinar (-). Următoarele nouă caractere descriu drepturile de acces ale proprietarului fişierului
(primele trei caractere), membrilor grupului (următoarele trei) şi celorlalţi utilizatori (ultimele trei
caractere). Literele r, w, x sunt întotdeauna listate în această ordine; prezenţa unei litere indică
prezența dreptului, iar semnul minus indică absenţa dreptului respectiv. Următoarele coloane
indică, în ordine, numărul de legături, numele proprietarului, numele grupului, numărul de
caractere din fişier şi data la care fişierul a fost modificat ultima oară.
Schimbarea drepturilor de acces se face cu comanda chmod. În această comandă este necesar să
fie specificate următoarele informaţii:
- pentru ce persoane se stabilesc drepturile de acces;
- care sunt drepturile care se modifică;
- care este fişierul ale cărui drepturi de acces se modifică.
Pentru persoanele ale căror drepturi de acces se stabilesc pot fi folosite caracterele u (utilizator), g
(grup), o (alţii) sau a (toţi). Pentru drepturile care se modifică elementele se dau sub forma unui
grup de două caractere. Primul caracter este + (pentru acordarea dreptului) sau – (pentru retragerea
dreptului) urmat de unul din caracterele r, w sau x care se referă la dreptul de acces în discuţie.
Montarea volumelor în arborele sistemului de fişiere
Orice disc UNIX pe care se pot crea mai multe partiţii poate să conţină mai multe sisteme de
fişiere. Nucleul UNIX are un sistem de fişiere propriu care conţine comenzile necesare gestionării
sistemului (root file system). Toate sistemele de fişiere, cu excepţia lui root file
system care este mereu activ, pot fi sau nu încorporate în structura accesibilă la un moment dat.
Dacă un sistem de fişiere este accesibil, se spune despre el că este montat. Fiecare volum UNIX
conţine un sistem propriu de fişiere, cu o rădăcină ce poate fi ataşată la root file system
prin operaţia de montare, care îl extinde pe acesta din urmă cu subarborele corespunzător

6
volumului care a fost montat. Este posibilă şi operaţia inversă când un volum UNIX este făcut
inaccesibil prin demontare.
Comenzile de montare şi demontare a volumelor sunt accesibile numai administratorului
sistemului.
Operarea sub sistemul de operare UNIX
Pentru distingerea celor două categorii de utilizatori prompterul afişat de sistemul de
operare este diferit, în mod implicit fiind afişat caracterul “#” pentru superutilizator şi caracterul
“$” pentru utilizatorul obişnuit. Directorul utilizatorului se numeşte “home directory” şi el
devine automat directorul curent la începerea sesiunii de lucru. Pentru operare, o parte din
parametrii mediului de lucru sunt definiţi prin variabilele interpretorului de comenzi (variabile
shell).
Definirea unei variabile shell se face în felul următor:
variabilă=valoare
Referirea la o variabilă shell se face cu ajutorul numelui acesteia prefixat de semnul “$”.
De exemplu,
atribuirea valorii: pozit=/usr/dan
utilizarea variabilei: cd $pozit
ceea ce va avea ca efect schimbarea directorului curent în /usr/dan.
Variabilele shell sunt de două tipuri:
a) variabile modificate dinamic de către interpretor:
$# = numărul de parametri ai unei proceduri shell;
$? = codul de revenire al ultimei comenzi executate;
$$ = identificatorul de proces asociat SHELL-ului;
$! = identificatorul ultimului proces lansat în background;
$- = opţiunile cu care a fost lansat SHELL-ul;
$n = parametrii trimişi procedurilor SHELL pe linia de comandă (n = 1 ...9)
b) variabile atribuite la intrarea în sesiune:
$HOME = home directory;
$PATH = lista căilor de căutare;
$PS1 = promterul asociat interpretorului (implicit $);
$PS2 = prompterul asociat continuării liniei de comandă (implicit >);
$LOGNAME = numele de conectare al utilizatorului;
$MAIL = numele directorului unde este plasată poşta electronică;
$SHELL = numele programului shell folosit de editorul de texte vi şi alte comenzi;
$TERM = informaţii despre tipul terminalului ecran.
Pentru afişarea tuturor variabilelor shell se foloseşte comanda set. De asemenea această
comandă poate fi folosită pentru vizualizarea şi modificarea fiecărei variabile shell în parte.
UNIX prezintă utlizatorului manualul complet al tuturor comenzilor. Pentru a obţine
explicaţii despre utilizarea unei anumite comenzi se scrie:
man nume_comandă
obţinându-se pe ecran explicaţii complete despre această comandă.

7
UNIX pune la dispoziţie instrumente pentru dezvoltarea de programe: editoare de text,
interpretoare, compilatoare, asambloare, editoare de legături pentru majoritatea limbajelor de
programare.
Instalarea sistemului de operare UNIX
Instalarea sistemului de operare UNIX se realizează printr-un program special, specific fiecărei
versiuni UNIX. Indiferent însă de versiune, acest program efectuează:
- partiţionarea şi formatarea hard discurilor;
- crearea structurii arborescente standard;
- copierea fişierelor sistem şi ale utilizatorilor;
- închiderea sesiunii de instalare şi informarea utilizatorului despre posibilitatea iniţializării
sistemului.
După instalarea sistemului, administratorul de sistem va crea câte o intrare în sistem pentru
fiecare utilizator care va presupune:
- crearea de directoare proprii – home directories;
- setarea parolelor şi a drepturilor de acces;
- asocierea unor identificatori pentru grup şi pentru utilizatori.
Iniţializarea sistemului de operare UNIX
Procesul de iniţializare a sistemului comportă următoarele etape:
- execuţia procedurilor de testare şi iniţializare hardware: memorie, tastatură, unităţi de disc
etc., proceduri ce se găsesc în memoria ROM;
- încărcarea în memoria RAM a încărcătorului aflat în blocul de boot al sistemului de fişiere;
- încărcătorul va transfera în memoria RAM nucleul SO UNIX aflat în fişierul UNIX din
root.
Nucleul, odată încărcat, va declanşa execuţia următoarelor activităţi:
- iniţializarea structurilor de date proprii:
- imaginea superblocului şi a listei de inod-uri în memorie;
- lista bufferelor de disc libere;
- bufferele pentru cozile de caractere;
- altele.
- montarea sistemului de fişiere root în /;
- construirea procesului 0 ca imagine a unui proces incomplet, datorită zonei de date
incomplete (numai zona utilizată de nucleu);
- construirea procesului 1 – init – prin execuţia unui fork intern (în mod Kernel), care:
- iniţializează structurile de date;
- măreşte zona de memorie alocată pentru text;
- transferă codul apelului directivei exec din spaţiul de adresă al nucleului în memoria
RAM, devenind astfel primul proces complet din sistem;
- trecerea procesului 1 în mod utilizator şi încărcarea sa pentru execuţie, ceea ce va implica:
- citirea fişierului /etc/inittab pentru stabilirea proceselor ce se vor crea;
- lansarea unui proces /etc/gtty pentru fiecare linie de comunicaţie activă;
- scanarea fişierului /etc/rc;
- lansarea în execuţie a proceselor ce se execută în background pe întreaga durată de
funcţionare a sistemului.
Sesiunea de lucru
Fiecare proces /etc/getty aşteaptă ca un utilizator să se conecteze la sistem, setând
parametrii de comunicaţie pentru terminal cu informaţiile furnizate de fişierul /etc/getty
defs şi lansând în execuţie (directiva exec) programul login. Acesta va solicita datele de
identificare a utilizatorului (nume, parolă) şi, în caz de concordanţă, va lansa în execuţie (prin

8
exec) procesul Shell specificat în fişierul /etc/passwd. Ieşirea din sesiunea de lucru se face
prin comanda CTRL/D sesizată de init, care va lansa un nou proces getty pe linia respectivă.
Încheierea completă a sesiunii de lucru a întregului sistem se face cu comanda shutdown
care încheie toate procesele din sistem, salvând pe disc toate informaţiile din memorie.
Administrarea şi întreţinerea sistemului de operare UNIX
Funcţie de diversele versiuni ale sistemului de operare UNIX, pentru administrarea acestuia
este pusă la dispoziţie o interfaţă sub formă de meniu orientată pe task-uri, ale cărei principale
funcţii constau în:
- opţiuni pentru toate operaţiile posibile;
- verificarea erorilor pe parcurs;
- informarea utilizatorului cu privire la modul de terminare a fiecărui task lansat în execuţie.
Administrarea sistemului poate fi realizată şi prin intermediul unor comenzi ce se află în căile:
/bin, /usr/bin şi /etc setate într-o variabilă PATH pentru a fi disponibile; exemplu:
comanda cron ce permite executarea unor lucrări ca:
- stabilirea unor proceduri de backup la anumite momente de timp;
- evidenţierea activităţii sistemului la anumite ore, zile, săptămâni sau luni.
Există o serie de activităţi administrative ce trebuie avute în vedere odată cu instalarea
sistemului (proceduri de setup – iniţializare):
- stabilirea consolei;
- instalarea sistemului de operare;
- instalarea pachetelor de aplicaţii;
- definirea şi identificarea utilizatorilor ce se pot conecta la sistem;
- configurarea terminalelor, imprimantelor.
Întreţinerea sistemului după instalare şi iniţializarea acestuia vizează următoarele activităţi:
- comunicarea cu utilizatorii;
- testarea periodică a sistemului care include verificarea:
- numelui sistemului;
- stării curente;
- utilizatorilor;
- plăcilor hardware;
- montarea sistemului de fişiere;
- gradul de ocupare a discurilor.
Asigurarea securităţii se realizează prin:
- schimbarea periodică a parolelor;
- verificarea şi limitarea fişierelor ce dau unui utilizator drepturi de acces la fişierele altui
utilizator sau grup;
- detectarea eventualelor încercări ilegale de conectare la sistem.

9
Laborator 1. Instalarea sistemului de operare Linux

Sunt mai multe metode de instalare a sistemului de operare Linux. Instalarea nativă este
utilă dacă planificaţi să utilizaţi în continuare Linux-ul. Sistemul Linux are nevoie de cel puţin
două partiţii separate pentru a putea funcţiona. Dacă pe disc există deja Windows, este necesară
redimensionarea partiţiilor existente pe harddisk, pentru a putea crea partiţiile necesare Linux-ului.
După studierea sistemului Linux ve-ţi dori dezinstalarea sistemului Linux şi va fi necesar să
redimensionaţi din nou partiţiile.
Pentru studierea Linux-ului se recomandă instalarea lui pe o maşină virtuală (mai simplă
dezinstalarea sistemului). Vom utiliza maşina virtuală - VirtualBox şi distribuţia Linux-ului –
Ubuntu. De ce Ubuntu? Dacă aveţi instalat sistemul Windows10, el permite instalarea sistemului
Linux, distribuţia Ubuntu, ca un subsistem.
Executaţi următorii paşi:
1. Descărcați distribuția Linux- Ubuntu Desktop.
2. Descărcaţi şi instalaţi VirtualBox.

Executați clic pe New și introduceți denumirea sistemului.

Memorie RAM de 1GB este suficient.

10
Creați un nou disk virtual (10 GB).

Click Create > click butonul VHD(Virtual Hard Disk) > Expert Mode

11
Click Create > click butonul VHD(Virtual Hard Disk) și Dynamically allocated >
Create (10 GB).

Click Settings > Storage > Controller: IDE – Empty > clic > Choose Virtual Optical
Disk File, și indicați calea spre distribuția Ubuntu descărcată > OK.

12
Click Start.

Puteți studia sistemul Linux în mod Live > Try Ubuntu.

13
Continuăm instalarea
Linux-ului – Install
Ubuntu > Something
else
Recomandăm crearea cel
puţin a următoarelor
partiţii:
- o partiţie de
swap, pentru a crea
memorie
virtuală
(informaţiile
sunt scrise în
memoria
virtuală atunci
când nu există
memorie
RAM disponibilă). Partiţia de swap se recomandă de 1 GB;
- partiţia de root, acolo unde se va afla / - directorul-rădăcină al sistemului, şi care va conţine
toate fişierele din sistem;
- o partiţie /home, care va conţine fişierele utilizatorilor (1 GB).

Executaţi clic pe butonul New Partition Table - Continue > /dev/sda > +

14
Selectaţi:
- Size 1 GB;
- Type for the new partition – Primary;
- Location for the new partition – beginning of this space;
- Use as: swap area;
- OK.

Creaţi partiţia de root (8 GB). Sistemul de fişiere - Ext4 journaling file system – un
sistem nou de fişiere, cu suport pentru jurnalizare. Punctul de montare indicaţi / - directorul-
rădăcină al sistemului. Partiția / este corespondenta partiției C: din Windows. În aceasta vor
fi instalate sistemul de operare și aplicațiile.

15
Creaţi partiţia de /home – pentru aplicaţiile utilizatorului, alocați-i spațiul liber rămas.
Această partiție este asemănătoare partiției D: în Windows.

16
La pasul următor vi se va cere să alegeți locația în care vă aflați.

Creaţi un utilizator, introduceţi o parolă și alegeţi tipul de autentificare.

17
Dacă aveţi instalat sistemul de operare Windows10 puteţi instala sistemul Linux în
Windows10 ca un subsistem.
Activați modul Developer Mode.
- Deschideți Settings -> Update and Security -> For developers
- Selectați butonul Developer mode.

Activați apoi funcția Windows Subsystem for Linux (din interfața de utilizator).

- În Start căutați Turn Windows features on or off .


- Selectați (bifați) Windows Subsystem for Linux (beta) > OK.

18
După activarea funcției Windows Subsystem for Linux, restartați calculatorul.
După restartare, porniți command prompt cu drepturi de administrator și scrieți
comanda bash.

Dacă ați acceptat Licența, se va descărca imaginea Ubuntu și va fi adăugat în meniul de


start butonul „Bash on Ubuntu on Windows“. Creați un utilizator și o parolă UNIX, ce pot fi
diferite față de utilizatorul și parola sistemului de operare Windows10.
După instalare, distribuția de Linux poate fi găsită în \AppData\local\lxss\ .
Sarcină la laborator 1
Instalaţi Linux-ul, în mod manual, pe calculatorul dumneavoastră.
Perfectarea raportului de laborator
Rapoartele de laborator vor conţine:
 descrierea etapelor realizate (screenshot-uri) pentru instalarea sistemului de operare
LINUX;
 descrierea metodele de instalare a Linux-ului (virtual, alături de alt sistem ...);
 clasificarea distribuţiile Linux după platformele ce le utilizează (server, desktop ...);
 de asemenea se vor prezenta principalele versiuni LINUX existente la momentul
actual şi principalele caracteristici ale acestora.

Задания к лабораторной работе 1

19
Установите Linux, в ручном режиме, на Вашем компьютере.

Cодержание отчёта
Отчёт по лабораторной работе должен содержать:
 Описание шагов при установке операционной системы LINUX.
 Описание методов установки LINUX (рядом с другой ОС, виртуально ...).
 Классификацию дистрибутивов LINUX по платформам применения (сервер,
desktop …).
 Классификацию дистрибутивов LINUX по популярности.
 Выводы.
Bibliografie
[1] Situl oficial al sistemului de operare Linux: http://www.linux.org
[2] Distribuţii de Linux: https://www.ubuntu.com/download

20
Laborator 2 Bazele utilizării interfeței SO GNU/Linux
Noțiuni studiate
1. Intrarea în sistem
2. Modul text şi cel grafic
3. Schimbarea parolei
4. Ieşirea din sistem
5. Câteva comenzi ale interpretorului
6. Căutarea de ajutor
7. Navigarea prin sistemul de fişiere
8. Determinarea tipului de fişiere
9. Deschiderea fişierelor text
10. Folosirea editorului de texte
11. Crearea scripturilor pentru interpretorul bash
Indicații metodice
1 Autentificarea la sistem, activarea interfeţei cu utilizatorul şi ieșirea din sistem
Pentru a lucra direct cu un sistem Linux trebuie să îi furnizaţi un nume de utilizator şi o parolă.
Cele mai multe calculatoare care au ca sistem de operare Linux-ul pot lucra în două moduri de
bază: modul consolei text, rapid dar sobru, cu facilităţi care asigură realizarea de sarcini multiple şi
conectarea mai multor utilizatori, și modul grafic, care arată mai bine, dar consumă mai multe
resurse.
2 Modul grafic
Acesta este modul normal pentru calculatoarele de astăzi. Pentru a vă autentifica, puneţi indicatorul
mouse-ului în fereastra de conectare, introduceţi numele de utilizator, apoi parola, apăsaţi OK sau
tasta Enter.
Fiţi foarte atenţi când folosiţi contul de administrator (root)!
În general, se consideră că este o idee proastă să vă conectaţi în modul grafic folosind contul
de root. Utilizarea modului grafic include rularea mai multor programe, ce vor avea mai
multe permisiuni dacă vă autentificaţi ca root. Pentru a menţine cota de risc cât mai jos
posibil, folosiţi un cont de utilizator normal pentru a vă autentifica în modul grafic.
Regulă: autentificaţi-vă ca administrator numai atunci când vi se solicită permisiuni
speciale.
Deschideţi o fereastră terminal sau xterm (X fiind numele prin care se arată că anumite programe
suportă interfaţa grafică). Acest program poate fi găsit în Aplicaţii→ Utilităţi, Sistem sau
Internet, în funcţie de ce administrator grafic folosiţi. Pot exista iconiţe (pictograme) pe care să le
folosiţi ca scurtături pentru a obţine terminalul, iar dacă apăsaţi pe butonul din dreapta al mouse-
ului, pe spaţiul de lucru, vi se va prezenta un meniu care poate conţine Open Terminal.
Dacă vă plimbaţi prin meniu, veţi observa că pot fi făcute foarte multe lucruri fără a introduce
comenzi de la tastatură. Pentru cei mai mulţi utilizatori, vechea metodă de lucru cu mouse-ul va fi
suficientă pentru a lucra cu calculatorul.
Viitorii administratori de sistem şi de reţea, care vor avea nevoie să lucreze cu măruntaiele
sistemului, trebuie să poată mai multe. Ei au nevoie de o unealtă mai puternică decât cele pe care le
pot acţiona cu mouse-ul, pentru a face faţă tuturor sarcinilor. Această unealtă este consola şi, din
mediul grafic, puteţi să o activaţi prin deschiderea unei ferestre terminal.
Terminalul este panoul de control al sistemului dumneavoastră. Aproape orice lucru din cele ce
urmează poate fi făcut folosind această unealtă text, simplă dar puternică. O fereastră terminal ar

21
trebui să arate întotdeauna un prompter standard, care afişează numele utilizatorului şi directorul
curent în care se lucrează, urmat de un simbol special, de exemplu “ ̴“, “ $ “ (fig. 6).

Figura 6 – Exemplu de fereastră terminal


O altă formă comună pentru un prompter este [user@host dir].
În exemplul de mai sus, user va fi numele de utilizator, host numele calculatorului pe
care lucraţi şi dir indică locul în care vă aflaţi în sistemul de fişiere. Promptere afişează tot felul
de informaţii, dar nu sunt parte a comenzilor pe care le daţi sistemului.

Pentru a ieşi din mediul grafic şi trece în mediul consolei, tastaţi:

CTRL +ALT +F1

Pentru a reveni în mediul grafic tastaţi:

CTRL +ALT+F7

Atunci când vedeţi din nou fereastra de autentificare, care vă cere numele de utilizator şi
parola, înseamnă că v-aţi deconectat.
Gnome sau KDE?
Mediile grafice de lucru Gnome şi KDE sunt cei mai cunoscuţi administratori grafici prin care
vă puteţi gestiona spaţiul de lucru, deşi există mult mai mulţi. Orice administrator grafic ales este
bun – atât timp cât ştiţi să deschideţi un terminal.
3 Modul text
Veţi şti dacă sunteţi în modul text atunci când tot ecranul este negru, afişând litere (în cele mai
multe cazuri, albe). Un ecran de autentificare în modul text va afişa, de regulă, anumite informaţii
despre calculatorul la care lucraţi, numele acestuia şi un prompter care vă cere să vă autentificaţi,
de exemplu:

22
Va trebui să introduceţi numele de utilizator. Apoi trebuie să introduceţi parola, urmată de
apăsarea din nou a tastei Enter. Din cauza cerinţelor de securitate nu veţi observa nici o afișare a
ceea ce introduceţi de la tastatură şi nu veţi vedea cursorul mişcându-se.
Atunci când sistemul vă recunoaşte ca utilizator legitim, puteţi primi mai multe informaţii,
numite mesajele zilei, care pot fi orice. În plus, este răspândită practica prin care sistemele UNIX
să afişeze o consideraţie care să conţină anumite gânduri, înţelepte sau nu (depinde de fiecare).
După acestea, va porni consola, indicată de acelaşi prompter pe care îl primiţi în modul grafic.

Deconectarea se face prin comanda exit (logout), urmată de apăsarea tastei Enter. Sunteţi
deconectat atunci când este afişat din nou ecranul de autentificare.
Butonul de oprire
Deoarece Linux-ul nu a fost proiectat să fie oprit fără a trece prin procedurile adecvate de
închidere a sistemului, apăsarea butonului de oprire lansează aceste proceduri pe sistemele mai noi.
4 Limbajul de comandă
Componenta SHELL reprezintă mecanismul prin care sistemul de operare realizează interfaţa între
utilizator şi sistemul de calcul. Această componentă reprezintă un interpretor de comenzi care
citeşte liniile introduse de către utilizator şi determină execuţia comenzilor solicitate.
Comenzi pentru începerea lucrului
În tabelul de mai jos sunt prezentate câteva comenzi, de care avem nevoie pentru început.
Tabelul 1- Comenzi ale interpretorului limbajului de comandă
Comanda Ce execută
Afişează o listă cu fişierele din directorul de lucru, precum comanda dir
ls
din DOS
cd director schimbă directorul
passwd schimbă parola pentru utilizatorul curent

23
file filename afişează tipul fişierului al cărui nume este filename
cat textfile afişează conţinutul unui fişier text pe ecran
pwd afişează în ce director sunteţi
exit sau logout terminare sesiune
man comandă citiţi paginile din manualul comenzii comandă
info comandă citiţi paginile de informaţii asupra comenzii comandă
apropos string căutaţi în baza de date whatis
Aceste comenzi le veţi introduce după prompter, într-o fereastră terminal, dacă sunteţi în
modul grafic, sau în modul text, urmate apoi de apăsarea tastei Enter.
Comenzile pot fi introduse ca atare, cum este cazul comenzii ls. O comandă se comportă
diferit atunci când specificaţi o opţiune, care este, de regulă, precedată de caracterul (-), precum în
ls –a. Acelaşi caracter al unei opţiuni poate avea un alt înţeles dacă este folosită în altă comandă.
Programele GNU pot avea opţiuni lungi, precedate de două caractere (-), precum ls –all. Alte
comenzi nu au nici o opţiune. Argumentele unei comenzi reprezintă specificaţii despre obiectul
asupra căruia comanda trebuie să acţioneze. Un exemplu ar fi ls /etc, unde directorul /etc
este argument al comenzii ls. Această comandă înseamnă că dumneavoastră doriţi să vedeţi
conţinutul acelui director, în loc de ceea ce afişează comanda simplă ls urmată de tastarea Enter,
adică listarea conţinutului directorului în care ne aflăm. Anumite comenzi au nevoie neapărat de
argumente, aceste argumente fiind opţionale în cazul altor comenzi.
În Linux, la fel ca în UNIX, directoarele sunt separate de caracterul ( / ), la fel cu cel pe
care îl folosim în adresele web (URL). Simbolurile ( . ) şi ( .. ) au înţelesuri speciale în
directoare.
Utilizarea facilităţilor Bash
Anumite combinaţii de taste vă permit să faceţi câteva lucruri mai uşor în consola GNU –
Bash, care vine pe aproape orice sistem Linux.
Tabelul 2 – Combinaţii de taste în Bash
Tastă sau combinaţii de taste Funcţie
Ctrl+A Mută cursorul la începutul unei linii de comandă
Ctrl+C Termină programul care rulează şi afişează prompterul
Ctrl+D Închide sesiunea curentă, similară cu tastarea exit sau logout
Ctrl+E Mută cursorul la sfârşitul liniei de comandă
Ctrl+H Şterge poziţia curentă (similar cu Backspace)
Ctrl+L Şterge tot ce este afişat în consolă
Ctrl+R Caută în istoricul comenzilor
Ctrl+Z Suspendă un program
Săgeată stânga şi Mută cursorul cu un caracter la stânga sau la dreapta în linia de
Săgeată dreapta comandă, pentru a insera caractere în alt loc decât la începutul sau
sfârşitul liniei
Săgeată în sus sau Navigare prin istoricul comenzilor. Mergeţi la linia pe care doriţi să
Săgeată în jos o repetaţi, editaţi-o dacă este necesar, şi apăsaţi Enter.

Shift+PageUp sau Navigare prin terminal (pentru a vedea textul care a „ieşit” din
Shift+PageDown ecran)

Tab Completarea comenzilor sau a numelor de fişiere; atunci când există


mai multe posibilităţi, sistemul vă avertizează cu un semnal audio
sau video ori, dacă posibilităţile sunt prea multe, vă întreabă dacă
doriţi să le afişeze pe toate
Tab Tab Arată posibilităţile pentru completarea unei comenzi sau a unui
nume de fişier

24
Ultimele două intrări din tabelul de mai sus necesită câteva explicaţii suplimentare. De
exemplu, dacă doriţi să vă mutaţi în directorul director_cu_un_nume_foarte_lung, nu
trebuie să tastaţi tot acel nume foarte lung. Tastaţi doar comanda cd dir, (unde dir sunt primele
trei litere din numele directorului dumneavoastră) apoi apăsaţi tasta Tab şi consola va completa
numele în locul dumneavoastră, în cazul în care alte fişiere nu încep cu primele trei litere din
numele directorului dumneavoastră. Desigur, dacă nu există alte directoare care încep cu „d”,
puteţi tasta doar cd d şi apoi apăsa tasta Tab. În cazul în care numele mai multor fişiere încep cu
aceleaşi caractere, consola va semnala acest lucru, iar apăsarea tastei Tab de două ori într-un
interval scurt de timp va afişa posibilităţile pe care le aveţi:

Cele prezentate mai sus sunt valabile pentru toate numele de fişiere folosite ca argumente la
comenzi. Acelaşi lucru se aplică şi la completarea numelor comenzilor. Dacă tastaţi ls şi apăsaţi
tasta Tab de două ori, veţi primi o listă cu toate comenzile disponibile.

5 Căutarea de ajutor
GNU/Linux încurajează utilizatorii în atitudinea lor de a nu depinde de nimeni şi de nimic.
Caracteristica acestui sistem este aceea că există întotdeauna mai multe căi pentru atingerea unui
scop. O cale de a primi ajutor este găsirea cuiva care se pricepe, care are răbdare şi doreşte să fie de
ajutor, din comunitatea Linux, dar oricine se aşteaptă ca dumneavoastră să fi încercat una sau mai
multe metode din această secţiune, înainte de a întreba pe altcineva, iar modul în care acest punct
de vedere este exprimat poate fi mai degrabă unul dur, dacă se dovedeşte că nu aţi urmat această
regulă de bază.
Paginile manualelor (man)
Citirea paginilor man se face într-un terminal, atunci când sunteţi în modul grafic sau direct în
modul text, dacă pe acesta îl preferaţi. Tastaţi comanda următoare, urmată de Enter:
yourname@pcname:~$ man man
Documentaţia pentru man va fi afişată în terminal, după ce apăsaţi Enter.
Navigaţi la pagina următoare folosind tasta Space (sau f). Vă puteţi întoarce la pagina precedentă
folosind tasta „b”. Când ajungeţi la sfârşit, man va da comanda de ieşire şi consola va returna
prompterul. Tastaţi „q” dacă doriţi să ieşiţi din paginile man înainte de a ajunge la sfârşitul lor sau
dacă programul nu se închide automat la sfârşitul paginilor.
Dacă doriţi să vă fie prezentate toate paginile man ale unei comenzi, una după cealaltă, folosiţi –a
după man:
man –a passwd
În acest mod, când ajungeţi la sfârşitul primei pagini, prin apăsarea tastei SPACE va fi deschisă
pagina man din secţiunea următoare.
În cazul comenzilor, ca o completare a paginilor man, puteţi citi paginile Info, folosind comanda
info. Aceste pagini conţin, de regulă, informaţii mai recente şi, într-un fel, mai uşor de utilizat.
Paginile man ale anumitor comenzi fac trimitere la paginile Info. Puteţi începe prin tastarea
comenzii info info într-un terminal.
Un index cu explicaţii scurte despre comenzi este disponibil prin comanda whatis, precum în
exemplul de mai jos:
whatis ls

25
ls (1) – list directory contents
Se observă explicaţia, pe scurt, referitoare la comandă (listează conţinutul directorului) şi
afişarea primei secţiuni din colecţia de pagini man care conţine o pagină cu prezentarea comenzii
ls.
Dacă nu ştiţi de unde să începeţi şi ce pagină de manual să citiţi, comanda apropos vă dă mai
multe informaţii. Să spunem că nu ştiţi cum să porniţi un browser; în acest caz, puteţi introduce
următoarea comandă:
apropos browser
După apăsarea tastei Enter veţi vedea mai multe informaţii legate de navigatoarele care
sunt în sistemul dumneavoastră; nu doar despre browsere web, ci şi despre navigatoare de fişiere şi
FTP sau browsere pentru documentaţie:

Dacă aveţi pachetele pentru dezvoltare instalate, se vor afişa şi paginile de manual care
prezintă programele în care au fost scrise aceste browsere. În general, o comandă care arată o
pagină man în secţiunea întâi, marcată cu „(1)”, poate fi folosită de un utilizator începător.
Cele mai multe comenzi GNU suportă opţiunea –help, care oferă explicaţii scurte despre
utilizarea comenzii şi o listă a opţiunilor disponibile. Încercați comanda cat –help.
În această lucrare aţi învăţat câteva comenzi pentru consolă, pe care vi le prezentăm din nou
în tabelul de mai jos:
Comanda Ce execută
Afişează o listă cu fişierele din directorul de lucru, precum comanda
ls
dir din DOS
cd director schimbă directorul
touch filename creează un fişier gol (0 octeţi)
comandă>fișier redirecționarea ieșirii standard în fișier, conținutul vechi al fișierului
este șters.
comandă>>fișier redirecționarea ieșirii standard în fișier, conținutul vechi al fișierului
nu se şterge.
passwd schimbă parola pentru utilizatorul curent
file filename afişează tipul fişierului al cărui nume este filename
cat textfile afişează conţinutul unui fişier text pe ecran
pwd afişează directorul curent (print working directory)
sudo adduser user adăugarea unui nou utilizator, user – numele utilizatorului adăugat
su user schimbă utilizatorul (dacă cunoaşteţi parola)
exit sau logout terminare sesiune
man comandă citiţi paginile din manualul comenzii comandă
info comandă citiţi paginile de informaţii asupra comenzii comandă
apropos string căutaţi în baza de date whatis

Sarcină la laborator 2
1) Creați catalogul propriu în directorul /home/user/. user în cazul dat este numele
utilizatorului. Toate scripturile și fișierele pentru extragerea rezultatelor le veți crea în acest
catalog sau subcataloagele lui (mkdir lab2) .

26
2) Autentificare. Determinaţi modul în care lucraţi, text sau grafic. Autentificaţi-vă cu numele
de utilizator şi parola pe care le-aţi stabilit pe parcursul instalării. Deautentificaţi-vă.
Autentificaţi-vă din nou cu un nume de utilizator inexistent. Ce se întâmplă? Autentificaţi-
vă din nou cu numele dumneavoastră de utilizator şi cu parola. Schimbaţi-vă parola în
P6p3.aa! şi apăsaţi tasta Enter. Ce se întâmplă? Încercaţi din nou cu o parolă ridicol de
simplă, precum 123 sau aaa . Ce se întâmplă? Încercaţi comanda psswd în locul
passwd. Ce se întâmplă?
3) Parolă nouă. Dacă nu aţi revenit la parola dumneavoastră pe care aţi avut-o înaintea
exerciţiului de mai sus, această parolă va fi „P6p3.aa!”. Schimbaţi-vă parola la loc după
efectuarea exerciţiului! Sistemul poate să nu permită schimbarea parolei dacă o consideră
foarte simplă. Anumite sisteme pot să nu permită reciclarea parolelor, adică schimbarea în
cea originală, în cazul dumneavoastră, decât după un anumit timp sau după un anumit
număr de cicluri de schimbare a parolelor, ori chiar pot lua în calcul ambele variabile.
4) Directoarele. Introduceţi comanda cd blah. Ce se întâmplă? Introduceţi comanda
cd .. Luaţi aminte la spaţiul dintre „cd” şi „..”! Folosiţi comanda pwd. Ce se întâmplă?
Listaţi conţinutul directorului cu ajutorul comenzii ls. Ce vedeţi? Ce credeţi că sunt
acestea? Verificaţi folosind comanda pwd. Introduceţi comanda cd. Ce se întâmplă?
Repetaţi pasul 2 de două ori. Ce se întâmplă? Afişaţi conţinutul acestui director. Încercaţi
comenzile cd root (pentru ubuntu cd /; ls; ls -a; cd .config în această ordine).
Ce se întâmplă? La care directoare aveţi acces? Repetaţi pasul 4 (cd). Ştiţi o altă
posibilitate prin care să ajungeţi în acest loc?
5) Fişierele. Schimbaţi directorul pe / şi apoi pe etc. Tastaţi ls; dacă răspunsul
calculatorului este mai mare decât fereastra, faceţi-o mai lungă sau încercaţi Shift+PageUp
şi Shift+PageDown. Folosiţi comanda cat legal şi citiţi răspunsul. Care este modul de
lucru în care porneşte calculatorul dumneavoastră? Mergeţi la directorul personal (home)
cu comanda cd. Introduceţi comanda file . Vă ajută să aflaţi înţelesul lui „ .”? Puteţi
să aflaţi ceva prin folosirea comenzii cat asupra lui „ .”? Afişaţi ajutorul în cazul
comenzii cat prin utilizarea opţiunii --help. Folosiţi opţiunea de numărare a liniilor
returnate pentru a număra câţi utilizatori sunt listaţi în fişierul /etc/passwd.
6) Căutarea de ajutor. Citiţi man intro. Citiţi man ls. Citiţi info passwd.
Introduceţi comanda apropos pwd. Încercaţi comanda man sau info asupra cd. Ce
mai puteţi găsi în plus despre cd? Citiţi şi încercaţi ceea ce vă este returnat de comanda ls
–help.
7) Toate acțiunile executate la punctele 1 – 6 să fie salvate într-un fișier, care va fi salvat și
inclus în Raport.
8) Perfectați și prezentați profesorului Raportul și primiți întrebări sau sarcina pentru
susținere.
9) După susținerea laboratorului ștergeți catalogul creat cu toate componentele lui.
(rm –R lab2)

Задания к лабораторной работе №2


1) Создайте свой подкаталог в каталоге /home/user/. user в данном случае - имя
пользователя. Все скрипты и файлы для сохранения результатов будут сохранены в
этом каталоге или в подкаталогах (mkdir lab2).
2) Аутентификация. Определите в каком режиме Вы находитесь: текстовом или
графическом. Войдите в систему под именем и паролем установленными во время
установки LINUX. Выйдите из системы. Войдите в систему под несуществующими
именем и паролем. Что происходит? Войдите опять в систему под своим именем и

27
паролем. Измените пароль на P6p3.aa! Что происходит? Измените пароль на 123
или aaa. Что происходит? Введите команду psswd вместо passwd. Что
происходит?
3) Новый пароль. Измените пароль „P6p3.aa!” на Ваш предыдущий. Некоторые
системы не разрешают изменить пароли на уже использованные.
4) Каталоги. Введите команду cd blah. Что происходит? Введите команду cd ..
Отметьте пробел между „cd” и „..”! Введите команду pwd. Что происходит?
Просмотрите содержание каталога командой ls. Что выводится? Проверьте командой
pwd. Введите команду cd. Что происходит? Введите команду cd .. два раза. Что
происходит? Выведите содержимое этого каталога. Введите команды cd root
(cd /; ls; ls -a; cd .config в этом порядке). Что происходит? К каким
каталогам имеете доступ? Введите команду cd. Какой другой способ знаете, чтобы
попасть в этот каталог?
5) Файлы. Измените каталог на / а потом на etc. Введите ls; если выведенный
текст больше окна терминала используйте Shift+PageUp и Shift+PageDown.
Используйте команду cat legal и прокоментируйте ответ. В каком режиме
начинает работу Ваш компьютер? Перейдите в каталог пользователя (home)
командой cd. Введите команду file . и прокоментируйте ответ. Введите команду
cat . и прокоментируйте ответ. Выведите помощь команды cat используя
параметр --help. Используйте опцию подсчета строк для подсчета количества
пользователей в файле /etc/passwd.
6) Помощь. Прочтите man intro. Прочтите man ls. Прочтите info passwd.
Введите команду apropos pwd. Примените команду man или info над cd. Что
нвого узнали о команде cd? Прочтите что выводит команда ls –help и
используйте несколько аргументов.
7) Все действия выполненые в пунктах 1-5 сохраните в файле, который будет сохранен и
включен в Отчет.
8) Подготовьте и представьте отчет преподавателю и получите вопросы или задание для
защиты лабораторной работы.
9) После защиты лабораторной работы удалите созданный каталог со всеми файлами.
(rm –R lab2)

28
Laborator 3. Sistemul de fişiere Linux
Noțiuni studiate
1. Tipuri de fişiere
2. Partiții
3. Punctele de montare
4. Tiparul sistemului de fişiere
5. Navigarea
6. Cele mai importante fişiere, inclusiv kernelul şi shell-ul
Indicații metodice
1 Tipuri de fișiere
Componenta sistemului de operare care “are grijă” de fișiere se numește Sistem de Gestiune a
Fișierelor (SGF). O descriere simplă a unui sistem UNIX, care se aplică şi Linux-ului, este
următoarea: „Într-un sistem UNIX, orice este un fişier; dacă ceva nu este un fişier, atunci este un
proces.”
Această propoziţie este adevărată deoarece există fişiere speciale care sunt mai mult decât nişte
simple fişiere (cele numite pipes – conexiuni şi sockets, de exemplu), dar pentru simplitate, a
spune că orice este un fişier constituie o generalizare acceptată. Un sistem Linux, la fel ca UNIX-
ul, nu face nici o diferenţă între un director şi un fişier, deoarece un director este doar un fişier care
conţine numele altor fişiere. Programele, serviciile, textele, imaginile şi aşa mai departe, sunt toate
fişiere. Dispozitivele, în general, sunt considerate şi ele fişiere, din punctul de vedere al sistemului.
Pentru a ne descurca cu toate aceste fişiere într-o manieră ordonată, suntem obişnuiţi să le
vedem organizate pe discul fix într-o structură arborescentă. Din trunchi pleacă ramurile groase
care au alte ramuri, iar ramurile din vârf se termină cu frunzele copacului, care sunt fişiere
obişnuite. Pentru început vom folosi această imagine a unui copac, dar vom afla mai târziu că nu
este o imagine care corespunde întocmai cu realitatea.
Cele mai multe fişiere sunt fişierele simple sau obişnuite; ele conţin date normale, de exemplu
fişierele text, fişierele executabile sau programele, comenzile şi răspunsurile unui program, şi
altele.
În mod normal este rezonabil să presupunem că tot ceea ce întâlnim într-un sistem Linux este un
fişier, cu câteva excepţii.
- Directoarele: fişiere care sunt o listă a altor fişiere.
- Fişiere speciale: mecanismele folosite pentru introducerea comenzilor şi returnarea
răspunsurilor. Cele mai multe fişiere speciale se găsesc în /dev.
- Legături: un sistem pentru a face un fişier sau un director vizibil în mai multe părţi ale
sistemului de fişiere.
- Socket-uri (de domenii): un fel special de fişiere, asemănătoare cu socket-urile TCP/IP,
care asigură desfăşurarea proceselor în reţea, protejate prin controlul asupra accesului la
SGF.
- Numite conexiuni (pipe): se comportă mai mult sau mai puţin ca socket-urile şi formează o
cale pentru comunicarea între procese, fără a utiliza semantica socket-urilor de reţea.
Exemplu: Opţiunea -l a comenzii ls afişează tipul fişierului, utilizând primul caracter al fiecărei
linii:

29
Simbol Tipul fișierului
- Fișier obișnuit
d Director
l Legătură
c Fișier special
s Socket
p Numite conexiuni (pipe)
b Dispozitiv
2 Partiții
Linux-ul foloseşte mai mult de o partiţie pe acelaşi disc, chiar dacă este instalat prin procedura
automată. Unul dintre scopurile pentru care sunt făcute mai multe partiţii este obţinerea unei
securizări mai puternice a datelor, în eventualitatea unui dezastru. Prin împărţirea discului fix (hard
disk-ului) în partiţii, datele pot fi grupate şi separate. Atunci când se întâmplă accidente, numai
datele din partiţia atacată vor fi distruse, în timp ce datele din celelalte partiţii vor scăpa neatinse.
Acest principiu datează din zilele în care Linux-ul nu avea un sistem de fişiere de tip jurnalier iar
căderile de tensiune puteau conduce la un dezastru. Utilizarea în continuare a partiţiilor se
datorează raţiunilor de securitate şi robusteţe: o breşă într-o parte a sistemului nu va pune în pericol
întregul calculator.
Sunt două feluri principale de partiţii într-un sistem Linux:
- partiţiile de date: pe ele sunt stocate datele normale ale unui sistem Linux, care includ şi
partiţia root, care conţine toate datele care permit pornirea şi rularea sistemului; şi
- partiţia swap: o expandare a memoriei fizice a calculatorului, memorie în plus pe discul
fix.
În afară de aceste două tipuri, Linux-ul poate lucra cu mai multe tipuri de sisteme de fişiere,
precum Reiser4, JFS, NFS, FATxx şi alte sisteme de fişiere proprii altor sisteme de operare
(proprietare).
Spaţiul swap este accesibil doar sistemului, fiind ascuns în timpul operării. Memoria swap
sau virtuală a fost implementată, în zilele noastre, şi de alte sisteme de operare care nu au
nimic de-a face cu UNIX-ul.

30
Kernelul se află pe o partiţie separată în multe distribuţii, deoarece este cel mai important
fişier al sistemului. Dacă este şi cazul distribuţiei alese de dumneavoastră, veţi găsi o partiţie
/boot, care conţine kernelul şi fişierele de date care îl acompaniază.
Restul discului fix este împărţit în partiţii de date, deşi este posibil ca toate informaţiile care nu
sunt deosebit de importante pentru funcţionarea sistemului, să se găsească pe o singură partiţie,
cum ar fi în cazul unei instalări standard pentru staţii de lucru. Atunci când astfel de informaţii sunt
împărţite pe mai multe partiţii, puteţi găsi următorul tipar:
- o partiţie pentru programele utilizatorului (/usr),
- o partiţie folosită pentru datele care aparţin utilizatorului (/home),
- o partiţie pentru stocarea datelor temporare, precum fişierele de tipărit sau mail-urile
(/var),
- o partiţie pentru programele dezvoltate de terţe părţi sau alte surse (/opt) .
3 Punctele de montare
Toate partiţiile sunt ataşate la sistem prin punctele de montare. Punctul de montare defineşte
locul unui set anume de date în sistemul de fişiere. De regulă, partiţiile sunt conectate prin partiţia
root. În această partiţie, care este indicată prin caracterul ( / ), sunt create nişte directoare. Aceste
directoare goale vor fi punctul de start al partiţiilor care vor fi ataşate la ele. De exemplu: se dă o
partiţie care are următoarele directoare:
videos/ cd~images/ pictures/
Dorim să ataşăm această partiţie în sistemul de fişiere într-un director numit /opt/media.
Pentru a face acest lucru, administratorul de sistem trebuie să se asigure că directorul
/opt/media există în sistem. Este de preferat ca acest director să fie şi gol. Utilizând comanda
mount, administratorul poate ataşa partiţia la sistem. Dacă verificaţi conţinutul directorului
/opt/media, care era gol, veţi constata că el conţine acum fişierele şi directoarele care există pe
mediul montat (disc fix sau partiţie a discului fix, CD, DVD, memorie flash, USB sau alte
dispozitive de stocare).
Puteţi obţine informaţii despre partiţii şi punctele lor de montare prin comanda df (care vine de
la disk full - disc plin sau disk free – disc liber). În Linux, df este versiunea GNU şi suportă
opţiunea -h sau human readable – inteligibilă, care oferă date mai prietenoase cu utilizatorul.
Comanda df afişează informaţii doar despre partiţiile active şi care nu sunt de tipul swap.

4 Tiparul sistemului de fişiere


Fişierele din Linux sunt prezentate, prin convenţie, ca o structură arborescentă. Pe un sistem
Linux standard veţi găsi că tiparul sistemului de fişiere se încadrează în schema prezentată mai jos
(fig. 7).

31
Figura 7 – Structura generală a sistemului de fișiere Linux

În funcţie de administratorul sistemului, de distribuţie şi de destinaţia calculatorului în


cauză, structura poate varia pentru că directoarele pot fi adăugate sau scoase după dorinţă. Nici
numele directoarelor nu sunt neapărat necesare în această formă; ele sunt doar o convenţie.
Structura arborescentă a sistemului de fişiere începe cu trunchiul, indicat de caracterul ( / ). Acest
director, care conţine toate directoarele şi fişierele sistemului, este numit directorul root sau
„rădăcina” sistemului de fişiere.
Sistemul de fişiere, distribuţia Ubuntu, este prezentat mai jos.

Directoarele care se află pe palierul imediat următor directorului rădăcină (root) sunt
adesea precedate de caracterul ( / ), pentru a indica poziţia acestora şi pentru a evita confuzia cu
alte directoare care pot avea acelaşi nume. Atunci când începeţi să lucraţi pe un sistem nou, este o
idee bună să exploraţi directorul rădăcină al acestuia. Iată ce puteţi obţine:

32
Folosind comanda df cu un punct (.) drept opţiune, se afişează partiţia căreia aparţine directorul
în care ne aflăm şi informaţii despre spaţiul utilizat pe această partiţie: df –h .
Tabelul 4 - Subdirectoarele directorului rădăcină (root)
Director Conținut
/bin Programe obişnuite, folosite de sistem, de administratorul sistemului şi de utilizatori.
/boot Fişierele necesare pornirii sistemului şi kernelul, vmlinuz. În unele distribuţii recente,
datele grub. Grub vine de la GRand Unified Boot Loader şi este o încercare de a scăpa
de diversele încărcătoare de sistem care există azi
/dev Conţine referinţe la toate echipamentele periferice, care sunt reprezentate ca fişiere cu
proprietăţi speciale.
/etc Cele mai importante fişiere de configurare ale sistemului sunt în directorul /etc, acest
director conţinând date asemănătoare cu cele din Panoul de control al Windows-ului.
/home Directoarele personale ale utilizatorilor obişnuiţi.
/initrd (în anumite distribuţii) Informaţii pentru pornirea sistemului. Nu îl ştergeţi!
/lib Fişierele librăriilor, care includ fişierele programelor folosite de sistem sau de utilizatori.
/lost+found Fiecare partiţie are un lost+found (pierdute şi găsite) în directorul principal. Fişierele
salvate în urma avariilor sunt în acest director.
/misc Pentru scopuri diverse
/mnt Punctul standard de montare pentru sisteme de fişiere externe, cum ar fi CD-ROM sau
camere digitale.
/net Punctul standard de montare pentru sistemele de fişiere din reţea
/opt Conţine în mod normal programe de la terţe părţi
/proc Un sistem de fişiere virtual care conţine informaţii despre resursele sistemului. Mai multe
informaţii despre înţelesul fişierelor din proc sunt obţinute prin comanda man proc
introdusă într-o fereastră terminal. Fişierul proc.txt discută sistemul de fişiere virtual în
detaliu.
/root Directorul personal al administratorului de sistem. Remarcaţi diferenţa dintre /,
directorul rădăcină, şi /root, directorul personal (home) al utilizatorului root, cel cu
privilegii administrative.
/sbin Programele folosite de sistem şi de administratorul sistemului.
/tmp Spaţiu pentru folosinţa temporară a sistemului, care este şters la repornire, aşa că nu-l
folosiţi pentru a salva ceva!
/usr Programe, librării, documentaţie ş.a. pentru toate programele folosite de utilizatori.
/var Loc de stocare pentru toate fişierele variabile şi temporare create de utilizatori, precum
fişiere jurnal, poştă electronică în aşteptare, fişiere care aşteaptă să fie tipărite, fişiere
descărcate de pe Internet, sau fişiere care păstrează imaginea unui CD înainte de scrierea
acestuia.

5 Navigarea folosind sistemul de gestiune a fişierelor


Atunci când doriţi ca sistemul să execute o comandă, nu trebuie să daţi adresa ei completă
pentru executarea acelei comenzi. De exemplu, ştim despre comanda ls că se află în directorul
/bin (verificaţi cu which -a ls), totuşi nu trebuie să folosim această comandă în formatul
/bin/ls pentru a lista conţinutul directorului curent. Variabila de mediu PATH se ocupă de

33
aceste situaţii. Această variabilă listează acele directoare din sistem în care se găsesc fişiere
executabile, pentru ca utilizatorii să nu fie obligaţi să memoreze adresele comenzilor sau să tasteze
foarte multe caractere. Astfel, PATH conţine multe directoare care au în numele lor bin, după cum
ne arată exemplul de mai jos. Comanda echo este folosită pentru afişarea conţinutului („$”)
variabilei PATH:

În acest exemplu, directoarele /home/student/bin, /home/student/.local/bin,


/usr/local/sbin, /usr/local/bin, /usr/sbin, /user/bin, /sbin, /bin,
/usr/games, /usr/local/games, /snap/bin sunt explorate frecvent în căutarea
programelor solicitate. De îndată ce este găsită o potrivire, căutarea este oprită, chiar dacă nu toate
directoarele din variabila de mediu au fost cercetate.
Remarcaţi folosirea comenzii su (schimbă utilizatorul), care vă permite să deschideţi o
consolă în mediul altui utilizator, cu condiţia să cunoaşteţi parola acelui utilizator – su nume .
Iată un exemplu în care un utilizator doreşte să verifice numărul de linii dintr-un fişier prin
comanda wc (word count – numără cuvintele), dar trebuie să anuleze comanda prin combinaţia de
taste Ctrl+C, deoarece nu se întâmplă nimic:

Comanda which ne arată că acest utilizator are un director bin în directorul său personal,
care conţine un program numit tot wc. Deoarece programul wc, care se află în directorul său
personal, este găsit primul la căutarea prin variabila de mediu, acest program este cel executat, iar
ceea ce i se spune să execute nu este recunoscut, aşa că trebuie oprit. Pentru a rezolva această
problemă există mai multe căi (întotdeauna există mai multe căi pentru a rezolva o problemă în
Linux): una ar fi redenumirea programului wc propriu utilizatorului sau utilizatorul poate să
furnizeze adresa completă a comenzii pe care o doreşte, care poate fi aflată prin folosirea comenzii
which cu opţiunea -a.
Dacă un utilizator foloseşte mai frecvent programe din alte directoare, el poate schimba
comportamentul variabilei de mediu, pentru ca aceasta să caute în directorul personal la sfârşit:
:~$ export PATH=/usr/local/bin:/usr/local/sbin:usr/X11R6/bin:\
/usr/bin:/usr/sbin:/bin:/sbin:/home/jumper/bin
Atunci când folosiţi comanda export într-o consolă, schimbările sunt temporare, ele fiind valide
doar pentru sesiunea curentă (până ce vă deautentificaţi).
O adresă, care este traseul pe care trebuie să-l urmaţi în structura de fişiere pentru a ajunge
la un anumit fişier, poate fi descrisă ca pornind de la trunchi ( / sau directorul rădăcină – root).
În acest caz, traseul începe cu caracterul ( / ) şi este denumit traseu absolut, deoarece nu pot fi
făcute confuzii: numai un singur fişier din sistem corespunde acestui traseu.

34
În situaţia în care traseul nu începe cu caracterul ( / ), pot exista confuzii, precum aceea
dintre ~/bin/wc (fişier care se află în directorul personal al utilizatorului) şi bin/wc, care se
găseşte în directorul /usr, confuzie reflectată de exemplul pe care l-am oferit mai sus. Traseele
care nu încep cu / sunt considerate trasee relative.
Pentru traseele relative vom folosi întotdeauna caracterele (.) şi (..) pentru directorul curent şi
directorul superior. Iată câteva exemple:
- Atunci când doriţi să compilaţi din codul-sursă, documentaţia de instalare vă oferă adesea
instrucţiuni care vă spun să rulaţi comanda ./configure, care porneşte programul
configure din directorul curent (cel care vine cu noul cod) şi nu alt program
configure care se găseşte în altă parte a sistemului.
- În fişierele HTML, traseele relative sunt folosite la realizarea unor pagini care pot fi uşor
mutate în alte locuri:
<img alt=”Garden with trees” src=”../images/garden.jpg”>

6 Cele mai importante fişiere şi directoare


Kernelul
Kernelul este inima sistemului. El asigură comunicaţiile dintre dispozitivele sistemului. De
asemenea, kernelul porneşte şi opreşte procesele şi serviciile exact atunci când este nevoie. O
mulţime de alte sarcini importante sunt executate de kernel.
Consola (shell-ul)
Există tot felul de definiţii, care încep cu simpla comparaţie care spune ”consola este
precum volanul unei maşini”, includ definiţia destul de vagă din manualul Bash: „consola este un
interpretor de comenzi compatibil cu limbajul sh” şi se termină cu expresia, şi mai obscură,
„consola asigură interacţiunea dintre sistem şi utilizatorii acestuia”. Consola este mai mult decât
atât.
Cea mai potrivită imagine este aceea potrivit căreia consola este o cale de comunicare cu
sistemul, un limbaj. Cei mai mulţi utilizatori folosesc alt limbaj, cel al clicului de mouse, dezvoltat
pentru spaţiul de lucru. Dar în acest limbaj calculatorul conduce conversaţia, utilizatorul având
doar un rol pasiv, în care poate alege doar dintre sarcinile care îi sunt oferite. Este greu pentru un
programator să includă toate opţiunile şi toate comenzile, cu posibilităţile lor, într-o interfaţă
grafică. De aceea, interfeţele grafice sunt mai puţin capabile decât comanda sau comenzile care
sunt incluse în suportul sistemului.
Consola, pe de altă parte, este o cale avansată prin care comunicaţi cu sistemul, deoarece permite o
comunicare în ambele sensuri, în care dumneavoastră puteţi chiar prelua iniţiativa. Ambii parteneri
sunt egali, aşa că pot fi testate noi idei. Consola permite utilizatorilor să folosească sistemul într-un
mod flexibil. O însuşire suplimentară este aceea prin care se poate realiza automatizarea sarcinilor.

Calculatorul înţelege mai multe tipuri de console:


- sh sau consola Bourne: consola originală din sistemele UNIX, folosită încă în aceste
sisteme sau în mediile înrudite cu UNIX-ul. Este o consolă de bază, un program mic cu
câteva facilităţi.
- bash sau consola Bourne Again (Bourne Again SHell): este consola standard GNU,
intuitivă şi flexibilă. În Linux, bash este consola standard pentru utilizatorii obişnuiţi.
Această consolă mai este numită superconsola Bourne, deoarece conţine mai multe
suplimente şi module. Deci consola Bourne Again este compatibilă cu consola Bourne:
comenzile care merg în sh vor funcţiona şi în bash. Inversul nu este valabil întotdeauna.

35
- csh sau consola C: sintaxa acestei console este asemănătoare cu cea a limbajului de
programare C. Este solicitată îndeosebi de programatori.
- tcsh sau consola Turbo C: este o dezvoltare a consolei C, mai prietenoasă cu utilizatorii şi
mai rapidă.
- ksh sau consola Korn: este apreciată mai mult de persoanele care au experienţă în mediul
UNIX. Este o dezvoltare a consolei Bourne; în configuraţia standard, este un coşmar pentru
utilizatorii începători.
Dacă nu ştiţi ce consolă folosiţi, fie verificaţi linia care aparţine contului dumneavoastră din
/etc/passwd, fie tastaţi: echo $SHELL
Directorul personal (home directory)
Directorul personal este destinaţia implicită după conectarea la sistem. Traseul corect al
directorului dumneavoastră personal este stocat în variabila de mediu HOME, pentru ca programele
care solicită acest traseu să îl poată găsi. Comanda echo va afişa conţinutul acestei variabile:
:~$ echo $HOME
/home/student
Puteţi face absolut orice doriţi în directorul personal. Puteţi face cât de multe fişiere doriţi
în tot atâtea directoare, ceea ce vă limitează fiind doar posibilităţile fizice ale echipamentului şi
mărimea partiţiei sau, câteodată, administratorul, care poate să aloce o cotă fiecărui utilizator.
Directorul personal este indicat de caracterul (~), care reprezintă prescurtarea de la
/traseul către directorul personal/numele tău de utilizator
(/path_to_home/user_name). Şi prescurtarea se află stocată în variabila de mediu HOME,
aşa că nu trebuie să faceţi nimic pentru a o activa. Iată o aplicaţie foarte simplă şi la obiect:
utilizatorul de mai jos se mută din directorul /var/music/albums/arno/2001 în directorul images,
care se află în directorul său personal, folosind o comandă elegantă:
:/var/music/albums/arno/2001> cd ~/images
0
:~/images> pwd
/home/rom/images
Este recomandat ca directorul personal între sesiuni de lucru să fie menținut curat.
Fişierele de configurare
Cele mai multe fişiere de configurare se găsesc în directorul /etc. Conţinutul poate fi
afişat prin comanda cat, care trimite fişierele text la ieşirea standard (de regulă, monitorul).
Sintaxa este simplă:
cat fișier1 fișier2....fișierN
Puteți face cunoștință cu cele mai importante fişiere de configurare studiind documentaţia.
Dispozitive
Dispozitivele, în general orice periferice ataşate la un calculator în afară de procesorul
propriu-zis, sunt văzute de sistem ca intrări în directorul /dev. Unul din avantajele modului în
care UNIX-ul lucrează cu dispozitivele este acela că nici utilizatorul şi nici sistemul nu trebuie să-
şi bată prea mult capul cu specificaţiile acestor dispozitive. Vă prezentăm mai jos o listă cu
dispozitivele despre care ar trebui să cunoașteți mai multe.
Tabelul 5 - Dispozitive des întâlnite
Nume Dispozitiv
cdrom Unitate CD
console Intrare specială pentru consola folosită în mod curent

36
cua* Porturi seriale
dsp* Dispozitive pentru eşantionare şi înregistrare
f* Intrări pentru dispozitivele floppy (dischete), intrarea implicită
fiind / dev/fd0, unitatea de dischete de 1,44 MO
hd [a-t] [1-16] Asistenţă pentru unităţile IDE, care asigură numărul maxim de
partiţii
ir* Dispozitive infraroşu
isdn* Administrarea legăturilor ISDN
js* Joystick-uri
lp* Imprimante
mem Memorie
midi* Player midi
mixer* și music Model ideal al unui mixer (combină sau adaugă semnale
audio)
modem Modem
mouse (sau msmouse, logimouse, Toate felurile de mouse-uri
psmouse, input/mice/ psaux)
null Sac fără fund de gunoi
par* Intrări pentru asistenţa porturilor paralele
pty* Pseudoterminale
radio* Pentru dispozitive radioamatori (HAM`s
ram* Dispozitive de pornire a sistemului
sd* Asistenţă discuri şi partiţii SCSI
sequencer Pentru aplicaţii audio care folosesc facilităţile de sintetizare
ale plăcii audio (controller-e ale dispozitivelor MIDI)
tty* Console virtuale care simulează terminale vt100
usb* Dispozitive USB şi scannere
video* De utilizat pentru plăcile grafice care includ video

Fișiere variabile
În directorul /var se găseşte un set de directoare pentru stocarea datelor care nu sunt, prin
specificul lor, constante (opuse celor din programul ls sau celor cuprinse în fişierele de
configurare ale sistemului, care se schimbă foarte rar sau chiar deloc). Toate fişierele care se
schimbă frecvent, precum fişierele raport (log files), căsuţele de mail, cozile în aşteptare, etc,
sunt păstrate în subdirectoare ale directorului /var.
Ca măsură de securitate, aceste fişiere sunt păstrate, de regulă, separat de fişierele principale ale
sistemului, pentru a le ţine sub supraveghere strictă, cu înăsprirea permisiunilor acolo unde este
cazul. O mare parte a acestor fişiere au nevoie de mai multe permisiuni decât în mod normal,
precum /var/tmp, care trebuie să fie scris de oricine. Multe din activităţile utilizatorilor pot fi
găsite aici şi chiar activităţi generate de utilizatori necunoscuţi, conectaţi la sistemul
dumneavoastră prin Internet. Iată deci un motiv pentru care directorul /var, cu toate
subdirectoarele sale, se află, de regulă, pe o partiţie separată. În acest mod nu există riscul ca o
bombă de mail, de exemplu, să poată umple tot sistemul de fişiere, afectând datele importante, cum
ar fi programele şi fişierele de configurare.
Fişierele din /tmp pot fi şterse de către sistem fără preaviz, ca parte a sarcinilor obişnuite
sau la repornirea calculatorului. Pe unele sisteme (personalizate) şi /var/tmp poate să se
comporte imprevizibil. Totuşi, pentru că nu este un comportament implicit, vă sfătuim să folosiţi
directorul /var/tmp pentru salvarea fişierelor temporare. Dacă aveţi dubii, întrebaţi
administratorul de sistem.

37
Dacă acest administrator sunteţi chiar dumneavoastră, puteţi fi îndeajuns de sigur că
directorul despre care vorbim se comportă normal dacă nu aţi schimbat conştient însuşirile
/var/tmp (ca root, deoarece un utilizator obişnuit nu o poate face).
Orice aţi face, încercaţi să vă limitaţi la privilegiile asociate unui utilizator obişnuit – nu
salvaţi fişiere direct în secţiunea de root ( / ) a sistemului de fişiere, nu le puneţi în directorul
/usr sau în subdirectoarele acestuia ori în alt loc dedicat. Astfel vă este limitat accesul doar la
fişierele sigure, care nu implică modificări majore în sistem.
Unul dintre principalele sisteme de securitate dintr-un sistem UNIX, implementat, de
asemenea, pe toate maşinile Linux, este facilitatea de păstrare a fişierelor jurnal, care
înregistrează toate acţiunile utilizatorilor, procesele, evenimentele din sistem, etc. Fişierul de
configurare al aşa-numitului syslogdaemon determină unde şi pentru cât timp vor fi păstrate
informaţiile din fişierele jurnal. Locul implicit pentru fişierele jurnal este /var/log, şi
conţine jurnalele de acces, jurnalele serviciilor, mesajele de sistem, ş.a.
În directorul /var sunt şi datele serverelor, care sunt ţinute aici pentru a fi separate de datele
sensibile, precum programele în sine şi fişierele de configurare. Un exemplu tipic sistemelor Linux
este directorul /var/www, care conţine paginile HTML, scripturile şi imaginile pe care le oferă
serverul. Vă sfătuim ca şi sistemul de fişiere FTP care se află pe un server FTP (datele care pot fi
descărcate de un client aflat la distanţă) să fie păstrate într-un subdirector al lui /var. Pentru că
aceste date sunt accesibile publicului şi schimbate adesea de utilizatori necunoscuţi, este mai sigur
să le păstraţi aici, departe de partiţiile şi directoarele care conţin date sensibile.
În cazul celor mai multe instalări ca staţii de lucru, /var/spool va conţine cel puţin un director
at şi altul cron, în care vom găsi sarcinile programate. Pe staţiile de lucru pe care sunt instalate
programele pentru birou, acest director conţine şi lpd, care păstrează informaţii despre lucrările
care aşteaptă tipărirea, fişierele de configurare ale imprimantei, cât şi fişierele jurnal ale acesteia.
Pe sistemele folosite ca servere vom găsi, în general, directorul /var/spool/mail, care
conţine mailurile primite de utilizatorii locali, stocate în fişiere separate pentru fiecare utilizator,
aşa numita „căsuţă” a utilizatorului (user`s „inbox”). Un director înrudit este mqueue, coada de
aşteptare pentru mesajele de poştă electronică netrimise încă. Aceste părţi ale sistemului pot fi
foarte solicitate în cazul serverelor de mail care au foarte mulţi utilizatori. Serverele de ştiri
folosesc şi ele directorul /var/spool din cauza cantităţilor enorme de mesaje pe care le
procesează.
În această lucrare aţi învăţat câteva comenzi pentru consolă, pe care vi le prezentăm din nou
în tabelul de mai jos:
Comanda Ce execută
touch filename creează un fişier gol (0 octeţi)
comandă>fișier redirecționarea ieșirii standard în fișier, conținutul vechi al fișierului
este șters.
file filename afişează tipul fişierului al cărui nume este filename
cat textfile afişează conţinutul unui fişier text pe ecran
pwd afişează directorul curent (print working directory)
df returneaza informatii legate de partitiile montate

df fișier prezintă spaţiul utilizat pe partiţia discului care conţine fişierul în


cauză

which comandă arată traseul complet al comenzii în cauză

echo șir afişează şirul de caractere introdus

38
wc fișier numără liniile, cuvintele şi caracterele dintr-un fişier

export setează o variabilă de mediu

su schimbă utilizatorul

Sarcină la laborator 3
1) Autentificaţi-vă ca utilizator obişnuit. Executați operațiile enumerate mai jos și găsiți
răspunsuri la întrebări.
2) Creați catalogul propriu în directorul /home/user/. Toate operațiile și fișierele pentru
extragerea rezultatelor le veți crea în acest catalog sau subcataloagele lui (mkdir lab3)
3) Partiţii. Afişaţi traseul dumneavoastră de căutare. Exportaţi o cale inexistentă, de exemplu
export PATH=blah şi încercaţi să listaţi conţinutul directorului. Care este traseul
directorului dumneavoastră personal? Cum poate un alt utilizator să ajungă la directorul
dumneavoastră personal, folosind un traseu relativ? Mergeţi în directorul tmp din var.
Mergeţi în directorul share din usr folosind o singură comandă. Care este directorul
curent de lucru (pwd)?
4) Turul sistemului. Mergeţi în directorul /proc. Pe ce procesor rulează sistemul
dumneavoastră? Cât de multă memorie RAM foloseşte acum? Cât spaţiu alocat pentru
swap aveţi? Ce drivere sunt încărcate? De câte ore rulează sistemul? Ce sisteme de fişiere
sunt recunoscute în sistem? Mutaţi-vă în /etc/rc.d | /etc/init.d |
/etc/runlevels şi alegeţi directorul potrivit nivelului de executare (rulare) al
sistemului dumneavoastră. Ce servicii ar trebui să ruleze în acest nivel? Ce servicii rulează
în modul grafic şi nu rulează în modul text? Mutaţi-vă în /etc. Cât timp păstrează
sistemul fişierele jurnal în care sunt monitorizate autentificările utilizatorilor? Ce versiune
folosiţi? Există alte notificări sau mesaje ale zilei? Câţi utilizatori există pe sistemul
dumneavoastră? Nu îi număraţi, lăsaţi calculatorul să facă acest lucru în locul
dumneavoastră. Câte grupuri? Unde este păstrată informaţia referitoare la zona de timp?
Sunt instalate în calculator informaţii de tipul CUM SĂ? Mutaţi-vă în usr/share/doc.
Numiţi trei programe care sunt incluse în pachetul GNU coreutils. Ce versiune a
consolei (bash) este instalată în sistemul dumneavoastră?
5) Toate acțiunile executate la punctele 1 – 4 să fie puse într-un fișier, care va fi salvat și inclus
în Raport.
6) Perfectați și prezentați profesorului Raportul și primiți întrebări sau sarcina pentru
susținere.
7) După susținerea laboratorului ștergeți catalogul creat cu toate componentele lui.
(rm –R lab3)

Задания к лабораторной работе №3


1) Аутентифицируетесь как обычный пользователь. Выполните все шаги, приведенные
ниже и ответьте на вопросы.
2) Создайте личный подкаталог в каталоге /home/user/. Все скрипты и файлы для
сохранения результатов будут сохранены в этом каталоге или в подкаталогах (mkdir
lab3).

39
3) Разделы. Покажите свой путь поиска. Укажите несуществующий путь, к примеру,
export PATH=blah и просмотрите содержимое каталога. Каков путь Вашего
подкаталога? Как другой пользователь может попасть в ваш личный каталог с
использованием относительного пути? Перейдите в каталог tmp из var. Перейдите в
каталог share из usr используя одну команду. Измените каталог с doc. Каков
текущий каталог (pwd)?
4) Обзор системы. Перейдите в каталог /proc. На каком процессоре работает Ваша
система? Какой обьем памяти используется на данный момент? Какой обьем памяти
отведен под swap? Какие драйверы загружены? Сколько часов активна система?
Какие файловые системы поддерживаются операционной системой? Перейдите в
/etc/rc.d | /etc/init.d | /etc/runlevels и выберите каталог,
соответствующий уровню работы вашей системы. Какие сервисы должны быть
запущены на этом уровне? Какие сервисы выполняются в графическом режиме, но не
в текстовом. Перейдите в /etc. Как долго система хранит файлы журналов, в
которых отслеживаются аутентификации пользователей? Какую версию используете?
Существуют ли другие уведомления или сообщения дня? Сколько пользователей в
вашей системе? Не считайте их, пусть компьютер сделает это за вас. Сколько групп?
Где хранится информация о часовом поясе? Установлены ли файлы типа HOW TO?
Перейдите в usr/share/doc. Назовите три программы которые включенны пакет
GNU coreutils. Какая версия консоли (bash) установлена в Вашей системе?
5) Все действия выполненые в пунктах 1-4 сохраните в файле, который будет сохранен и
включен в Отчет.
6) Подготовьте и представьте отчет преподавателю и получите вопросы или задание для
защиты лабораторной работы.
7) После защиты лабораторной работы удалите созданный каталог со всеми файлами.
(rm –R lab3)

40
Laborator 4 Manipularea fişierelor Linux
Noțiuni studiate
1. Consultarea proprietăților fișierelor
2. Crearea, mutarea şi ştergerea fişierelor şi directoarelor
3. Căutarea fișierelor
4. Afișarea conținutului unui fișier
5. Fișiere de legătură
6. Afişarea proprietăţilor fişierelor şi schimbarea permisiunilor acestora
Indicații metodice
1 Consultarea proprietăţilor fişierelor
Comanda ls oferă informaţii despre numele unui fişier, tipul fişierului, permisiunile asociate unui
fişier, mărimea fişierului, numărul de nod (inode), data şi ora la care a fost creat, deţinători şi
numărul de legături către acel fişier. Dacă asociem comenzii ls opţiunea -a, sunt afişate şi
fişierele care sunt în mod normal ascunse. Numele acestor fişiere începe cu un punct (caracterul
„.”). În afară de acest lucru, fiecare director conţine un fişier al cărui nume conţine doar un punct
(.) şi altul care conţine doar două puncte (..), care sunt folosite în combinaţie cu numărul nodului
asociat lor pentru a determina poziţia directorului în sistemul arborescent de fişiere.
Trebuie neapărat să citiţi paginile Info despre ls, deoarece este o comandă des utilizată, care are
multe opţiuni folositoare. Opţiunile pot fi combinate, comportament care este specific multor
comenzi şi opţiuni ale UNIX-ului. O combinaţie des întâlnită este ls -al; ea arată lista întreagă a
fişierelor cu proprietăţile lor precum şi destinaţiile spre care ţintesc eventualele legături simbolice.
ls -latr afişează aceleaşi fişiere, doar că în ordine inversă, în aşa fel încât fişierele care au fost
modificate recent apar la baza listei.
În unele distribuţii de Linux, comanda ls este executată implicit sub forma aliasului colorls.
Această facilitate vă permite vizualizarea tipului fişierelor fără a folosi vreo opţiune asupra ls.
Pentru a vă arăta aceste informaţii, fiecare tip de fişier este prezentat printr-o culoare distinctă. Mai
multe informaţii veţi găsi în paginile man. O descriere completă a funcţiilor şi facilităţilor
comenzii ls poate fi citită prin comanda info coreutils ls.
Pentru a afla mai multe despre tipul de date cu care lucraţi, folosiţi comanda file. Prin teste care
verifică proprietăţile fişierelor, numere magice şi teste de limbaj, file încearcă să afişeze
proprietăţile unui fişier într-un format mai elaborat. Iată câteva exemple:
:~$ file Documents/ .
Documents/: directory

41
:~$ file high-tech-stats.pdf
high-tech-stats.pdf: PDF document, version 1.2

:~$ file Documents/Untitled1.odt


Documents/Untitled1.odt: OpenDocument Text
Comanda file poate fi folosită cu mai multe opţiuni; opţiunea -z vă permite să vă uitaţi în
fişierele comprimate. Utilizaţi comanda info file pentru o descriere detaliată. Să nu uitaţi că
rezultatul comenzii file nu este unul absolut, ci o presupunere. Cu alte cuvinte, file poate fi
păcălită.
2 Crearea şi ştergerea directoarelor
În secţiunea următoare vom discuta mijloacele prin care putem păstra ordinea atunci când
lucrăm cu fișierele. Lista de mai jos este o prezentare a celor mai cunoscuţi administratori de fişiere
din GNU/Linux. Cei mai mulţi pot fi porniţi din meniul administratorului spaţiului de lucru, prin
apăsarea iconiţei care arată directorul dumneavoastră personal sau din linia de comandă, astfel:
- nautilus: este administratorul de fişiere implicit din Gnome, spaţiul de lucru GNU. O
documentaţie excelentă pentru această unealtă poate fi găsită la: http://www.gnome.org.
- konqueror: este administratorul de fişiere utilizat implicit în spaţiul de lucru KDE.
Manualul poate fi găsit la: http://docs.kde.org.
- mc: Midnight Commander, administratorul de fişiere din UNIX, în stilul Norton
Commander. Documentaţia este disponibilă la http://www.gnu.org/directory/ sau la un
sait-oglindă precum http://www.ibiblio.org.
O cale prin care puteţi păstra lucrurile sub control este să alocaţi anumitor fişiere locuri implicite
prin crearea de directoare şi subdirectoare. Acest lucru se face prin comanda mkdir:

Crearea directoarelor şi subdirectoarelor într-un singur pas se realizează prin opţiunea -p:

3 Operații cu fişierele
Cu ajutorul comenzii mv punem fiecare fişier răzleţ în locul potrivit:
:~/archive$ mv ../report[1-4].doc reports/RM/ :
Această comandă se aplică şi în cazul redenumirii fişierelor:

42
În exemplul de mai sus doar numele fişierului s-a schimbat. Toate celelalte proprietăţi rămân
aceleaşi.
Copierea fişierelor şi directoarelor se face prin comanda cp. O opţiune folositoare a acestei
comenzi este copiere recursivă (copierea tuturor fişierelor şi subdirectoarelor dintr-un director),
ataşând -R comenzii cp. Sintaxa, în cazul general, este:

cp [-R] fișier_de_copiat destinaţia_nouă (cp [-R] fromfile


tofile)
Pentru a şterge fişiere folosiţi comanda rm iar pentru ştergerea directoarelor goale, folosiţi
comanda rmdir (folosiţi ls -a pentru a verifica dacă un director este gol sau nu). Comáanda
rm are opţiuni pe care le putem folosi în ştergerea directoarelor care nu sunt goale, adică putem
şterge directorul cu toate subdirectoarele sale. Este un lucru normal ca directoarele . (punct) şi ..
(punct-punct) să fie imposibil de şters, deoarece ele sunt absolut necesare într-un director, chiar
gol, pentru a determina rangul acelui director în sistemul de fişiere. În Linux, la fel ca în UNIX, nu
există coş de gunoi – cel puţin, nu în cazul consolei, pentru că în cazul interfeţei grafice, există
destule alternative. Aşa că odată şters, un fişier este pierdut şi, în general, nu există o cale prin care
să îl puteţi recupera, în afară de cazurile în care aveţi cópii de siguranţă ale fişierului respectiv sau
sunteţi foarte rapid şi aveţi un administrator de sistem foarte bun. Pentru a proteja utilizatorii
începători se poate activa comportamentul interactiv în cazul comenzilor rm, cp şi mv prin
opţiunea -i. În acest mod sistemul nu va reacţiona doar la cererea simplă a utilizatorului. În
schimb, va cere confirmare, aşa că este nevoie de o a doua apăsare a tastei Enter pentru a
produce vreo pagubă, dacă este cazul:
Consola poate lucra cu mai multe fişiere în acelaşi timp. Ea ştie ce i se cere prin caracterele
cuprinse între parantezele drepte „ [ ” şi „ ] ”. Consola poate substitui serii de numere şi
caractere, majuscule ori nu. Poate substitui oricât de multe caractere doriţi cu un astersic şi un
singur caracter cu un semn de întrebare. Toate substituirile pot fi folosite simultan; consola are o
logică imbatabilă în această privinţă. Consola Bash, de exemplu, nu are nici o problemă în a trata
expresii precum ls dirname/*/*/*[2-3]. În alte console asteriscul este folosit pentru a
uşura munca utilizatorilor, prin reducerea numărului de caractere care trebuie tastate: astfel puteţi
introduce cd dir* în loc de cd directory. În consola Bash nu este necesar să facem acest
lucru, deoarece această unealtă GNU are o facilitate numită autocompletarea numelui fişierelor.
Concret, dacă tastaţi doar primele caractere ale comenzii (oriunde vă aflaţi în structura de fişiere)
sau ale unui fişier (care aparţine directorului curent) şi dacă nu este posibilă nici o confuzie,
consola va găsi ceea ce dumneavoastră doriţi. De exemplu, dacă vă poziţionaţi într-un director care
conţine multe fişiere, puteţi verifica dacă există fişiere care încep cu litera A prin comanda ls A
urmată de apăsarea tastei Tab de două ori în loc de apăsarea tastei Enter. Dacă există doar un
singur fişier al cărui nume începe cu „A”, acest fişier vă fi prezentat imediat ca argument al
comenzii ls (sau al oricărei comenzi).
O cale foarte simplă prin care putem căuta fişiere este comanda which, prin care putem
căuta în directoarele listate în variabila PATH a utilizatorului respectiv după fişierul dorit. Trebuie
să ştim că, deoarece variabila listează numai traseele directoarelor care conţin fişiere executabile,

43
which nu ne spune nimic despre fişierele obişnuite. Comanda which este folositoare atunci când
vă confruntaţi cu probleme de genul „command not found” - comandă lipsă, de negăsit.
Find şi locate (găseşte şi localizează) sunt uneltele cele mai bune, care pot fi folosite şi
în căutarea fişierelor care nu sunt listate în traseele conţinute de variabila PATH. find, aşa cum
este cunoscută din UNIX, este o unealtă foarte puternică, poate cu preţul unei sintaxe mai dificile.
Dar comanda find din GNU se poate descurca cu problemele ridicate de sintaxă. Nu numai că vă
permite căutarea după numele fişierelor, ci acceptă criterii ca mărimea fişierelor, data ultimei
modificări precum şi alte proprietăţi ale fişierelor. Cea mai răspândită formă este cea prin care se
caută fişiere:
find <path> -name <criterii_de_căutare>
Această expresie poate fi interpretată astfel: „Caută în toate subdirectoarele şi fişierele
determinate de traseul dat şi afişează numele fişierelor care conţin în numele lor (nu în conţinutul
acestora) criteriul de căutare introdus”.

Dacă veţi căuta în paginile man, veţi afla că find poate executa anumite operaţii asupra
fişierelor pe care le găseşte. Ca exemplu putem vorbi despre ştergerea fişierelor. Cel mai bine este
să verificaţi dacă fişierul găsit este cel dorit de dumneavoastră, adică nu lansaţi comanda file cu
opţiunea de execuţie -exec, şi doar după aceea reintroduceţi comanda prin care ştergeţi fişierul
respectiv. Mai jos vă prezentăm o căutare a fişierelor de tipul .tmp:
:~$ find . -name “*.tmp” –exec rm {} \; :
.
:~$ .
Această comandă va apela rm ori de câte ori este găsit un fişier ale cărui proprietăţi se
potrivesc cu criteriile de căutare. Pot fi zeci de mii sau milioane de fişiere. Acest lucru va
determina încărcarea sistemului. Un mod de lucru mai realist este folosirea unei conexiuni (pipe
– I) şi a uneltei xargs împreună cu rm ca argument. În acest fel, comanda rm este apelată atunci
când linia de comandă este plină, în loc să fie apelată la fiecare fişier găsit.
Comanda locate este un program mai uşor de utilizat, dar cu mai multe restricţii decât
find, deoarece rezultatul afişat de această comandă este bazat pe un fişier care conţine un index al
unei baze de date actualizată o singură dată pe zi. Pe de altă parte, o căutare în baza de date a
comenzii locate foloseşte mai puţine resurse decât find, aşa că rezultatele sunt afişate aproape
instantaneu. Cele mai multe distribuţii de Linux folosesc acum slocate, adică o căutare care ia
în considerare şi aspecte legate de securitate, care nu permite utilizatorilor să aibă acces la un
rezultat pe care nu au dreptul să-l citească. Fişierele din directorul personal al administratorului
(root`s home directory) de exemplu, nu sunt, în mod normal, accesibile publicului. Un
utilizator care doreşte să găsească pe cineva care foloseşte consola C, poate introduce comanda
locate .cshrc, pentru a i se afişa toţi utilizatorii care deţin un fişier personalizat pentru
consola C. Presupunând că utilizatorii root şi jenny folosesc consola C, atunci numai fişierul
/home/jenny/.cshcr va fi afişat, nu şi acela din directorul personal al administratorului.
4 Afişarea conţinutului unui fişier
În afară de comanda cat, care nu prea face altceva în afară de a trimite fişierele la ieşirea
standard, există alte unelte pentru a vizualiza conţinutul unui fişier. Să cunoaştem deci uneltele text
pe care le avem la dispoziţie pentru a privi în conţinutul fişierelor.
„less înseamnă mai mult”! Fără îndoială că veţi auzi pe cineva spunând această propoziţie mai
devreme sau mai târziu dacă lucraţi într-un mediu UNIX. Puţină istorie a UNIX-ului este necesară
pentru a explica acest lucru:

44
- La început a fost cat. Rezultatul comenzii era difuzat într-un mod incontrolabil.
- Apoi a fost pg, care poate fi găsită şi acum pe unele UNIX-uri mai vechi. Această
comandă afişează textul la ieşirea standard pagină cu pagină.
- Programul more a fost o versiune revizuită a lui pg. Această comandă este încă
disponibilă pe orice sistem Linux.
- less este versiunea GNU a comenzii more şi dispune de mai multe facilităţi care permit
evidenţierea criteriilor de căutare, derularea, etc. Sintaxa este foarte simplă:
less numele_fișierului (less name_file)
Mai multe informaţii sunt conţinute pe paginile Info.
Comenzile head şi tail afişează primele/ultimele n linii din fişierul respectiv. Pentru a
afişa ultimele 10 comenzi introduse, tastaţi:

head lucrează asemănător. Comanda tail are o opţiune folositoare prin care arată continuu
ultimele n linii ale unui fişier care are un conţinut în permanentă schimbare. Această opţiune -f
este utilizată de administratorii de sisteme pentru a verifica fişierele jurnal.
5 Fişiere de legătură
O legătură nu este altceva decât o cale prin care potrivim două sau mai multe nume de fişiere în
acelaşi set de date. Sunt două căi prin care obţinem acest lucru:
- Legături fizice: asociază două sau mai multe nume de fişiere aceluiaşi nod. Legăturile
fizice împart aceleaşi blocuri de date pe discul fix, în timp ce continuă să se comporte ca
fişiere independente. Există un dezavantaj: legăturile fizice nu pot sări peste partiţii,
deoarece numărul asociat nodului este unic doar pentru partiţia în cauză.
- Legături simbolice - numite şi soft links (sau, pe scurt, symlink): un fişier mic care este
un indicator către alt fişier. O legătură simbolică conţine traseul către fişierul ţintă, în
schimbul locului fizic de pe discul fix al fişierului ţintă. Deoarece nodurile nu sunt
folosite în această metodă, legăturile simbolice pot traversa partiţii.
Cele două tipuri de legături se comportă la fel, dar nu sunt acelaşi lucru, după cum puteţi
observa din schema de mai jos:

45
Figura 8 - Mecanismul legăturilor fizice şi simbolice
Dacă ştergeţi fişierul ţintă al unei legături simbolice, acea legătură nu mai este folositoare.
Fiecare fişier obişnuit este, în principiu, o legătură fizică. Legăturile fizice nu pot traversa partiţiile,
deoarece ele au ca referinţă nodurile (inodes), iar numărul unui nod este unic doar în interiorul
unei partiţii date. Se poate argumenta că există un al treilea tip de legătură, legătura utilizator-
spaţiu, care este similară unei scurtături din sistemul MS Windows. Ele sunt fişiere care conţin
meta-date care pot fi interpretate doar de administratorul grafic de fişiere. Pentru kernel şi consolă,
aceste fişiere sunt fişiere normale. Ele se pot termina cu sufixul (extensia) .desktop sau .lnk;
exemple pot fi găsite în ~/ .gnome desktop.
Legăturile simbolice sunt interesante îndeosebi pentru utilizatorii începători: ele sunt uşor
de văzut şi nu trebuie să vă faceţi griji în privinţa partiţiilor.
Comanda prin care facem legături este ln. Pentru a realiza o legătură simbolică folosim opţiunea
-s:
ln -s fișier_ţintă nume_legătură (ln -s targetfile linkname).
În exemplul de mai jos, utilizatorul freddy realizează o legătură simbolică într-un
subdirector al directorului său personal cu altă parte a sistemului:
freddy:~/music> ln –s /opt/mp3/Queen/Queen .
freddy:~/music> ls -l .
lrwxrwxrwx 1 freddy freddy 17 Jan 22 11:07 Queen ->/opt/mp3/Queen
Aplicaţiile legăturilor simbolice sunt variate. Ele sunt folosite pentru a salva spaţiu pe disc,
pentru a face o copie a unui fişier în ideea de a satisface cerinţele de instalare ale unui program care
se aşteaptă ca un anume fişier să se afle într-un alt loc, sunt folosite pentru scripturile care trebuie
să ruleze pe neaşteptate în medii noi şi vă pot scuti, în general, de multă muncă. Un administrator
de sistem poate decide să mute directorul personal al unui utilizator într-un loc nou, discul 2
(disk 2), de exemplu, dar, dacă doreşte ca totul să funcţioneze ca înainte, cum ar fi fişierul

46
/etc/passwd, cu un efort minim va realiza o legătură simbolică din directorul /home către
noul loc /disk2/home.
6 Securitatea fişierelor
Drepturile de acces reprezintă prima linie de apărare a Linux-ului. Modelul de securitate din
Linux este bazat pe cel folosit în sistemele UNIX şi este la fel de rigid (câteodată chiar mai rigid)
ca modelul UNIX-ului, care este oricum destul de robust. Într-un sistem Linux, orice fişier este
deţinut de un utilizator şi un grup de utilizatori. Există, de asemenea, o a treia categorie de
utilizatori, aceia care nu sunt utilizatori deţinători şi nici nu aparţin unui grup care deţine un anume
fişier. Pentru fiecare categorie de utilizatori pot fi acordate sau nu (interzise) permisiunile legate de
citire, scriere sau executare ale unui fişier.
Aţi folosit deja opţiunea completă pentru a lista fişierele folosind comanda ls -l, deşi din
alte motive. Această comandă afişează permisiunile ataşate fişierelor pentru aceste trei categorii de
utilizatori; ele sunt indicate prin nouă caractere care urmează după primul caracter a cărui funcţie
este aceea de indicator al tipului de fişier, la începutul liniei care arată proprietăţile fişierului. După
cum se poate observa din exemplul următor, primele trei caractere din seria de nouă afişează
drepturile de acces ale utilizatorului care deţine fişierul. Următoarele trei sunt pentru grupul căruia
aparţine utilizatorul, iar ultimele trei, pentru ceilalţi utilizatori. Permisiunile sunt listate întotdeauna
în aceeaşi ordine: citire, scriere şi executare pentru utilizator, grupul căruia aparţine utilizatorul şi
pentru ceilalţi.
Iată câteva exemple:

Primul fişier este un fişier obişnuit (proprietate arătată de primul caracter, „ - ” ).


Utilizatoarea cu numele marise sau utilizatorii care aparţin grupului users pot citi şi scrie (adică
schimba/muta/şterge) acest fişier, dar nu pot rula acest fişier ca program (a doua şi a treia liniuţă).
Toţi ceilalţi utilizatori au doar permisiunea de a citi acest fişier, dar nu îl pot scrie sau rula/executa
(cea de-a patra şi a cincea liniuţă).
Cel de-al doilea exemplu este un fişier executabil, diferenţa: oricine poate rula acest
program, dar trebuie să fii root, administrator, pentru a-l schimba.
Paginile Info explică în ce mod comanda ls afişează permisiunile în detaliu; consultaţi
secţiunea Ce informaţii sunt listate. Pentru ca utilizarea comenzilor împreună cu
fişierele să fie cât mai facilă, atât permisiunile, drepturile de acces, cât şi grupurile de utilizatori, au
un cod (tabelul 6).
Tabelul 6 - Codurile care arată grupurile utilizatorilor și drepturile de acces
Cod Semnificație
Grupuri dee accesDrepturi de

0 sau - Drepturile de acces asociate fişierului nu sunt acordate


4 sau r Categoria de utilizatori definită are drepturi de citire
2 sau w Categoria de utilizatori definită are drepturi de scriere
1 sau x Categoria de utilizatori definită poate rula fişierul
u Permisiunile acordate utilizatorilor
utilizatori

g Permisiunile acordate grupurilor

o Permisiunile acordate celorlalţi

47
Această schemă este aplicată foarte strict, ceea ce permite un nivel destul de ridicat al
securităţii, chiar dacă reţeaua nu este securizată. Printre alte funcţii, schema de securitate asigură
accesul utilizatorilor la programe, pune la dispoziţie anumite fişiere considerate necesare tuturor
utilizatorilor şi protejează date sensibile, cum ar fi directoarele personale şi fişierele de configurare
ale sistemului. Numele de utilizator poate fi afişat prin comanda id, care vă arată şi grupul iniţial
de care aparţine utilizatorul, eventual celelalte grupuri al căror membru este:

marise:~> id
:
uid=504(marise) gid=504(marise) groups=504(marise),
100(users),2051(org).
De asemenea, numele de utilizator este stocat în variabila de mediu USER:

O consecinţă normală a aplicării unor permisiuni stricte în privinţa drepturilor asupra


fişierelor, care poate fi considerată câteodată chiar neplăcere, este aceea că drepturile de acces vor
trebui schimbate din mai multe motive. Folosim comanda chmod pentru a face acest lucru, iar to
chmod aproape că a devenit un verb acceptat al limbii engleze, însemnând schimbarea modului de
acces asupra unui fişier. Comanda chmod poate fi folosită cu opţiuni numerice sau alfanumerice,
în funcţie de care vă plac mai mult. Exemplul de mai jos arată opţiunile alfanumerice folosite
pentru rezolvarea unei probleme cu care se confruntă utilizatorii începători:
marise:~> ./hello
:
bash: ./hello: bad interpreter: Permission denied
.
marise:~> cat hello
:
#!/bin/bash
.
echo “Hello, World”
:

.
marise:~> ls –l hello
:
-rw-rw-r-- 1 marise marise 5 Jan 15 15:39 hello
o

.
marise:~> chmod u+x hello
:

.
marise:~> ./hello
:

48
Hello, World
d

k
marise:~> ls –l hello
:
-rwxrw-r-- 1 marise marise 5 Jan 15 15:40 hello* o
.
Operanzii + şi – sunt folosiţi pentru a acorda sau interzice drepturile unui grup.
Combinaţiile separate prin virgule sunt permise.
Comanda chmod poate fi folosită cu argumente numerice. În acest caz valorile fiecărui
drept de acces acordat trebuie aplicate la nivelul grupului. De aceea avem un număr format din trei
cifre, care conţine valorile simbolice ale setărilor pe care chmod trebuie să le aplice. Tabelul 7 arată
cele mai întâlnite combinaţii.
Tabelul 7 - Protejarea fişierelor cu chmod
Comanda Semnificația comenzii
chmod 400 fişier Pentru protejarea unui fişier de o suprascriere accidentală
chmod 500 director Pentru a vă opri pe dumneavoastră să ştergeţi, redenumiţi sau să mutaţi
accidental fişiere care aparţin acestui director
chmod 600 fişier Un fişier privat, care poate fi schimbat doar de utilizatorul care a introdus
această comandă
chmod 644 fişier Un fişier care poate fi accesat public dar care poate fi schimbat doar de
utilizatorul care a introdus această comandă
chmod 660 fişier Utilizatorii care aparţin grupului tău pot schimba acest fişier pe când
ceilalţi nu au nici un fel de drepturi asupra lui
chmod 700 fişier Numai utilizatorul are drepturi depline, ceilalţi, indiferent de grupul
aparţinător, nu au nici un fel de drepturi
chmod 755 director Pentru fişierele care trebuie să fie citite sau rulate şi de către alţi
utilizatori, dar scrise (schimbate) doar de utilizatorul care a introdus
comanda descrisă
chmod 775 fişier Modul standard de acordare a permisiunilor pentru un grup
chmod 777 fişier Oricine poate face orice cu acest fişier
Un utilizator se poate autentifica într-un alt grup. Atunci când tastaţi comanda id într-o
linie de comandă, primiţi o listă a tuturor grupurilor cărora este posibil să le aparţineţi, precedate de
numele dumneavoastră de utilizator plus ID-ul şi numele grupului plus ID-ul cu care sunteţi
conectat în acel moment. Însă, în multe sisteme Linux, poţi fi activ doar într-un singur grup. Iniţial,
acest grup activ sau primar este acela care îţi este asociat de fişierul /etc/passwd. Cel de-al patrulea
câmp al acestui fişier arată ID-ul grupului primar al utilizatorului, care este verificat prin fişierul
/etc/group. Iată un exemplu:
stef:~> id
:
uid=501(stef) gid=501(stef) groups=100(users),501(stef),3400(web)
.

:
stef:~> grep stef /etc/passwd
.
stef:x:501:501:Stef cel Mare:/home/stef:/bin/bash
:

49
.
stef:~> grep 501 /etc/group
.
stef:x:501:
:
Cel de-al patrulea câmp în linia din fişierul /etc/passwd conţine valoarea „501”, care
reprezintă grupul stef în exemplul de mai sus. Din /etc/group putem afla numele care
corespunde acestui ID de grup. Acestui grup va aparţine stef la autentificarea iniţială în sistem.
Pentru a permite o flexibilitate mărită, cele mai multe sisteme Linux folosesc o aşa numită
schemă de grup privat al utilizatorului, care asociază fiecare utilizator cu grupul său primar.
Acest grup este un grup care conţine numai acest utilizator particular, de unde numele de grup
privat. De regulă, acest grup are acelaşi nume cu numele utilizatorului, ceea ce poate genera
anumite confuzii. În afară de acest grup privat, utilizatorul stef poate aparţine şi grupurilor user
şi web. Deoarece aceste grupuri sunt grupuri secundare pentru utilizatorul nostru, el trebuie să
folosească newgrp pentru a se autentifica în oricare din ele (folosiţi mai întâi gpasswd pentru a
stabili parole pentru aceste grupuri). În exemplul care urmează, stef doreşte să creeze fişiere care
să fie deţinute de grupul web.
stef:/var/www/html> newgrp web
:

:
stef:/var/www/html> id
.
uid=501(stef) gid=3400(web) groups=100(users),501(stef),3400(web)
:
Acum, în momentul în care stef creează fişiere noi, acestea vor fi deţinute de grupul web în loc
să fie deţinute de grupul stef:
stef:/var/www/html> touch test
:

:
stef:/var/www/html> ls –l test
.
-rw-rw-r-- l stef web 0 Jun 10 15:30 test
:
Autentificarea într-un grup nou vă ajută să preîntâmpinaţi folosirea comenzii chown sau
chemarea administratorului de sistem pentru a schimba permisiunile asupra fişierelor pentru
dumneavoastră.
Masca fişierelor. Când un fişier nou este salvat undeva, devine, în primul rând, subiectul
procedurilor standard de securitate. Fişiere care să nu aibă alocate permisiuni nu există în Linux.
Permisiunile standard, care sunt alocate implicit fişierelor noi, sunt determinate de mască (mask).
Valoarea numerică a măştii poate fi afişată prin comanda umask:
stef:~> umask
:
0002
:

50
În loc de a adăuga valori simbolice fiecărui fişier, cum se întâmplă prin folosirea chmod,
pentru a calcula permisiunile asociate unui nou fişier, ele sunt scăzute din numărul care arată
drepturile de acces posibile. În exemplul de mai sus, totuşi, observăm afişate patru valori, în timp
ce ştim că există doar trei categorii cărora li se aplică permisiuni: utilizator, grup şi alţii. Primul
zero este parte a atributelor speciale de configurare ale unui fişier. Se poate întâmpla ca acest prim
zero să nu fie afişat de sistemul dumneavoastră atunci când introduceţi comanda umask şi să
vedeţi doar trei numere care arată masca implicită pentru crearea de fişiere. Orice sistem
asemănător UNIX-ului are o funcţie pentru crearea de noi fişiere, care este apelată ori de câte ori
un utilizator foloseşte un program care creează fişiere noi, de exemplu când descărcaţi un fişier de
pe Internet, când salvaţi un nou document text şi aşa mai departe. Această funcţie creează atât
fişiere cât şi directoare. La crearea unui director nou, această funcţie va acorda permisiuni pentru
citire, scriere şi executare pentru toate categoriile de utilizatori. La crearea unui fişier nou, funcţia
va acorda permisiuni de citire şi scriere pentru toţi, dar nici o categorie de utilizatori nu va avea
permisiunea de executare a acelui fişier. De aceea, înainte ca masca să fie aplicată, un director are
permisiunea 777 sau rwxrwxrwx, un fişier obişnuit 666 sau rw-rw-rw-. Valoarea umask este
scăzută din aceste permisiuni implicite după ce funcţia a creat un fişier sau un director nou. Astfel,
un director va avea permisiunea implicită 775 şi un fişier 664, dacă valoarea măştii este (0)002.
Acest lucru vă este demonstrat în exemplul de mai jos:
stef:~> mkdir newdir
:

:
stef:~> ls –ld newdir
:
drwxrwxr-x 2 stef stef 4096 Feb 28 13:45 newdir/
:

:
stef:~> touch newfile
:

:
stef:~> ls –l newfile
:
-rw-rw-r-- 1 stef stef 0 Feb 28 13:52 newfile
:
Fişiere vs. Directoare. Un director va primi implicit mai multe permisiuni: el va avea
întotdeauna permisiuni de executare. Dacă nu le-ar avea, directorul nu ar fi accesibil. Încercaţi
acest lucru prin schimbarea permisiunilor unui director (chmodding) în 644! Dacă vă
autentificaţi într-un alt grup folosind comanda newgrp, masca rămâne neschimbată. De aceea, în
cazul în care este stabilită ca 002, fişierele şi directoarele pe care le creaţi în timp ce sunteţi în
grupul nou vor fi accesibile şi celorlalţi membri ai grupului; nu trebuie să folosiţi chmod.
Utilizatorul root are, de obicei, permisiuni iniţiale asociate fişierelor noi mai stricte:
[root@estoban root]# umask
:
022
:
Această valoare implicită este extinsă asupra întregului sistem prin fişierele de configurare a
resurselor consolei, de exemplu /etc/bashrc sau /etc/profile. O puteţi schimba din
fişierul de configurare a consolei.

51
Modificarea apartenenţei la un utilizator sau la un grup. Când un fişier figurează ca
fiind deţinut de un utilizator sau un grup despre care credeţi că nu ar fi îndreptăţiţi să o facă, puteţi
repara eroarea prin comenzile chown (schimbă utilizatorul) sau chgrp (schimbă grupul).
Schimbarea deţinătorilor unui fişier este o sarcină des întâlnită de administratorii de sistem în
mediile în care este nevoie ca fişierele să fie partajate de către grupuri de utilizatori. Ambele
comenzi sunt flexibile, după cum puteţi afla prin opţiunea - -help. Comanda chown poate fi
aplicată pentru a schimba deţinătorii unui fişier atât la nivel de utilizator, cât şi la nivel de grup, pe
când chgrp schimbă doar grupul care deţine acel fişier. Desigur, sistemul va verifica dacă
utilizatorul care introduce aceste schimbări are suficiente permisiuni asupra fişierului sau fişierelor
asupra cărora doreşte să folosească aceste comenzi. Pentru a modifica doar utilizatorul deţinător al
unui fişier, folosiţi sintaxa de mai jos:
chown utilizator_nou fișier
Dacă folosiţi două puncte după numele de utilizator (consultaţi paginile Info), va fi
modificat şi grupul deţinător, în grupul primar al utilizatorului care introduce comanda. Pe
sistemele Linux, fiecare utilizator are propriul său grup, astfel că această formă a comenzii poate fi
folosită pentru a crea fişiere private:
jacky:~> id
:
uid=1304(jacky) gid=(1304) groups=1304(jacky),2034(project)
:

:
jacky:~> ls –l my_report
:
-rw-rw-r-- 1 jacky project 29387 Jan 15 09:34 my_report
:

:
jacky:~> chown jacky: my_report
:

:
jacky:~> chmod o-r my_report
:

:
jacky:~> ls –l my_report
:
-rw-rw---- 1 jacky jacky 29387 Jan 15 09:34 my_report
:
Dacă jacky va dori să partajeze acest fişier, fără să ofere oricui permisiuni de scriere,
poate folosi comanda chgrp:
jacky:~> ls –l report=20020115.xls
:
-rw-rw---- 1 jacky jacky 45635 Jan 15 09:35 report-20020115.xls
:

:
jacky:~> chgr project report-20020115.xls
:

52
:
jacky:~> chmod o= report-20020115.xls
:

:
jacky:~> chmod o-r my_report
:

:
jacky:~> ls –l report-20020115.xls
:
-rw-rw---- 1 jacky project 45635 Jan 15 09:35 report-20020115.xls
:
Astfel, utilizatorii din grupul project vor putea să lucreze cu acest fişier. Utilizatorii care
nu aparţin grupului menţionat nu au nici o treabă cu acest fişier. Ambele comenzi, chown şi
chgrp, pot fi folosite pentru schimbarea deţinătorilor recursiv, prin opţiunea -R. În acest caz,
toate subdirectoarele şi fişierele conţinute într-un director vor aparţine utilizatorului sau/şi grupului
dat.
Restricţii. Pe cele mai multe sisteme, folosirea comenzilor chown şi chgrp este
restricţionată în cazul utilizatorilor obişnuiţi. Dacă nu sunteţi administratorul sistemului, nu puteţi
schimba utilizatorul sau grupul care deţine un anumit fişier, din motive care ţin de securitatea
sistemului. Dacă utilizarea acestor comenzi nu ar fi restricţionată, utilizatorii rău-intenţionaţi pot
modifica apartenenţa fişierelor la un utilizator sau la un grup şi ar putea schimba mediul de lucru al
utilizatorilor legitimi sau chiar distruge fişierele celorlalţi utilizatori.
Moduri speciale. Pentru ca administratorii de sistem să nu fie deranjaţi tot timpul pentru a
rezolva probleme legate de drepturile de acces, drepturi speciale pot fi alocate directoarelor în
întregime sau numai programelor. Există trei moduri speciale:
- Modul bit-ului lipicios (persistent – sticky bit mode): după executarea unei
sarcini, comanda este păstrată în memoria sistemului. La începuturi, acest mod era folosit
pe scară largă pentru a salva memorie: sarcinile mari erau încărcate în memorie doar o
singură dată. În zilele noastre, memoria nu mai este aşa de scumpă şi există tehnici mai
bune de gestionare a acesteia, aşa că nu mai este folosit, pentru capacităţile de optimizare
conţinute, asupra fişierelor singulare. Totuşi, aplicat asupra unui întreg director, acest mod
are un alt înţeles. În acest caz, un utilizator poate schimba fişierele conţinute de directorul
în cauză doar dacă este deţinătorul acelui fişier sau dacă permisiunile asociate fişierului
acordă dreptul de a face modificări. Acest mod este utilizat pentru directoare ca
/var/tmp, care trebuie să fie accesibile tuturor, dar în care un utilizator oarecare nu are
voie să schimbe sau să şteargă datele care aparţin celorlalţi. Bit-ul lipicios este indicat
printr-un t la sfârşitul liniei care arată permisiunile alocate unui fişier:
mark:~> ls –ld /var/tmp
:
drwxrwxrwt 19 root root 8192 Jan 16 10:35 /watt/tmp/
:
Modul este aplicat prin comanda chmod o+t directory. Originile istorice ale lui „ t ”
se găsesc în facilitatea proprie UNIX-ului save Text acces.
- SUID (stabiliţi identitatea utilizatorului – set user ID) şi SGID (stabiliţi identitatea
grupului – set group ID): sunt reprezentate de caracterul s în linia care arată permisiunile

53
alocate unui fişier. Când acest mod este aplicat unui fişier executabil, el va rula cu
permisiunile utilizatorului şi ale grupului, în loc de acelea ale utilizatorului care introduce
comanda, oferind acces la resursele sistemului.
- SGID (stabiliţi identitatea grupului) asupra unui director: în acest caz aparte, fişierele
create în directorul în cauză vor aparţine aceluiaşi grup căruia aparţine directorul care le
conţine (în timp ce comportamentul normal este ca fişierele noi să fie deţinute de
utilizatorii care le creează). Astfel, utilizatorii nu trebuie să se gândească la aparţinătorii
unor fişiere care trebuie partajate:
mimi:~> ls –ld /opt/docs
:
drwxrws--- 4 root users 4096 Jul 25 2001 docs/
:

o
mimi:~> ls –l /opt/docs
:
-rw-rw---- 1 mimi users 345672 Aug 30 2001-Council.doc
:
Acesta este modul standard prin care se partajează fişierele în UNIX. Fişierele existente nu sunt
modificate! Fişierele care sunt mutate într-un director SGID, dar care sunt create în altă parte,
păstrează utilizatorul şi grupul deţinător (aparţinător) iniţial. Acest comportament poate produce
confuzii.
Sumar. În UNIX, cât şi în Linux, toate entităţile sunt prezentate sistemului, într-un fel sau
altul, ca fişiere care au asociate anumite proprietăţi. Utilizarea traseelor (predefinite) permite
utilizatorilor şi administratorilor de sistem să găsească, citească şi să mânuiască fişierele.
Am făcut primii paşi pe calea care ne va transforma în experţi: am discutat structura adevărată şi
cea presupusă a unui sistem de fişiere şi v-aţi format o imagine despre modelul de securitate a
fişierelor din Linux, cât şi despre alte câteva precauţii de securitate care sunt aplicate implicit în
orice sistem.
Consola este cea mai importantă unealtă prin care interacţionăm cu sistemul Linux. În acest capitol
aţi învăţat câteva comenzi pentru consolă, pe care vi le prezentăm din nou în tabelul de mai jos:

Comanda Înțelesul comenzii

bash Consola GNU

cat fişier(e) Trimite conţinutul unui fişier (unor fişiere) la ieşirea standard

cd director Schimbă directorul

chgrp grup_nou fişier(e) Schimbă grupul deţinător al unui fişier cu grupul nou

chmod mod fişier(e) Modifică permisiunile de acces asupra fişierului

chown utilizator_nou [: Schimbă utilizatorul şi grupul deţinător


[grup_nou]] fișier(e)

cp fișierul_sursă Copiază fişierul sursă în fişierul ţintă


fișierul_ţintă

54
df fișier Prezintă spaţiul utilizat pe partiţia discului care conţine fişierul în
cauză

echo șir Afişează şirul de caractere introdus

export Parte a comenzilor proprii consolei care anunţă sistemului


variabilele şi valorile acestora

file nume_fișier Determină tipul unui fişier

find traseu expresie Găseşte fişierele în ierarhia SGF

grep TIPAR fișier Afişează liniile din fişier care conţin tiparul introdus

head fișier Trimite prima parte a unui fişier la ieşirea standard

id Afişează numele reale şi efective ale utilizatorilor şi grupurilor

info comandă Afişează documentaţia disponibilă pentru comanda în cauză

less fișier Este arătat fişierul cu ajutorul unui vizualizator mai puternic

ln fișier_ţintă Realizează o legătură numită nume_legătură către un fişier_ţintă


nume_legătură

locate criteriu_căutare Afişează toate fişierele accesibile care au în nume elemente ale
criteriului de căutare

ls fișier(e) Afişează conţinutul directorului

man comandă Afişează manualele sistemului pentru comanda în cauză

mv fișier_vechi fișier_nou Redenumeşte sau mută un fişier

newgrp nume_grup Autentificare într-un grup nou

pwd Prezintă directorul curent în care lucraţi

quota Arată limitele alocate şi gradul de utilizare a discului

rm fișier Şterge fişiere şi directoare

rmdir fișier Şterge directoare

tail fișier Afişează ultima parte a unui fişier

umask [valoare] Arată sau schimbă modul în care sunt create fişiere noi

wc fișier Numără liniile, cuvintele şi caracterele dintr-un fişier

which comandă Arată traseul complet al comenzii în cauză

55
Sarcină la laborator 4
1) Creați catalogul propriu în directorul /home/user/. Toate acțiunile și fișierele pentru
extragerea rezultatelor le veți crea în acest catalog sau subcataloagele lui (mkdir lab4).
2) Executați acțiunile sau răspundeți la întrebările de mai jos:
- Puteţi schimba permisiunile asociate directorului personal /home?
- Care este modul implicit pentru crearea fişierelor în cazul dumneavoastră?
- Schimbaţi deţinătorii directorului /etc în utilizatorul şi grupul asociate dumneavoastră.
- Schimbaţi permisiunile asociate fişierului ~/.bashrc în aşa fel încât numai
dumneavoastră şi grupul dumneavoastră primar să îl poată citi.
- Introduceţi comanda locate root. Observaţi ceva deosebit?
- Creaţi o legătură simbolică care este îndreptată către /root. Poate fi folosită?

Задания к лабораторной работе №4


1) Создайте свой подкаталог в каталоге /home/user/. Все скрипты и файлы для
сохранения результатов будут сохранены в этом каталоге или в подкаталогах (mkdir
lab4).
2) Выполните действия и ответьте на нижеприведенные вопросы:
- Можете изменить права доступа своего каталога /home?
- Какой способ, по умолчанию, принят для создания файлов?
- Измените права каталога /etc на ваши права как пользователя и вашей
группы.
- Измените права файла ~/.bashrc так, чтобы только вы и ваша группа
могли прочитать его.
- Введите команду locate root. Что заметили?
- Создайте символьную связь которая направленна на /root. Может быть
использована ?
3) Все действия выполненые в пунктах 1, 2 сохраните в файле, который будет сохранен
и включен в Отчет.
4) Подготовьте и представьте отчет преподавателю и получите вопросы или задание для
защиты лабораторной работы.
5) После защиты лабораторной работы удалите созданный каталог со всеми файлами.
(rm –R lab4)

56
Laborator 5 Procesarea fluxurilor textuale în SO GNU/Linux
Noțiuni studiate
1. Noțiunea de intrare și ieșire standard a procesului
2. Redirecționarea ieșirii standard în fișier
3. Legarea proceselor de intrări/ieșiri
4. Utilizarea ieșirii unui proces ca parametru al unui alt proces
5. Expresii regulate și filtrarea fluxurilor textuale
Indicații metodice
Interfața principală în sistemele de operare GNU/Linux este interfața de tip consolă cu
introducere și extragere textuală a datelor. Aceasta determină abordarea administrării obiectelor
sistemului de operare în reprezentarea lor textuală. De exemplu, starea proceselor este reflectată
sub forma unui set de fișiere textuale în /proc, informația despre evenimentele care au loc în
sistem este păstrată în fișierele textuale ale jurnalelor, setările unor pachete sunt păstrate în fișiere
textuale de configurare. Din această cauză pentru soluționarea problemelor, legate de administrarea
sistemului de operare, este necesar să cunoaștem modalitatea de lucru cu fluxurile textuale.
1 Controlul (administrarea) intrărilor-ieșirilor proceselor (comenzilor)
Implicit, fiecare proces are deschise trei fișiere (trei fluxuri standard) – stdin (intrarea standard,
tastatura), stdout (ieșirea standard, ecranul) și stderr ((ieșirea standard (la ecran) pentru
mesajele de eroare). Aceste trei fluxuri standard (ca și oricare alte fișiere deschise) pot fi
redirecționate către alte dispozitive (fișiere), altele decât ecranul sau tastatura. Termenul
“redirecționare” semnifică în acest caz: ieșirea fișierului (comenzii, programului, scenariului) să fie
transmisă la intrarea altui fișier (comandă, program, scenariu). Pentru aceasta este utilizat numărul
descriptorului fluxului standard. Descriptorii fișierelor deschise implicit sunt:

0 = stdin
1 = stdout
2 = stderr

Redirecționarea ieșirii standard


Rezultatul execuției unei comenzi este afișat de bash la consola de ieșire (implicit, la ecran).
Această ieșire poate fi redirecționată către un fișier folosind semnul >:
comandă > fișier – redirecționarea ieșirii standard în fișier, conținutul vechi al fișierului este
șters.
Concatenare
Putem adăuga ieșrea unui proces la sfârșitul unui fișier, care va fi creat dacă acesta nu
exista anterior, folosind semnul >>:
Comandă >> fișier – redirecționarea ieșirii standard în fișier, fluxul text se va adăuga
la sfârșitul fișierului.
Alte redirecționări:

57
comandă1|comandă2 – redirecționarea ieșirii standard a primei comenzi la intrarea standard a
comenzii a doua, ceea ce permite crearea unui conveier de comenzi.
comandă1$(comandă2)– transmiterea ieșirii comenzii 2 ca parametru al comenzii 1. În cadrul
unui script construcția $(comandă2) poate fi utilizată, de exemplu pentru transmiterea
rezultatelor obținute de comandă2 în parametrii ciclului for … in.
2 Operații cu șiruri de caractere (comenzi interne bash)
${#string} – returnează lungimea șirului (string – nume variabilă);
${string:position:length} – extrage $length simboluri din $string, începând
cu poziția $position. Caz particular: ${string:position} extrage un subșir din
$string, începând cu poziția $position.
${string#substring} – elimină subșirul $substring cel mai mic din cele depistate în
șirul $string. Căutarea are loc de la începutul șirului. $substring este o expresie regulată.
${string##substring} – elimină subșirul $substring cel mai mare din cele depistate
în șirul $string. Căutarea are loc de la începutul șirului. $substring este o expresie regulată.
${string/substring/replacement} – înlocuiește prima intrare $substring cu șirul
$replacement. $substring – este o expresie regulată.
${string//substring/replacement} – înlocuiește toate intrările $substring cu șirul
$replacement. $substring este o expresie regulată.

3 Operații cu șiruri de caractere (comenzi externe)


Pentru fiecare comandă este posibil controlul folosind parametrii transmiși comenzii.
Recomandăm să faceți cunoștință cu documentația referitoare la comenzi folosind comanda man.
Comanda sort – sortează textul în ordine de creștere sau descreștere, în dependență de opțiuni.
Comanda uniq – elimină șirurile care se repetă dintr-un fișier care a fost sortat.
Comanda cut – extrage unele câmpuri din fișierele textuale (prin câmp înțelegem secvență de
simboluri până la spațiu).
Comanda head – extrage liniile de început din fișier la stdout.
Comanda tail – extrage liniile de sfârșit din fișier la stdout.
Comanda wc – calculează cantitatea de cuvinte/linii/simboluri din fișier sau flux.
Comanda tr – înlocuiește unele simboluri cu altele.
Utilitare full-featured (complet funcționale) multi-scop:
Comanda grep – utilitară multi-scop de căutare, care folosește expresii regulate.
grep pattern [file...] – utilitară pentru căutarea fragmentelor de text în fișier/fișiere,
care corespund șablonului pattern, unde pattern poate fi linie simplă sau expresie regulată.
Comanda Sed – “editor de flux” neinteractiv. Preia textul de la dispozitivul stdin sau
dintr-un fișier text, execută unele operații asupra liniilor după care afișază rezultatul la stdout
sau în fișier. Sed determină, reieșind din spațiul de adrese dat, liniile asupra cărora vor fi executate
operațiile. Spațiul de adresă al liniilor este desemnat de numărul de ordine al acestora sau de
șablon. De exemplu, comanda 3d va obliga sed să elimine linia a treia, iar instrucțiunea
/windows/d va conduce la eliminarea tuturor liniilor, care conțin cuvântul "windows". Cel mai

58
frecvent sunt utilizate comenzile p – imprimare (la stdout), d – eliminare/ștergere și s –
înlocuire.
Comanda awk – utilitara pentru căutare contextuală și transformare a textului, instrument
pentru extragerea și/sau procesarea câmpurilor (coloanelor) în fișiere text structurate. Awk imparte
fiecare linie în câmpuri individuale. În mod implicit, câmpurile sunt secvențe de caractere separate
prin spații, dar există posibilitatea de a desemna alt caracter ca separator de câmp. Awk analizează
și procesează fiecare câmp aparte.
Expresii regulate – set de simboluri și/sau metasimboluri, înzestrate cu proprietăți
speciale.
Destinația principală a expresiilor regulate este căutarea textuală după șablon și procesarea
șirurilor. La construirea expresiilor regulate sunt folosite construcțiile de mai jos (în ordinea
priorității), dintre care unele pot fi utilizate doar pentru versiuni extinse ale comenzilor
corespunzătoare (de exemplu, lansarea lui grep cu cheia -E).
С Orice caracter nespecial c corespunde sie însăși
\с Indicație să fie eliminătă orice valoare specială a caracterului c (prefixare, ecranare)
^ Început de linie
$ Sfârșit de linie; expresia "^$" corespunde liniei vide
. Orice caracter unic, cu excepția caracterului de linie nouă
[...] Orice caracter din...; sunt admise diapazoane de tipul а-z; este posibilă reuniunea
diapazoanelor, de exemplu a-z0-9]
[^...] Orice caracter în afară de...; sunt admise diapazoanele
\n Linia, care corespunde expresiei n \(...\)
r* Zero și mai multe intrări ale caracterului r
r+ Una și mai multe intrări ale caracterului r
r? Zero sau o intrăre ale caracterului r
\<...\> Granița unui cuvânt
\{ \} Numărul de intrări ale expresiei precedente. De exemplu, expresia "[0-9]\{5\}"
corespunde unui subșir din cinci cifre zecimale
r1r2 După r1 urmează r2
r1|r2 r1 sau r2
(r) Expresia regulată r; poate fi imbricată
4 Clase de caractere POSIX
[:class:] metodă alternativă de a specifica un diapazon de caractere.
[:alnum:] corespunde caracterelor alfanumerice. Este echivalentă expresiei [A-Za-z0-9].
[:alpha:] corespunde caracterelor alfabetului. Este echivalentă expresiei [A-Za-z].
[:blank:] corespunde caracterului spațiu sau tabulare.
[:cntrl:] corespunde caracterelor de control.
[:digit:] corespunde setului de cifre zecimale. Este echivalentă expresiei [0-9].
[:lower:] corespunde caracterelor alfabetului din registrul inferior. Echivalentă expresiei [a-z].
[:space:] corespunde caracterelor de spațiere (spațiu și tabulare orizontală).
[:upper:] corespunde caracterelor alfabetului din registrul superior. Echivalentă expresiei [A-
Z].
[:xdigit:] corespunde setului de cifre hexazecimale. Este echivalentă expresiei [0-9A-Fa-f].

Sarcină la laborator 5
1) Creați catalogul propriu în directorul /home/user/. Toate scripturile și fișierele pentru
extragerea rezultatelor le veți crea în acest catalog sau subcataloagele lui (mkdir lab5)

59
2) Condiţii conform baremului:
1) Scrieți scripturile, care vor rezolva următoarele probleme:
a) Creați fișierul errors.log, în care veți plasa toate liniile din toate fișierele
directorului /var/log/ accesibile pentru citire, care conţin secvența de caractere ACPI.
Afișați la ecran liniile din fișierul rezultant, care conțin numele fișierelor, excluzând calea.
b) Creați fișierul full.log, în care veți plasa liniile din fișierul
/var/log/Xorg.0.log, care conțin avertizări și mesaje informaționale, înlocuind
marcherii avertizărilor și mesajelor informaționale cu cuvintele Warning: și
Information:, astfel încât în fișierul rezultant mai întâi să apară toate mesajele
informaționale, iar apoi toate avertizările. Afișați acest fișier la ecran.
c) Calculați numărul total de linii în fișierele directorului /var/log/ cu extensia
log.
2) Scrieți scripturile, care vor rezolva următoarele probleme:
a) Creați fișierul emails.lst, în care veți plasa toate adresele de poștă electronică
separate prin virgulă, depistate în fișierele directorului /etc.
b) Găsiți în directorul /bin toate fișierele, care reprezintă script-uri și afișați la ecran
numele complet al unui fișier cu numele interpretorului cel mai des utilizat în aceste
script-uri (sau numărul de utilizare al fiecărui interpretor). Fişierele cu script-uri pot
începe cu una din următoarele linii:
 #!/bin/sh
 #!/bin/bash
 #!/usr/bin/perl
 #!/usr/bin/tcl.
c) Afișați lista utilizatorilor sistemului cu indicarea UID al fiecăruia, cu sortarea după
UID. Informațiile despre utilizatori sunt păstrate în fișierul /etc/passwd. În
fiecare linie a acestui fișier primul câmp conține numele utilizatorului, iar câmpul al
treilea - UID. Separator – două puncte (:).
d) Afișați trei cel mai frecvent întâlnite cuvinte din man pentru comanda bash cu
lungimea de cel puțin 4 caractere.
3) Prezentați profesorului scripturile și primiți întrebări sau sarcina pentru susținerea lucrării
de laborator.
4) După susținerea laboratorului ștergeți catalogul creat cu toate componentele lui.
(rm –R lab5)

Задания к лабораторной работе №5


1) Создайте свой подкаталог в каталоге /home/user/. Все скрипты и файлы для
сохранения результатов будут сохранены в этом каталоге или в подкаталогах (mkdir
lab5).
2) Задания, согласно оценочной шкале:
1) Напишите скрипты, которые решают следующие задачи:
a) Создайте файл errors.log, в котором сохраните все строки из всех
файлов каталога /var/log/ доступные для чтения, которые содержат
последовательности символов ACPI. Выведите на монитор строки из

60
errors.log, которые содержат только имена файлов, не указывая их
путь.
b) Создайте файл full.log, в котором будут сохранены строки из файла
/var/log/Xorg.0.log, содержащие предупреждения и
информационные сообщения, заменяя маркеры предупреждений и
информационных сообщений словами Warning: и Information:, так
что в результирующем файле сначала появлялись бы все информационные
сообщения, а затем все предупреждения. Выведите этот файл на экран.
c) Рассчитать общее количество строк в файлах каталога /var/log/ с
расширением log.
2) Напишите скрипты, которые решают следующие задачи:
a) Создайте файл emails.lst, в котором будут сохранены все адреса
электронной почты разделенные запятыми, найденые в файлах каталога
/etc.
b) Найдите в каталоге /bin все файлы, которые содержат сценарии и
отобразите на экране полное имя некоторого файла с названием наиболее
часто используемого интерпретатора в этих сценариях (или количество
использований каждого интерпретатора). Сценарии могут начинаться с
одной из следющих строк:
 #!/bin/sh
 #!/bin/bash
 #!/usr/bin/perl
 #!/usr/bin/tcl
c) Выведите на экран список пользователей системы с их UID,
отсортированный по UID. Информация о пользователях хранится в файле
/etc/passwd. В каждой строке этого файла, первое поле содержит имя
пользователя, а третье поле - UID. Разделитель – двоеточие (:).
d) Отобразите три наиболее распространенных слова в man для команды
bash длиной не менее 4 символов.

3) Все скрипты представьте преподавателю и получите вопросы или задание для


защиты лабораторной работы.
4) После защиты лабораторной работы удалите созданный каталог со всеми файлами
(rm –R lab5).

61