CATEGORII DOCUMENTE |
SISTEMUL DE OPERARE LINUX- Administrarea sistemului
Gestionarea partitiilor
1.5.1 Partitionarea discului cu fdisk
Programul fdisk este programul clasic de partitionare a discurilor fixe, avand o interfata tip linie de comanda, in mod text. Sintaxa fdisk este urmatoarea:
# fdisk nume_dispozitiv
Comenzile uzuale sunt:
a - seteaza/anuleaza optiunea de bootare a unei partitii (avertizam ca doar o singura partitie trebuie sa aiba setata aceasta optiune; in caz contrar, este impredictibila partitia de pe care va porni sistemul)
d - sterge o partitie
l - listeaza tipurile de partitii cunoscute
m - afiseaza toate comenzile fdisk
n - adauga o noua partitie
p - afiseaza tabela de partitii
q - paraseste fdisk fara a salva modificarile facute
t - modifica tipul unei partitii
w - scrie tabela pe disc si paraseste fdisk.
Iata un exemplu de lansare a comenzii n:
Command (m for help): n
First cylinder (2837-3649, default 2837):
Using default value 2837
Last cylinder or +size or +sizeM or +sizeK (2837-3649, default 3649):
Using default value 3649
Dupa cum se observa, este solicitat numarul cilindrului de la care va incepe partitia, precum si numarul cilindrului la care se va sfarsi partitia. In locul acestuia din urma poate fi specificata incepand cu + marimea partitiei in octeti, sau kiloocteti adaugand K, sau in megaocteti adaugand M (de exemplu, +500M desemneaza o partitie de 500 megabytes).
Prezentam si un exemplu de lansare a comenzii p:
Command (m for help): p
Disk /dev/hda: 255 heads, 63 sectors, 2088 cylinders
Units = cylinders of 16065 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 6 48163+ 83 Linux
/dev/hda2 7 2064 16530885 83 Linux
/dev/hda3 2065 2088 192780 82 Linux swap
Tabelul 1.5. Tipuri de partitii uzuale
Codul partitiei |
Descriere |
FAT16, partitia de tip MS-DOS |
|
B |
Windows FAT32, partitia de tip Windows 32 biti |
3c |
Partitie extinsa (contine mai multe partitii logice) |
Swap, partitia pentru memorie virtuala |
|
Partitii de tip Linux: ext2, ext3, reiserfs |
2. Administrarea utilizatorilor sistemului
Administrarea utilizatorilor este una dintre activitatile de facto pentru administratorul de sistem UNIX/Linux.
Utilizatorii pot fi ori persoane reale, ori utilizatori logici. Acestia din urma sunt rezervati pentru anumite aplicatii care efectueaza activitati specifice (cum ar fi utilizatorul apache utilizat de serverul httpd). Fiecare utilizator are asociat cate un identificator (User ID) si un identificator de grup (Group ID), ambii luand valori numerice. Un grup poate contine mai multi utilizatori. Acesti doi identificatori sunt atribuiti in momentul crearii utilizatorului, insa pot fi modificati si ulterior. Folositi impreuna, UID si GID determina drepturile de access la fisiere si la alte resurse ale fiecarui utilizator.
Fisierul care memoreaza informatiile despre utilizatori este /etc/passwd, iar cele despre grupuri este /etc/group.
Crearea unui utilizator cuprinde urmatorii pasi:
Atribuie noului utilizator un nume, un identificator de utilizator, precum si un identificator de grup;
Creeaza o intrare noua in fisierele /etc/passwd, /etc/group, eventual /etc/shadow si /etc/gshadow;
Atribuie o parola noului utilizator;
Creeaza directorul home al utilizatorului, de regula /home/nume;
Copiaza fisierele implicite aflate in /etc/skel in directorul home.
Cea mai importanta cerinta pentru pastrarea securitatii sistemului este ca toti utilizatorii sa aiba aparola. Este obligatorie si stabilirea unei parole initiale pentru utilizator, care, de preferinta, va trebui sa fie schimbata de catre acesta la prima intrare in sistem.
A doua cerinta importanta este utilizarea de parole cat mai sigure. La introducerea parolelor, sistemul va face o comparatie cu baza de date de asa-zise "cuvinte de dictionar", adica cuvinte frecvent folosite, stocate in /usr/share/dict.
2.1. Fisierul /etc/passwd
Fisierul /etc/passwd are urmatoarea structura:
Nume:parola:UID:GID:informatii:director:shell
Unde:
Nume este numele utilizatorului
Parola reprezinta parola criptata a utilizatorului, daca nu se foloseste sistemul shadow sau caracterul "x", daca este utilizat acest sistem. Daca acest camp este "*" nu este permisa intrarea utilizatorului in sistem. Daca acest camp este vid, nu va fi solicitata nici o parola pentru autentificarea utilizatorului;
UID reprezinta identificatorul utilizatorului. Pentru securitate sporita, este bine ca valoarea acestuia sa fie unica. In mod conventional identificatorii pana la 100 sunt rezervati pentru utilizatorii logici descrisi mai sus;
GID este identificatorul grupului principal din care face parte utilizatorul. In mod conventional identificatorii pana la 100 sunt rezervati pentru grupurile logice;
Informatii contine in mod normal numele utilizatorului. Acest camp este denumit si campul GECOS. In acest camp pot fi memorate si informatii suplimentare privind biroul in care lucreaza utilizatorul, numarul de telefon etc., aceste informatii fiind separate prin virgula;
Shell este interpretatorul de comenzi utilizat de utilizator. Interpretorul va fi lansat dupa intrarea utilizatorului in sistem. Este in general /bin/bash, dar poate fi si /bin/csh etc.
O linie dintr-un fisier /etc/passwd poate arata astfel:
Sabin:x:101:101:Sabin Buraga /home/sabin: /bin/bash
Fisierul /etc/passwd trebuie sa aiba ca proprietar root-ul si sa nu poata fi scris decat de acesta (e.g. sa aiba drepturile 664).
2.2. Fisierul /etc/group
Fisierul /etc/group are urmatoarea structura:
Nume:*:GID:lista_utilizatori
Unde:
Nume este numele grupului;
GID este identificatorul de grup. In mod conventional identificatorii pana la 100 sunt rezervati pentru grupurile sistemului;
Lista_utilizatori reprezinta lista de utilizatori care fac parte din acest grup, pe langa utilizatorii care apartin grupului in virtutea definitiei din /etc/passwd. Elementele listei trebuie sa fie separate prin virgula.
O linie dintr-un fisier /etc/group poate arata astfel:
Autori:*:200:dragos, sabin
Fisierul /etc/group trebuie sa aiba ca proprietar root-ul si sa nu poata fi scris decat de acesta (e.g. sa aiba drepturile 644).
Administrarea utilizatorilor se poate face cu ajutorul aplicatiei grafice redhat-config-users (din meniul System::User Manager) in Red Hat, userdrake (meniul Configuration::Other::Userdrake) in Mandrake, fie cu ajutorul uneltelor traditionale, fie de ce nu, manual, de catre administratorii experimentati.
Unelte traditionale pentru administrarea utilizatorilor
Adaugarea de utilizatori: useradd nume
Stergerea de utilizatori: userdel nume
Modificarea informatiilor despre utilizatori: usermod nume
Adaugarea de grupuri: groupadd nume
Stergerea de grupuri: groupdel nume
Modificarea informatiilor despre grupuri: groupmod nume
Adaugarea de utilizatori la un grup:
Gpasswd -a nume_utilizator nume_grup
Modificarea parolei unui utilizator: passwd numeuser
Sistemul shadow
Sistemul shadow asigura o metoda sigura de memorare a parolelor. Parolele sunt memorate in fisierul /etc/shadow care nu poate fi accesat de catre utilizatori, avand drepturile de acces 400.
Este recomandata activarea sistemului shadow si eventual a algoritmului de criptare MD5 daca se doreste o siguranta si mai mare. Trecerea de la sistemul clasic de memorare a parolelor la sistemul shadow se poate face cu ajutorul utilitarului pwconv.
Fisierul /etc/shadow este alcatuit din 8 campuri, dupa cum urmeaza:
Nume este numele utilizatorului
Parola este parola criptata
Ultima_modificare data ultimei modificari a parolei, exprimata in zile trecute de la 1 ian 1970
Numar_minim_de_zile numarul de zile cat timp o parola nu poate fi schimbata
Numar_maxim_de_zile numarul de zile dupa care parola trebuie schimbata
Numar_zile_de_atentionare numarul de zile inainte de data la care va trebui ca parola sa fie schimbata, la care utilizatorul va primi o atentionare;
Zile_inactive numarul de zile fara activitate (adica utilizatorul nu intra in sistem) trecute de la data expirarii parolei dupa care utilizatorul va fi blocat;
Data_expirarii data la care utilizatorul va fi blocat automat
Modificarea acestor campuri se poate face tot cu comanda passwd, utilizand optiunile:
-n nr_zile stabileste numarul de zile cat timp parola nu poate fi schimbata
-x nr_zile stabileste numarul de zile dupa care parola trebuie schimbata
-f forteaza utilizatorul sa-si schimbe parola la urmatoarea intrare in sistem
-S afiseaza valorile campurilor
-a se utilizeaza impreuna cu -S pentru a afisa informatii pentru toti utilizatorii
-l blocheaza utilizatorul
-u deblocheaza utilizatorul
-d anuleaza parola.Nu este recomandat!
De exemplu, comanda passwd -x 60 dragos stabileste ca utilizatorul dragos trebuie sa-si schimbe parola o data la 60 de zile.
Comanda passwd -l sabin blocheaza intrarea utilizatorului sabin in sistem.
Poate fi utilizata si comanda chage, care permite si modificarea celorlalte campuri shadow. Aceasta suporta urmatoarele optiuni:
-d nr_zile forteaza data ultimei modificari a parolei, exprimata in zile scurse de la 01 ianuarie 1970
-m nr_zile stabileste nr de zile cat timp parola nu poate fi schimbata
-M nr_zile stabileste nr de zile dupa care parola trebuie schimbata
-W nr_zile nr de zile inainte de data la care parola va trebui sa fie schimbata, la care utilizatorul va primi o atentionare
-I nr_zile numarul de zile fara activitate (adica utilizatorul nu intra in sistem) trecute de la data expirarii parolei, dupa care utilizatorul va fi blocat
-E data data la care utilizatorul va fi blocat automat. Poate fi specificata fie in formatul AAAA-LL-ZZ (an-luna-zi), fie ca numar de zile scurse de la 01 ianuarie 1970.
Ca si passwd, comanda chage primeste ca parametru obligatoriu numele utilizatorului.
Spre exemplu, comanda chage -M 90 -W 5 -I 2 dragos stabileste ca utilizatorul dragos este obligat sa-si modifice parola la fiecare 90 de zile, fiind atentiuonat cu 5 zile inainte de acest termen. De asemenea, utilizatorul va fi blocat dupa 2 zile de inactivitate, dupa acest termen. Acesta va trebui sa contacteze administratorul sistemului pentru a putea fi deblocat.
Comanda chage -E 2002-07-15 sabin stabileste ca utilizatorul sabin va fi blocat neconditionat la 15.07.2002
Pornirea si oprirea sistemului
Imediat dupa punerea sub tensiune, BIOS-ul testeaza sistemul, cauta si initializeaza echipamentele periferice, iar apoi cauta discul de pe care va porni sistemul.BIOS-ul verifica sectorul de boot, MBR-ul citeste mai departe incarcatorul de boot (LILO sau GRUB ) si il executa.
Incarcatorul de boot citeste imaginea nucleului si ii cedeaza controlul. Nucleul indentifica echipamentele cunoscute din sistem, apoi cauta programul init in directorul /sbin si il executa, nu inainte de a monta sistemul de fisiere-radacina in mod read-only.
Procesul init devine parintele tuturor proceselor care vor fi pornite ulterior. De asemenea, el continua operatiunea de pornire, dupa cum urmeaza :
Executa scriptul /etc/rc.d/rc.sysinit, care :
--verifica integritatea sistemului de fisiere-radacina apelind fsck. De
asemenea, este verificata si integritatea celorlalte sisteme de fisiere
specificate in /etc/fstab ;
--monteaza sistemele de fisiere locale ( aflate pe discurile din
sistem);
--initializeaza memoria virtuala;
--initializeaza ceasul sistemului ;
--executa rc.serial pentru a initializa porturile seriale speciale, daca
este cazul.
Citeste configurarile din fisierul /etc/inittab, care descrie fiecare nivel de executie si stabileste nivelul implicit. De asemenea, executa scripturile din nivelul implicit de executie, /etc/rc.d/rc N, unde N este nivelul de executie.
Executa scriptul /etc/rc.d/rc.local , care efectueaza initializari locale.
Standardul System V defineste o serie de stari ale sistemului, denumite niveluri de executie ( run levels). La un moment dat, sistemul se gaseste in una din aceste stari si poate fi trecut intr-o alta stare utilizind anumite comenzi administrative. Urmatorul tabel prezinta nivelurile de executie uzuale :
Tabelul 3.1. nivelurile de executie System V
Nivelul Descriere
de executie
0 Starea de oprire (halt): starea in care sistamul poate fi oprit in
siguranta.
Starea de reparare a sistemului (single-user): in acesta stare nu
este montata decit partitia radacina, reteaua nu este activata iar
serviciile nu sunt pornite. Se utilizeaza atunci cind apar
defctiuni in sistem, de exemplu defectiunea unei partitii.
2 Starea normala a sistemului, fara NFS (mult-user without NFS).
3 Starea normala a sistemului (multiuser).
4 Neutilizata.
5 Starea normala a sistemului, cu login Window.
6 Starea de repornire (reboot).
De asemenea, System V defineste citeva niveluri de executie aditionale, desemnate pein litere ale alfabetului. Acestea nu reprezinta stari distincte ale sistemului, ci folosesc pentru a comunica programului init sa execute anumite operatiuni. De exemplu, nivelul q comunica init sa reciteasca fisierul de configurare.
3.1. Utilizarea modului single
Nivelul de executie single se foloseste pentru activitati administrative. Pentru a initializa nivelul single-user, init executa interpretorul de comenzi, sub utilizatorul root. In acest mod, serviciile normale ale sistemului nu sunt disponibile, nefiind posibila executia daemonilor sau altor programe in fundal.
Sistemul poate fi pornit in mod single furnizind nucleului Linux optiunea single, apeland, de exemplu, la promptul LILO, comanda :
LILO: linux single
Este posibil ca sistemul sa porneasca in mod single, atunci cand in cadrul procesului de pornire apar probleme care nu pot fi rezolvate automat, spre exemplu atunci cind fsck detecteaza erori ce nu pot fi reparate in mod implicit. In aceste cazuri, administratorul sistemului trebuie sa rezolve problema. O data rezolvata, pornirea poate continua terminind executia shell-ului de comenzi, apelind comanda exit sau logout.
Fisierele de initializare System V
Dupa cum am vazut mai devreme, fisierul de configurare al programului init este /etc/inittab. Acest fisier contine intrari care definesc actiunile sistemului atunci cind acesta intra in fiecare nivel de executie. Intrarile au urmatorul format:
eticheta : lista_stari : actiune : proces
unde :
--eticheta este o eticheta unica ce identifica fiecare intrare. Lungimea
maxima a cesteia este de 4 caractere ;
--lista_stari este lista nivelurilor la care se aplica intrarea. Daca este
vida, intrarea se aplica la toate nivelurile de executie ;
--actiunea indica modul in care init trateaza procesul executat de intrare.
< wait : porneste procesul si asteapta sa se incheie ininte de a trece
la urmatoarea intrare ;
< respawn : porneste procesul si il reporneste daca acesta se
incheie (utilizata in general pentru procesele de tip getty, care
controleaza terminalele conectate la sistem);
< once porneste procesul doar daca acesta nu ruleaza deja. Nu
asteapta incheierea lui;
boot : executa intrarea doar la pornire. Porneste procesul, der nu
asteapta incheierea lui ;
bootwait : executa intrarea doar la pornire. Porneste procesul si asteapta incheierea lui ;
initdefault : stabileste nivelul de executie implicit. In mod normal are valoarea 3 ;
off :daca procesul ruleaza il opreste ;
ondemand : un proces marcat cu un nivel de tip ondemand va fi executat atunci cind respectivul nivel este apelat. Nivelurile de tip ondemand pot fi a,b sau c. Nu va avea loc totusi nici o schimbare de nivel de executie ;
powerwait : procesul va fi executat atunci cind tensiunea de alimentare s-a intrerupt ; init este informat de obicei despre acest eveniment atunci cind un proces comunica cu o sursa neintreruptibila (UPS) conectata la calculator ; init va astepta ca procesul sa se incheie inainte de a continua ;
powerfail la fel ca powerwait, dar nu asteapta incheierea procesului;
powerokwait : procesul va fi executat atunci cind init este informat ca tensiunea de alimentare a fost restabilita;
powerfailnow : procesul va fi executat atunci cind bateria UPS-ului este aproape descarcata si tensiunea de alimentare va fi oprita definitiv in cel mai scurt timp ;
ctraltdel :procesul va fi executat cind init primeste semnalul SIGINT (de obicei atunci cind la consola s-a apasat Ctr+Alt+Del) ;
--proces reprezinta programul care va fi executat.
Pot fi utilizate si comentarii, care incep cu caracterul #, ca de altfel in majoritatea fisierelor de configurare ale sistemului UNIX.
Iata un fisier /etc/inittab implicit de pe un sistem Red Hat :
#
# Acest fisier descrie modul in care procesul init seteaza sistemul
# In fiecare nivel de executie
#
# Nivelul implicit de executie. Nivelurile utlizate de Linux sunt :
# 0 - oprire (a nu se seta initdefault pe aceasta valoare !)
# 1 - mod single user
# 2 - multi-utilizator, fara NFS
# 3 - multi-utilizator
# 4 - nefolosit
# 5 - xll
# 6 -- repornire ( a nu se seta initdefault pe aceasta valoare !)
#
id : 3 : initdefault :
# Initializarea sistemului
si ::sysinit:/etc/rc.d/rc.sysinit
10 :0 :wait:/etc/rc.d/rc 0
11 :1 :wait:/etc/rc.d/rc 1
12 :2 :wait:/etc/rc.d/rc 2
13 :3 :wait:/etc/rc.d/rc 3
14 :4 :wait:/etc/rc.d/rc 4
15 :5 :wait:/etc/rc.d/rc 5
16 :6 :wait:/etc/rc.d/rc 6
# Procesele executate in fiecare nivel de executie
ud ::once/sbin/update
# Captureaza CTR-ALT-DEL
ca::ctraltdel:/sbin/shutdown -t3 -r now
# Cind sursa neintreruptibila ne transmite ca s-a oprit tensiunea de
# alimentare, presupunem ca mai avem la dipozitie doar citeva minute.
# Programeaza oprirea sistemului peate doua minute.
pf :: powerfail:/sbin/shutdown -f -h +2 "Power Failure ; System Shutting
Down
# Daca tensiunea de alimentare a fost restabilita inainte de oprire, anuleaza
# operatiunea de oprire
pr: 12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown
Cancelled"
# Executa getty in nivelurile de executie standard
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
# Executa xdm in nivelul 5
x:5:respawn:/etc/x11/prefdm -nodaemon
Fisierele de initializare rc
Atunci cind nivelul de executie se schimba, init apeleaza scriptul /etc/rc.d/rc. Acesta executa toate scripturile aflate in directorul /etc/rc.d/rcn.d, unde n este
numarul nivelului.
Continutul unui director /etc/rc.d/rc3.d este redat mai jos :
# ls -C /etc/rc.d/rc3.d
K12mysqld S12syslog S50xinetd S80sendmail S90crond
K74ntpd S13portmap S56rawdevices S85gpm S90xfs
K95kudzu S20random S60lpd S85httpd S99local
S10network S25netfs S75keytable S85postgresql
Dupa cum se observa, toate fisierele incep cu un caracter initial (S de la start sau K de la Kill), urmate de un numaar format din doua cifre, sfirsindu-se cu denumirea serviciului. Sunt executate mai intii scripturile incepind cu K, urmate de scripturile S, in ordine alfabetica. Astfel, in directorul exemplu, scripturile vor fi executate in ordinea : K12mysqld, K74ntpd, K95kudzu, S10network s.a.m.d.
Scripturile incepind cu K sunt utilizate in general pentru a incheia procese, iar scripturile incepind cu S sunt utilizate pentru a porni procese.
Scripturile din directoarele rc d sunt de obicei legaturi la scripturile aflate in directorul /etc/rc.d/init.d. Spre exemplu, fisierul S30tcp din directorul rc3.d este o legatura la fisierul /init.d/tcp. Atunci cand un script K este executat, acesta primeste parametrul stop, iar scriptul S primeste parametrul start.
3.3.Schimbarea nivelului de executie
s,S: trece in mod single-user
u,U: reexecuta init
Oprirea sistemului
Oprirea sistemului poate fi necesara in cazul operatiunilor de intretinere periodica (cum ar fi curatarea ventilatoarelor), schimbarilor sau adaugirilor de echipamente hardware, sau altor operatiuni administrative.
Pentru inchiderea sistemului se utilizeaza comanda shutdown, care efectueaza urmatoarele operatiuni:
atentioneaza utilizatorii ca sistemul urmeaza sa fie oprit dupa un anumit timp;
sunt blocate intrarile utilizatorilor in sistem;
trece sistemul in nivelul de executie 0, daca sistemul va fi oprit, sau 6, daca sistemul va fi repornit;
este trimis semnalul SIGTERM tuturor proceselor din sistem, oferindu-se timp pentru a-si incheia corect executia;
este trimis semnalul SIGKILL proceselor care nu s-au incheiat;
toti utilizatorii din sistem sunt scosi din sistem;
sunt demontate toate sistemele de fisiere montate;
masina este oprita sau repornita.
Programul shutdown are urmaatoarea sintaxa :
shutdown [ -t sec ] [ optiuni ] timp [ mesaj ]
unde optiuni pot fi :
- t sec asteapta sec secunde intre trimiterea catre procese a semnalului
SIGTERM si a semnalului SIGKILL;
- k nu realizeaza oprirea sistemului, ci doar trimite mesajul de
atentionare tuturor utilizatorilor;
-r reporneste masina;
-h opreste masina;
-f nu efectueaza fsck dupa repornire (pentru a grabi procedura de
pornire). In acest scop va fi creat fisierul /fastboot;
-F forteaza apelarea fsck dupa repornire. In acest scop va fi
creat fisierul /forcefsck;
-c anuleaza un apel shutdown in curs;
timp reprezinta timpul la care va fi inceputa procedura de oprire. Poate fi
ori in formatul hh:mm (momentul absolut in ore, respectiv minute la
care va fi oprit sistemul), ori in formatul +m, unde m este numarul de
minute dupa care va fi oprit sistemul.Cuvintul-cheie now este
sinonim cu +0. Daca oprirea nu se face imediat, va fi creat fisierul
/etc/nologin, care va determina programul login sa nu mai permita
intrarea utilizatorilor pe masina;
mesaj reprezinta mesajul de atentionare ca va fi trimis utilizatorilor.
Spre exemplu, comanda shutdown +10 -h "Masina va fi oprita peste 10 minute pentru adaugarea unui hard-disk" programeaza o oprire a sistemului dupa 10 minute, trimitand un mesaj explicativ utilizatorilor intrati pe masina in acest moment.
Oprirea sistemului se poate face si cu ajutorul comenzilor halt si poweroff, aceasta din urma trimitand dupa oprire comanda de inchidere a calculatorului.
Repornirea sistemului se poate face prin comanda reboot sau apasand la consola combinatia Ctrl+Alt+Del.
Intrarea si iesirea din sistem
Pentru a fi permis accesul la sistam, utilizatorul trebuie sa furnizeze numele sau si parola. Intrarea la prima consola (ce este afisata implicit la pornirea sistemului) va fi de felul :
Red Hat Linux release 7.2 (Enigma)
zeus login : root
Password
Dupa introducerea parolei (care nu va fi afisata pe ecran), va fi pornita executia interpretorului de comenzi
Iesirea din sistem se face cu comanda exit sau logout. Poate fi folosita si combinatia de taste Ctrl+D, care genereaza in Linux codul sfirsit de fisier.
Utilizatorul poate deschide mai multe console (8 console), folosind combinatiile ALT +F1 pana la ALT +F8. Tot aceste combinatii va permit sa treceti dintr-o consola in alta.
4. Intrarea si iesirea din sistem
Pentru a fi permis accesul la sistam, utilizatorul trebuie sa furnizeze numele sau si parola. Intrarea la consola va fi de felul :
Red Hat Linux release 7.2 (Enigma)
zeus login : root
Password
Dupa introducerea parolei (care nu va fi afisata pe ecran), va fi pornita executia interpretorului de comenzi (vezi infra).
Iesirea din sistem se face cu comanda exit sau logout. Poate fi folosita si combinatia de taste Ctrl+D, care genereaza in Linux codul sfirsit de fisier.
4.1. Interpretorul de comenzi
Un interpretor de comenzi sau shell reprezinta o interfata intre utilizator si un set de comenzi si programe, constituind un macroprocesor capabil sa execute comenzi.Shell-ul poate fi considerat si implementarea unui limbaj de programare complex, de nivel inalt.
Interpretorul de comenzi cel ma utilizat in Linux, de altfel si implicit, este bash (Bourne-Again Shell, dupa Steve Bourne, autorul interpretorului sh pentru UNIX).
Interpretorul de comenzi este apelat de cele mai multe ori interactiv, in sensul ca va dialoga cu utilizatorul, interpretind si executind comenzile introduse de acesta. Comenzile sunt fie interne (builtin, adica sunt implementate in cadrul shell-ului ), fie externe (acestea se gasesc pe disc, ca fisiere executabile). Pentru a se indica utilizatoruli ca shell-ul este gata sa execute urmatoarea comanda, se va afisa un prompt. Promter-ul difera de la o versiune de sistem la alta sau de la un utilizator la altul, putind fi configurat dupa dorinta.
Programele realizate in limbajul oferit de shell se numesc scripturi. Acestea nu sunt executate in mod interactiv.
In cele ce urmeaza vom prezenta o serie de caracteristici importante ale shell-ului bash.
Specificatori
Shell-ul bash permite utilizarea specificatorilor de fisiere. Astfel, la specificarea numelui unui fisier pot fi utilizate urmatoarele meta-expresii (wildcards) pentru a inlocui o parte din numele acestuia:
-expresia " " inlocuieste un singur caracter;
-expresia " inlocuieste unul sau mai multe caractere;
-expresia [ expresie ] defineste un interval.
Spre exemplu, specificatorul de fisier oferta [1-65] * va desemna nume de fisiere care incep cu oferta, urmat de un numar aflat in intervalul 1-65, putind fiind succedat de oricare alte caractere.
Intre delimitatorii "[" si "]" poate fi utilizat si meta caracterul "|", c semnificatia operatiunii logice SAU, precum si "!", reprezentind operatiunea de negatie. Spre exemplu, specificatorul doc[!a]* specifica numele de fisiere care incep cu doc, urmat de orice caracter diferit de "i", apoi de alte caractere.
Redirectionarea intrarilor si iesirilor
In sistemul de operare UNIX exista trei dispozitive logice de intrare/iesire:
-intrarea standard (stdin), de la care se citesc datele de intrare;
-iesirea standard (stdout), unde se afiseaza datele de iesire;
-iesirea de eroare standard (stderr), unde se afiseaza mesajele de eroare.
Implicit, intrarea standard are asociata tastatura, iar iesirea si iesirea de eroare standard au asociate terminalul curent. Exista posibilitatea redirectionarii acestor dispozitive, dupa cum urmeaza :
redirectionarea intrarii se realizeaza prin intermediul operatorului de redirectionare "<";
redirectionarea iesirii se poate face cu ajutorul operatorului ,,>". De exemplu, comanda ls -la >lista va trimite iesirea comenzii catre fisierul lista. Poate fi utilizat si operatorul ,,>>", care, spre deosebire de operatorul ,,>", nu suprascrie fisierul spre care se face redirectionarea, ci adauga iesirea la sfirsitul acestuia (bineinteles, in cazul in care fisierul exista);
redirectionarea iesirii de eroare se realizeaza prin ,,2>", cifra 2 reprezentind numarul descriptorului de fisier corespunzator iesirii standard.
Comenzi
Sintaxa pentru executia comenzilor, fie ele interne sau externe, este :
comanda [ optiuni ] [ parametri ]
Separatorii pentru comanda, optiuni si parametri sunt spatiu sau tab. Caracterul ,," la sfirsitul liniei semnifica ca aceasta continua pe linia urmatoare. Pot fi introduse mai multe comenzi intr-o singura linie de comanda, separate prin caracterul ,,;".
O comanda poate fi executata in fundal (background) daca la apelarea sa se adauga caracterul ,,&".
iesirea standard catre intrarea standard a celei de-a doua comenzi s.a.m.d. Sintaxa acestui mecanism este urmatoarea :
comanda1 | comanda2 .
De exemplu, comanda ps aux | wc -1 va afisa numarul de procese care ruleaza pe masina (iesirea comenzii ps aux, adica lista de procese, este trimisa ca intrare comenzii wc -1, care contorizeaza numarul de linii dintr-un text).
In bash, variabilele sunt de tip sir de caractere, ele fiind create la momentul definirii lor. Stabilirea valorii acestora se face prin comanda set variabila=valoare. Eliminarea din memorie a unei variabile se face cu ajutorul comenzii unset variabila.
In mod normal, variabilele definite nu sunt vizibile si in procesele-copil ale shell-ului curent. Pentru ca o variabila sa fie vizibila si in cadrul acestor procese, aceasta trebuie exportata cu ajutorul comenzii export variabila [= valoare ].
La variabile se face referire prin prefixarea caracterului ,, " la numele acestora ( e.g. $HOME).
Exista o serie de variabile predefinite, cele mai importante fiind uematoarele:
HOME calea absoluta a directorului home al utilizatorului curent
(e.g./home/dragos). Pentru a substitui acest director poate fi
folosit si caracterul ,,~"
USER numele utilizatorului curent
HOSTNAME numele masinii
HOSTTYPE arhitectura masinii (e.g. i386)
OSTYPE tipul sistemului de operare (Linux)
MACHTYPE tipul sistemului in formatul procesor-producator-so (e.g.
i386-redhat-linux-gnu)
MAIL numele fisierului in care sunt stocate mesajele de e-mail
primite
MAILCHECK intervalul de timp la care shell-ul verifica daca s-au primit
noi mesaje e-mail, exprimat in secunde
PS1 promptul principal al shell-ului
PS2 promptul secundar al shell-ului (care apare atunci cind o
comanda este scrisa pe mai multe randuri)
TERM tipul terminalului (e.g. linux, vt100 etc.)
PATH lista de directoare pentru cautarea fisierelor executabile
PWD directorul curent
EUID ID-ul efectiv al utilizatorului curent
help [ comanda ]
mentionata, va fi afisata lista tuturor comenzilor interne ale bash-ului.
man [ sectiune ] comanda
Afiseaza pagina de manual cu informatii despre comanda specificata
(sintaxa, descriere, explicarea optiunilor suportate, semnificatia
parametrilor, comenzi inrudite etc.). Parametrul comanda poate fi o
comanda, un nume de apel de sistem, o functie de biblioteca C/C++ sau
numele unui fisier de configurare. Manualele sunt organizate pe
sectiuni, astfel :
1 - programe
2 - functii sistem
3 - functii de biblioteca
4 - functii ale nucleului Linux
5 - fisiere de configurare
6 - diverse programe
7 - protocoale si standarde
8 - programe sistem
l - sistemul PostgreSQL
n - sistemul Tcl/Tk.
whatis comanda
ls [ optiuni ] [ director ]
Afiseaza continutul unui director. Citeva dintre comenzile mai importante sunt :
-a afiseaza si fisierele ,,ascunse" (care incep cu ,, .")
-l afiseaza informatii extinse, cum aar fi proprietarul fisierelor,
drepturile de acces, dimensiunea etc.
-df afiseaza informatii despre spatiul ocupat si cel liber al
partitiilor montate.
file fisier
Determina si afiseaza tipul fisierului specificat.
cp sursa destinatie
Copiaza fisierul-sursa in destinatie.
mv original nou
Redenumeste original in nou.
ln sursa legatura_simbolica
Creeaza o legatura simbolica la fisierul-sursa.
rm fisier
Sterge fisierul specificat.
Aceste patru comenzi de lucru cu fisierele accepta mai multe optiuni, dintre care
cele mai importante sunt :
-f forteaza indeplinirea actiunii, fara confirmare din parte utilizatorului;
-R executa comanda recursiv, adica asupra tuturor directoarelor si
subdirectoarelor componente.
cat lista_fisiere
Afiseaza continutul fisierelor specificate.
more fisier
Afiseaza paginat continutul fisierului specificat.
less fisier
Afiseaza paginat continutul fisierului specificat, prmitind navigarea in
ambele sensuri.
Pentru editarea de texte se poate folosi unul dintre editoarele vi, emacs, joe, ed, pico etc. Pentru gestionarea fisierelor, directoarelor etc. se poate folosi utilitarul mc.
Mai multe informatii despre utilizarea bash pot fi obtinute apeland comanda help sau prin comanda man bash.
Accesul privilegiat al utilizatorilor in sistem
Dupa cum am vazut, la fiecare intrare in sistem utilizatorii trebuie sa introduca parola. Acest fapt poate fi incomod atunci cind se copiaza fisiere, de exemplu cu scp. Exista doua modalitati de acordare a accesului privilegiat al unui utilizator la masina, fara a mai introduce parola : acces la nivel de masina sau acces la nivel de utilizator.
In fisierul /etc/hosts.equiv se poate specifica o lista de masini (cite o masina pe linie) carora sa le fie acordata incredere. Atunci cand un utilizator incearca sa intre pe masina, va fi verificat mai intii acest fisier. Daca masina de pe care utilizatorul efectueaza cererea de acces se gaseste in lista si numele utilizatorului este acelasi ca si pe cealalta masina, accesul este permis fara solicitarea parolei. De mentionat ca accesul utilizatorului root in acest mod nu este permis.
Nu este indicata utilizarea acestui mod de acces privilegiat. De asemenea, acest fisier nu trebuie sa contina in nici un caz o linie continind doar caracteru ,,+", acesta acordand accesul privilegiat oricarui calculator.
Acest tip de acces privilegiat utilizeaza fisierul .rhosts, localizat in directorul home al utilizatorului care doreste acordarea accesului. Acest fisier are formatul :
nume_masina [ utilizator
O linie specifica faptul ca utilizator are dreptul sa intre in sistem de pe masina specificata. Daca utilizator nu este prezent, se va permite accesul doar utilizatorului cu acelasi nume cu cel de pe masina-gazda.
De exemplu, fisierul umator .rhosts, plasat in directorul home al utilizatorului sabin, va permite accesarea acestuia de catre utilizatorul dragos de pe masinile hercules si test :
hercules dragos
test dragos
Accesul privilegiat nu trebuie utilizat niciodata pentru root, pentru care trebuie intotdeauna solicitata parola. In directorul utilizatorului root nu trbuie sa existe fisierul .rhosts! Nu eata indicata nici utilizarea acestui mod de acces
privilegiat, fiindca expune sistemul la riscuri suplimentare.
Accesul utilizatorului root in sistem
Accesul utilizatorului root in sistem este permis numai de pe console specificate in fisierul /etc/securetty. Nu este recomandata permiterea accesului cu root decit de pe consolele sistemului (tty*). Accesul de la distanta (cu telnet sau ssh)poate fi facut cu un utilizator obisnuit, iar apoi utilizata comanda su pentru a deveni root :
su [ nume_utilizator ] [ optiuni ]
unde optiuni pot fi :
ruleaza ca shell de login
c comanda-executa comanda
Daca nume_utilizator nu este specificat, este considerat root.
Accesul de la distanta este recomandat sa fie facut prin intermediul serviciului ssh. Acesta cripteaza datele trimise prin retea, spre deosebire de serviciul clasic telnet.
Daca este prezent fisierul /etc/nologin, programul login nu va permite accesul utilizatorilor in sistem.
5. Configurarea serviciilor sistemului
Se recomanda ca masina sa nu ruleze decit serviciile utilizate curent, in primul rind pentru a creste securitatea sistemului, iar in al doilea rind pentru a nu creste inutil nivelul de incarcare al masinii ( spatiu de memorie si timp procesor).
Exista trei programe cu ajutorul carora pot fi activate/dezactivate serviciile pe care le ofera sistemul :
serviceconf - un mediu grafic care permite configurarea nivelurilor de executie pe care sa ruleze fiecare serviciu; permite si pornirea/oprirea anumitor servicii. Poate fi apelat si din meniul System :: Service Configuration in Red Hat, respectiv Configuration :: Boot and Init :: SysV-Init Editor in Mandrake;
ntsysv - un program in mod text care permite configurarea doar a nivelurilor de executie pa care sa ruleze fiecare serviciu;
chkconfig - un utilitar la linia de comanda cu aceleasi facilitpti ca ntsysv.
5.1. Folosirea utilitarului chkconfig
Comanda chkconfig -list listeaza toate seviciile existente in sistem si starea acestora (daca sunt activate sau nu).
Sintaxa comenzii chkconfig este urmatoarea :
chkconfig [ --list ] [ --add ] [ --del ] [ --level lista_niveluri ] nume_serviciu
[ actiune ]
unde :
lista_niveluri reprezinta lista de niveluri de executie in care se doreste
activarea/dezactivarea serviciului ;
actiune poate fi On sau Off, pentru activarea/dezactivarea serviciului.
Optiunile pot fi :
--list afiseaza toate serviciile inregistrate, precum si setarile pentru
fiecare nivel de executie in parte. Daca nume_serviciu este
specificat, sunt afisate informatii referitoare la serviciul
specificat ;
--add adauga serviciul specificat in lista de servicii inregistrate ;
--del sterge serviciul specificat in lista de servicii inregistrate ;
De exemplu, comanda chkconfig --level 345 postgresql on seteaza serviciul postgresql sa porneasca atunci cind nivelul de execusie devine 3,4 sau 5. Comanda chkconfig postgresql off dezactiveaza pornirea serviciului.
5.2. Pornirea, repornirea si oprirea serviciilor
Operatiile de pornire, repornire, oprire sau verificare a unui serviciu pot fi relizate apleind scriptul respectiv, si anume /etc/rc.d/init.d/nume_serviciu sau /etc/init.d/nume_serviciu, trimitand ca parametru :
start - pentru a porni serviciul;
stop - pentru a opri serviciul;
restart - pentru a reporni serviciul;
status - pentru a verifica daca serviciul este activ.
Spre exemplu, comanda :
/etc/rc.d/init.d/syslog restart
va reporni serviciul syslog.
De asemenea poate fi utilizata si comanda :
service nume_serviciu actiune
unde actiunea poate lua una dintre valorile descrise mai sus.
Astfel, comanda service postgresql status va afisa starea serviciului postgresql
( daca este sau nu activ).
5.3. Daemonul xinetd
Daemonul xinetd are rolul de a superviza activitatea altor servicii, oferind posibilitatea controlului accesului, jurnalizarea accesarilor si controlul resurselor. O serie de servicii sunt gestionate de catre xinetd : FTP, IMAP, POP, telnet etc. Daemonul xinetd gestioneaza cererile, verifica daca programului-client i se permite accesul, dupa care porneste respectivul serviciu.
Acest daemon se configureza prin intermediul fisierului /etc/xinetd.conf si fisierelor proprii fiecarui serviciu, aflate in directorul /etc/xinetd.d. Aceste fisiere de configurare sunt in mod normal gestionate de catre utilitarul chkconfig sau alte programe pentru gestiunea sistemului. Un fisier de configurare pentru serviciul telnet este prezentat in continuare :
service telnet
Pentru controlul accesului sunt posibile urmatoarele optiuni :
only_from accepta numai cererile de pe masinile specificate. Acestea pot
fi adrese IP, nume de masina sau adrese de retea ;
no_access refuza cererile de pe masinile specificate ;
access_times specifica intervalul de timp in care poate fi utilizat serviciul.
Intervalul de timp trebuie sa aiba formatul hh:ss-hh:ss.
Configurarea optiunilor de retea
bind accepta conexiuni doar prin interfata de retea avand adresa IP
specificata
redirect redirectioneaza cererile catre sistem avand adresa IP, respectiv
portul specificate.
Mai multe informatii privind xinetd, precum si configurarea acestuia pot fi obtinute din pagina de manual man xinetd, respectiv man xinetd.conf.
6. Gestiunea resurselor sistemului
6.1.Gestiunea memoriei virtuale
Resursele de memorie au cel putin la fel de mare efect asupra performantei sistemului ca si viteza procesorului.pentru a se comporta performant, sistemul trebuie sa aiba destula memorie fizica pentru a rula nu doar procese mari consumatoare de memorie, ci si operatiunile uzuale.pentru o corecta dimensionare a memoriei, trebuie luate in considerare atat eventualele procese mari consumatoare de memorie ,cat si multimea proceselor executate in mod normal.Memoria virtuala este utilizata atunci cand necesarul total de memorie depaseste dimensiunea memoriei fizice instalate in sistem.In mod uzual, pe sistemele UNIX/Linux este utilizata o partitie separata numita partitie de swap, dar poate fi utilizat si un fisier obisnuit .Utilizarea acestei memorii virtuale duce evident la degradarea performantei sistemului..
Partitia de swap trebuie sa fie de cel putin 32 MB si cel mult 2 GB,valoarea ideala fiind aceea a memoriei RAM existente in sistem, pentru un sistem folosit ca statie de lucru ,si dubluil memoriei fizice pentru un server.
Crearea si activarea partitiei de swap
Crearea unei partitii de swap se face utilizand comanda :
mkswap nume_partitie
Dupa crearea partitiei , aceasta trebuie activata cu comanda :
swapon nume_partitie
Spre exemplu,comanda mkswap /dev/sda2; swapon/dev/sda2 va pregati partitia /dev/sda2 pentru utilizare ca memorie virtuala .Dimensiunea memoriei virtuale va fi determinata de dimensiunea partitiei /dev/sda2.
Verificarea resurselor de memorie utilizate de catre sistem se poate face prin comanda free , care afiseaza cantitatea de memorie fizica si virtuala din sistem, precum si cantitatea utilizata curent:
total used free shared buffers cached
Mem: 255652 247744 7908 0 840 132316
+/- buffers/cache: 114588 141064
Swap: 136544 60828 75716
Verificarea resurselor IPC(zone de memorie comuna, semafoare, cozi de mesaje) alocate in sistem se face cu ajutorul comenzii ipcs:
------------Shared Memory Segments----- ----- -----------------
key shmid owner perms bytes nattch status
0x0052e2ca 0 postgres 700 144 55
0x0052e2c1 32769 postgres 600 12470272 55
0x0052e2c7 65538 postgres 600 67596 55
0x00000000 98307 root 600 1056768 6 dest
0x00000000 2457604 root 600 33554432 6 dest
0x00000000 196613 apache 600 46084 6 dest
------------Semaphore Arrays----- ----- -----------------
key semid owner perms nsems status
0x0052e2ce 0 postgres 600 16
0x0052e2cf 32769 postgres 600 16
0x0052e2d0 65538 postgres 600 16
0x0052e2d1 98307 postgres 600 16
0x0052e2d2 131076 postgres 600 16
0x0052e2d3 163845 postgres 600 16
0x0052e2d4 196614 postgres 600 16
0x0052e2d5 229383 postgres 600 16
----- ----- -----Message Queues----- ----- --------- ----- ------
key msqid owner perms used-bytes messages
Eliberarea unei resurse IPC(Inter-Process Comunication )se poate face cu ajutorul comenzii ipcrm:
ipcrm[ shm | msg | sem ] id
Spre exemplu, pentru situatia listata mai sus, comanda ipcrm shm 196613 va elimina zona de memorie comuna cu numarul de identificare 196613.
6.2. Gestiunea proceselor
Una dintre metodele de comunicare clasice UNIX cu procesele care ruleaza pe masina o constituie semnalele.Un semnal este o valoare numerica care poarta o anumita semnificatie .Trimiterea unui semnal catre un proces se face prin comanda kill -semnal nr_proces. Semnalele principale sunt :
Denumire semnal Nr semnal Descriere
-------- ----- ------ -------- ----- ------ -------- ----- ------
SIGHUP 1 hangup, semnalizeaza terminarea
executiei procesului- parinte.Este utilizat
de multi daemoni pentru a reciti fisierele
de configurare, etc.
SIGQUIT 2 intreruperea procesului(de la tastatura).
SIGINT 3 incetarea executiei procesului(de la tasta
tura , simuland combinatia Ctrl+C)
SIGILL 4 programul a efectuat o operatie invalida
SIGKILL 9 oprirea procesului
SIGSEGV 11 referinta invalida
SIGPIPE 13 pipe intrerupt
SIGTERM 15 terminarea procesului
SIGUSR1 16 semnal definit de utilizator
SIGUSR2 17 semnal definit de utilizator
SIGCHLD 18 procesul-copil si-a incheiat executia
SIGSTOP 23 opreste temporar executia procesului
SIGCONT 25 continua executia procesului dupa ce
acesta a fost oprit temporar
Lista completa de semnale se gaseste in man 7 signal.
Spre exemplu, comanda kill -9 3419 va trimite semnalul SIGKILL procesului 3419, ceea ce va provoca incetarea executiei acestuia.
Pentru afisarea proceselor care sunt in executie in mod curent pe sistem , se utilizeaza comanda ps, cu urmatoarele optiuni mai importante :
-a:afiseaza lista tuturor proceselor, chiar daca acestea nu apartin utilizatorului curent
-x : afiseaza si procesele care nu au un terminal asociat
u : realizeza afisarea intr-un format extins, incluzand numele utilizatorului caruia ii apartine procesul
w : afiseaza informatiile chiar daca depasesc lungimea liniei.
Comanda ps (fara parametri ) va afisa lista proceselor curente ale utilizatorului , iar ps aux toate procesele care sunt in executie pe calculator . De asemenea, comanda ps -ef , va afisa toate procesele cu toate informatiile disponibile.
Informatii suplimentare privind parametrii comenzii ps se gasesc in pagina de manual man ps.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1941
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved