curs linux cma

118
1 Introducere & Instalare » 1.1 Istorie Unix/Linux Istorie Unix/Linux Anii 60 Bell Laboratories (divizie de cercetare a AT&T) formeaza un consortiu impreuna cu MIT (Massachusetts Institute of Technology) si General Electric pentru a dezvolta un sistem de operare interactiv, multiuser si multi-tasking numit Multics (Multiplexed Information and Computing Service) care sa ruleze pe Mainframe-uri GE-645. Proiectul nu a avut succesul scontat, iar Bell Labs se retrage. Un programator pe nume Ken Thompson nu renunta si continua dezvoltarea proiectului impreuna cu un alt programator pe nume Dennies Ritchie. 1970 Noul proiect este numit Unics (Uniplexed Information and Computing Service). Numele este atribuit de Brian Kernighan, iar mai tarziu este schimbat in UNIX. Sistemul de operare este scris in limbaj de asamblare. 1973 Unix este rescris in C pentru a putea fi portabil (sa ruleze si pe alte masini). Acest lucru a dus la o dezvoltare accelerata. AT&T distribuie noul sistem universitatilor, marilor firme dar si guvernului USA. 1973-1979 Unix-ul este in continuare dezvoltat in cadrul Universitatii Berkeley din California. Printre imbunatatiri sunt shell-ul C, editorul VI precum si alte utilitare necesare. Tot aici este adaugat suportul pentru lucrul in retea. 1980-1983 AT&T lanseaza prima versiune comerciala de UNIX fara a introduce modificarile aduse de Berkeley. 1982 Un programator din cadrul proiectului BSD (Berkeley Software Distribution - Berkeley Unix) impreuna cu cativa colegi de la Stanford University creaza firma SUN - Stanford University Network. Prima lansare de Unix are loc in 1983 si se numeste SunOS. Printre altele sunt introduse NFS (Network File System) care devine un standard. 1984 Richard Matthew Stallman (nickname RMS) paraseste MIT (care crea doar software proprietar) pentru a crea un sistem de operare complet FREE (Free as in Freedom) - FREE (Free as in Freedom). Noul proiect poarta numele de GNU (GNU's not UNIX). Primul program creat a fost editorul emacs. In 1985 RMS creaza fundatia FSF - Free Software Foundation. Scopul acesteia este ca software-ul sa fie free in sensul de liber si oricine sa poata avea acces liber si fara restrictii la sursa. Acest tip de licenta se numeste GPL - General Public License. 1988 SunOS/BSD, AT&T System V Release 3 si Xenix ( Microsoft version of Unix pentru PC cu procesoare Intel cumparat de la AT&T in 1979) au fost combinate in System V Release 4 (SVR4). Nota Xenix a fost versiunea Microsoft de Unix pentru PC cu procesoare Intel cumparata de la

Upload: catalynus

Post on 18-Feb-2015

133 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Curs Linux Cma

1 Introducere & Instalare » 1.1 Istorie Unix/Linux

Istorie Unix/Linux

Anii 60

Bell Laboratories (divizie de cercetare a AT&T) formeaza un consortiu impreuna cu MIT

(Massachusetts Institute of Technology) si General Electric pentru a dezvolta un sistem de

operare interactiv, multiuser si multi-tasking numit Multics (Multiplexed Information and

Computing Service) care sa ruleze pe Mainframe-uri GE-645. Proiectul nu a avut succesul

scontat, iar Bell Labs se retrage. Un programator pe nume Ken Thompson nu renunta si continua

dezvoltarea proiectului impreuna cu un alt programator pe nume Dennies Ritchie.

1970

Noul proiect este numit Unics (Uniplexed Information and Computing Service). Numele este

atribuit de Brian Kernighan, iar mai tarziu este schimbat in UNIX. Sistemul de operare este scris

in limbaj de asamblare.

1973

Unix este rescris in C pentru a putea fi portabil (sa ruleze si pe alte masini). Acest lucru a dus la

o dezvoltare accelerata. AT&T distribuie noul sistem universitatilor, marilor firme dar si

guvernului USA.

1973-1979

Unix-ul este in continuare dezvoltat in cadrul Universitatii Berkeley din California. Printre

imbunatatiri sunt shell-ul C, editorul VI precum si alte utilitare necesare. Tot aici este adaugat

suportul pentru lucrul in retea.

1980-1983

AT&T lanseaza prima versiune comerciala de UNIX fara a introduce modificarile aduse de

Berkeley.

1982

Un programator din cadrul proiectului BSD (Berkeley Software Distribution - Berkeley Unix)

impreuna cu cativa colegi de la Stanford University creaza firma SUN - Stanford University

Network. Prima lansare de Unix are loc in 1983 si se numeste SunOS. Printre altele sunt

introduse NFS (Network File System) care devine un standard.

1984

Richard Matthew Stallman (nickname RMS) paraseste MIT (care crea doar software proprietar)

pentru a crea un sistem de operare complet FREE (Free as in Freedom) - FREE (Free as in

Freedom). Noul proiect poarta numele de GNU (GNU's not UNIX). Primul program creat a fost

editorul emacs. In 1985 RMS creaza fundatia FSF - Free Software Foundation. Scopul acesteia

este ca software-ul sa fie free in sensul de liber si oricine sa poata avea acces liber si fara

restrictii la sursa. Acest tip de licenta se numeste GPL - General Public License.

1988

SunOS/BSD, AT&T System V Release 3 si Xenix ( Microsoft version of Unix pentru PC cu

procesoare Intel cumparat de la AT&T in 1979) au fost combinate in System V Release 4

(SVR4).

Nota

Xenix a fost versiunea Microsoft de Unix pentru PC cu procesoare Intel cumparata de la

Page 2: Curs Linux Cma

AT&T in 1979. Aceasta a fost ulterior vanduta firmei Santa Cruz Operation(SCO) si a

devenit SCO UNIX.

1990

GNU continea aproape toate componentele necesare unui nou sistem de operare, mai putin

kernel-ul.

1991

Profesorul olandez Andrew Tanenbaum scrie o carte intitulata "Operating System" in care

explica conceptul unui nou sistem de operare numit Minix. Un student finlandez pe nume Linus

Torvalds de la Universitatea din Helsinki scrie un Kernel pentru GNU care sa ruleze pe

calculatoarele AT-386 si 484, bazandu-se pe anumite concepte din cartea lui Tanenbaum.

Ulterior intre Linus Torvalds si Andrew Tanenbaum se isca un conflict bazat pe viziunea diferita

pe care acestia o aveau asupra noului Kernel. Detalii

Celebrul anunt al lui Linus Torwalds precum ca a dezvoltat un kernel a fost postat pe un

newsgroup comp.os.minix:

Nota

Hello everybody out there using minix - I'm doing a (free) operating system (just a hobby,

won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since

april, and is starting to get ready. I'd like any feedback on things people like/dislike in

minix, as my OS resembles it somewhat (same physical layout of the file-system (due to

practical reasons) among other things). I've currently ported bash(1.08) and gcc(1.40), and

things seem to work. This implies that I'll get something practical within a few months, and

I'd like to know what features most people would want. Any suggestions are welcome, but I

won't promise I'll implement them :) Linus ([email protected]) PS. Yes - it's free

of any minix code, and it has a multi-threaded fs. It is NOT portable (uses 386 task

switching etc), and it probably never will support anything other than AT-harddisks, as

that's all I have:-(.

Sistemul de operare creat astfel prin folosirea kernelului lui Linus Torvalds si a programelor si

utilitarelor GNU poarta numele de GNU/Linux.

Nota

Numele complet si corect al sistemului de operare nu este Linux ci GNU/Linux. Detalii

GNU/Linux este un sistem de operare multiuser si multitasking care ruleaza pe procesoare 32 si

64 biti pe aproape toate platformele hardware existente. Este format din kernelul lui Linus

Torvalds si programele de la GNU. Intre Linux si Unix exista o mare diferenta. Unix-ul este un

sistem de operare proprietar cu sursa inchisa, iar GNU/Linux este un sistem de operare FREE cu

sursa deshisa care la inceput a incercat sa imite sistemul Unix original.

Marile firme private si-au dezvoltat propriile sisteme de operare Unix astfel:

- HP-UX - Unix-ul celor de la Hewlett-Packard (SVR4). Versiunea actuala este 11.i

- AIX - Unix-ul celor de la IBM bazat pe SVR4

- BSD - Unix-ul celor de la universitatea din California. In prezent exista FreeBSD, OpenBSD,

NetBSD

Prima distributie de Linux a fost Slackware lansata in 1993.

Ulterior au aparut multe alte distributii fiecare avand specificul sau:

Page 3: Curs Linux Cma

RHEL (RedHat Enterprise Linux - Sistem Comercial)

Fedora (varianta free de la RedHat)

SuSE (cumparat de Novell, Sistem Comercial)

Debian

Ubuntu

Gentoo

Mandriva

CentOS (bazat pe RHEL, necomercial)

Knoppix (prima distributie de Linux care ruleaza direct de pe CD - LiveCD)

Puppy

MEPIS

Nota

Sistemul de operare Android folosit pe Smartphone-uri si tablete este o versiune de Linux

aflata sub mentenanta Google. Detalii.

Exista in prezent mai multe sute de distributii de Linux. Detalii

Resurse

Linux - The Code

Unix

Linux

Richard Stallman

Linus Torvalds

Page 4: Curs Linux Cma

1 Introducere & Instalare » 1.2 Consideratii Hardware » 1.2.1 ACPI

ACPI

ACPI (Advanced Configuration and Power Interface) este un standard dezvoltat de un consortiu

format din HP, Intel, Microsoft, Phoenix si Toshiba in 1996. Ultima versiune dateaza din

Noiembrie 2011.

ACPI reprezinta un standard prin care OS are controlul asupra recunoasterii elementelor

hardware si power management.

Folosind aceasta interfata BIOS-ul furnizeaza OS toate mecanismele necesare pentru controlul

low-level al componentelor hardware.

OS poate determina ca sistemul sa consume putina energie in anumite perioade si multa energie

cand este cazul (ca si in cazul laptop-urilor).

Exista pe tastatura "power management keys" pentru oprirea sistemului, cresterea luminozitatii

monitorului etc.

Hardware-ul (placa de baza si chiar CPU) trebuie sa fie compatibil cu acest standard.

Un sistem compatibil ACPI poate sa se gaseasca in urmatoarele stari:

a) G0 - Working - starea normala de operare a unui calculator cand aplicatiile ruleaza, CPU

executa instructiuni etc

b) G1 - Sleeping - are 4 substari ( Standby, Hybernation etc)

c) G2 - Soft off - Aproximativ asemanator cu G3 (mechanical off) doar ca anumite componente

raman alimentate cu energie astfel incat diferite evenimente sa poate aduce statia in starea G0

(keyboard, LAN, USB). Din aceasta stare sistemul trebuie sa buteze pentru a intra in starea G0.

d) G3 - Mechanical Off - Nivelul de energie consumat este aproape zero.

Wake on LAN (WoL)

WoL este o tehnologie care permite pornirea unui calculator de la distanta prin trimiterea unui

frame Ethernet special. Placa de retea este alimentata continuu cu energie si asculta primirea

frame-ului special.

Supportul pentru Wake on Lan (WoL) este implementat pe placa de baza. NIC-ul (care inca

primeste energie) asculta dupa acel pachet special numit "Magic Packet". Daca acesta este valid

buteaza calculatorul.

Magic Packet: se trimite pe adresa de broadcast folosind UDP si portul 0 (la inceput), 7 sau 9

(mai recent).

Datele din MagicPacket: FFFFFFFFFFFF urmat de 16 repetitii ale MAC-ului targetului si

eventual o parola formata din 4 sau 6 bytes

In afara de hardware (placa de baza) compatibil exista si componenta software si anume

programul care genereaza si trimite target-ului magic packet. Exista mai multe astfel de aplicatii

atat pentru Windows cat si pentru Linux. Un exemplu de astfel de program este Depicus

Nota

Daca se doreste pornirea calculatorului dintr-o alta retea de exemplu Internet, Routerul

trebuie configurat pentru redirectarea pachetelor "Directed Broadcast"

Resurse

Linux ACPI ACPI Wake On Lan

Page 5: Curs Linux Cma

1 Introducere & Instalare » 1.2 Consideratii Hardware » 1.2.2 Hard Disks

Hard Disks

In prezent pentru PC-uri exista 2 standarde de conectare a hard disk-urilor la placa de baza:

SATA si PATA

ATA - Advanced Technology Attachment reprezinta o interfata prin care hard disk-urile,

CD/DVD se conecteaza la placa de baza. Odata cu introducerea SATA (Serial ATA) in 2003,

ATA a fost redenumita PATA (Parallel ATA).

Pe placa de baza a arhitecturii X86 exista 2 sloturi pentru conectarea hardiskurilor PATA. Pe

fiecare cablu paralel se pot conecta 2 hdd. Avem astfel in total maxim 4 hdd.

Ele sunt reprezentate in Linux astfel:

/dev/hda - primary master hard disk

/dev/hdb - primary slave hard disk

/dev/hdc - secondary master

/dev/hdd - secondary slave

Important

Fiecare Hard Disk poate contine partitii primare care pot fi maxim 4 si partitii logice care se

gasesc in cadrul unei partitii extinse.

A 4-a partitie primara este considerata partitia extinsa, este unica si va contine restul partitiilor

logice.

Nota

In cazul hard disk-urilor SATA sau SCSI acestea sunt reprezentate prin fisierele /dev/sda,

/dev/sdb, /dev/sdc si /dev/sdd. Notiunile de primary master, primary slave etc nu mai exista.

De asemenea ultimele versiuni de kernel folosesc o interfata standard de accesare atat pt.

PATA cat si pt. SATA si reprezinta inclusiv partitiile hard diskurilor PATA sub forma sda1,

sda2 etc.

USB stick-urile vor fi reprezentate de kernel tot sub forma sda.

Page 6: Curs Linux Cma

1 Introducere & Instalare » 1.2 Consideratii Hardware » 1.2.3 RAID

RAID

RAID (Redundant Array of Inexpensive/Independent Disks)

Definitie

RAID reprezinta o metoda prin care mai multe hard diskuri fizice se grupeaza intr-o singura

unitate logica.

Tehnologia RAID a fost definita prima data de catre un grup de cercetatori de la universitatea

Berkeley din California.

Exista 2 categorii de configuratii

1. Software RAID. Hard diskurile sunt combinate intr-o singura unitate logica de catre sistemul

de operare. OS vede fiecare disk si trebuie configurat sa le foloseasca ca un singur ansamblu.

2. Hardware RAID. Hard diskurile sunt combinate intr-o singura unitate logica de catre un

controller. OS (Operating System) vede ansamblul ca un singur hard disk. Nu este nevoie de

nicio configuratie la nivel de sistem de operare.

Hardware RAID ofera mai multa securitate si performanta a datelor dar este mult mai scump.

Nivele RAID

- RAID 0 (Data Striping without redundancy). Acest nivel este cel mai eficient ca si performanta

dar nu ofera protectia datelor. Se formeaza din minimum 2 hard disk-uri. Informatia este "sparta"

in fragmente si redistribuita pe mai multe diskuri din array (ansamblul de diskuri fizice care

pentru sistemul de operare reprezinta o singura unitate logica). Se poate scrie/citi in paralel. Daca

un singur disk se defecteaza intreg sistemul devine inutilizabil.

- RAID 1 (Disk Mirroring). Nr. minim de diskuri din array este 2. Datele sunt salvate pe fiecare

dintre cele 2 hard diskuri. Securitatea datelor este maxima iar performantele de citire/scriere sunt

mari. Singurul dezavantaj este ca acest nivel necesita de doua ori mai mult spatiu de stocare.

- RAID 2 - Nu se foloseste.

- RAID 3 si RAID 4 (Striped Set with dedicated parity) - minimum 3 discuri.

- RAID 5 (Striped Set with Distributed Parity). Nr. minim de diskuri este 3. O defectiune a unui

disk nu duce la distrugerea tuturor datelor. Datele aflate pe diskul defect pot fi recuperate de pe

celelalte diskuri.

- RAID 0/1, RAID 10 - reprezinta o combinatie intre RAID 0 si RAID 1. Nr. minim de discuri

este 4.

Pentru RAID 0 si RAID 1 avem nevoie de cel putin 2 partitii pe 2 hard diskuri diferite. RAID 5

necesita 3 partitii. Se recomanda folosirea partitiilor de aceeasi marime.

Nota

Exista si posibilitatea folosirii unui singur hard disk, doar ca beneficiile RAID dispar.

Resurse

RAID - Intro

RAID

Linux Sofware RAID

Page 7: Curs Linux Cma

1 Introducere & Instalare » 1.2 Consideratii Hardware » 1.2.4 LVM

LVM

LVM (Logical Volume Management)

Reprezinta posibilitatea prin care se pot crea "Logical Volumes" care se intind pe mai multe

diskuri si partitii.

Un volum logic poate fi folosit ca o partitie si anume se poate formata cu un sistem de fisiere si

monta intr-un anumit mount-point.

Mai multe "physical partitions" - hard diskuri intregi sau partitii se combina intr-un singur

"volume group".

LVM nu trebuie confundat cu RAID. Acestea sunt 2 tehnologii diferite care se completeaza.

EVMS (Enterprise Volume Management System) reprezinta o interfata comuna pentru LVM si

RAID.

Avantaje LVM:

se pot combina mai multe partitii sau hdd intr-un singur "volume group"

un "logical volume" poate fi largit cand este nevoie de mai mult spatiu intr-un mod foarte

simplu.

se pot adauga noi "logical volumes" la "volume group" fara a fi nevoie de oprirea sistemului

sau demontarea partitiilor.

se pot adauga noi hdd la "volume group" intr-un "running system"

Resurse:

LVM

Linux LVM

Page 8: Curs Linux Cma

1 Introducere & Instalare » 1.3 Boot Loader/Boot Manager

Boot Loader/Boot Manager

Aceasta prezentare face referire la userul root. In Linux exista 2 categorii de useri: useri

neprivilegiati (toti ceilalti) si userul root. root este un utilizator cu drepturi depline,

administratorul sistemului. Orice sarcina administrativa se realizeaza de catre userul root. Pentru

detalii despre modul in care se executa comenzi cu drepturi de root cititi sub-capitolul: su si sudo

Boot manager & Boot loader

Boot Loaderul este primul program executat in momentul butarii unui calculator. Acesta este

responsabil sa transfere controlul catre kernelul sistemului de operare. Acesta din urma incarca

intreg sistemul de operare.

Definitie

Procesul de butare (booting) reprezinta incarcarea/copierea sistemului de operare de pe Hard

Disk in RAM si executarea de catre acesta a diferitelor functii pentru initializarea dispozitivelor

hardware (recunoasterea placii grafice pentru afisare la monitor, stabilirea rezolutiei monitorului,

montarea sistemelor de fisiere de pe hard disk, initializarea porturilor seriale, usb, initializarea

mouse-ului si a tastaturii etc. Detalii).

Un boot manager este un program care ajuta utilizatorul sa aleaga intre mai multe sisteme de

operare, sa seteze sistemul default, timeout etc.

Pe Linux se folosesc in principal 2 programe care contin atat boot loader cat si boot manager.

Acestea sunt LILO - Linux Loader si GRUB - GRand Unified Bootloader.

Grub este mai flexibil, este de preferat.

Grub este instalat automat de multe distributii de Linux dar si Unix (ex. Solaris).

Grub poate incarca si alte sisteme de operare (Windows, Solaris, etc).

Boot Loaderul se instaleaza intr-un singur sector al hard disk-ului numit sector de boot.

Exista 2 categorii de sectoare de boot:

1) VBR - Volume Boot Record - reprezinta primul sector al unui hard disk care nu a fost

partitionat sau primul sector al unei partitii a unui hard disk care a fost partitionat. Contine cod

pentru a incarca sistemul de operare de pe acel hard disk sau de pe acea partitie.

2) MBR - Master Boot Record - reprezinta primul sector al unui hard disk care a fost partitionat.

Contine cod pentru a identifica partitia activa si a invoca Volume Boot Record al acelei partitii.

Dimensiunea MBR este 512 bytes din care maximum 446 reprezinta cod executabil.

Page 9: Curs Linux Cma

Exista 2 versiuni Grub: Grub sau Grub1 (Grub Legacy) si Grub2. Acestea difera fundamental

prin modul de configurare si operare. Ultimele distributii de Linux folosesc Grub2, care incetul

cu incetul va inlocui Grub1. In prezent (anul 2011) Grub legacy este inca folosit in special

datorita faptului ca este un program stabil, testat in multi ani.

Pentru a detecta versiunea de Grub instalata se ruleaza din consola comanda grub-install -v

Exemplu

Versiunea 1.98 nu inseamna Grub1 ci versiunea 1.98 a lui Grub2. In cazul Grub1 la

versiune va aparea 0.97 (sau mai putin).

Grub legacy

Fisierul de configurare al lui Grub este default in /etc/grub.conf sau in /boot/grub/menu.lst

Fisierul de configurare al GRUB este: /boot/grub/menu.lst

In momentul in care dorim modificari referitoare la modul de functionare al acestuia precum

adaugarea unui nou sistem de operare in meniul lui Grub afisat la pornirea calculatorului,

stergerea unui sistem de operare in care sa butam, modificare timeout etc trebuie sa modificam

fisierul precizat mai sus.

Structura acestuia este:

default 0

timeout 8

title Windows XP

rootnoverify (hd0,0)

chainloader +1

title Fedora Core

root (hd0,1)

kernel /boot/vmlinuz root=/dev/sda2

initrd /boot/initrd

Page 10: Curs Linux Cma

title Solaris

rootnoverify (hd0,2)

chainloader +1

Grub2

Modul de functionare al lui Grub2 este dictat de mai multe fisiere:

1. /boot/grub/grub.cfg

Acesta este fisierul de configurare principal al lui Grub2 care precizeaza ce sistem de operare

incarca Grub2, pe ce partitie se afla acestea, sistemul default de butare etc si inlocuieste

/boot/grub/menu.lst al lui Grub1. Fisierul nu se editeaza manual nici macar de catre root. Fisierul

se genereaza automat (suprascriind vechiul fisier) de fiecare data cand se ruleaza comanda

update-grub pe baza fisierelor din directorul /etc/grub.d

2. /etc/default/grub

Acesta este fisierul in care se precizeaza timeout, modul de display al meniului etc.

# If you change this file, run 'update-grub' afterwards to update

# /boot/grub/grub.cfg.

#precizeaza sistemul de operare default care in care va buta.

#este ordinea de afisare in meniu, iar numerotarea incepe de la zeros

GRUB_DEFAULT=0

#optiunea este valabila doar daca exista un sigur sistem de oparare.

#daca sunt mai multe optiunea este ignorata

#optiunea precizeaza cat timp asteapta grub inainte sa buteaze sistemul

GRUB_HIDDEN_TIMEOUT=0

GRUB_HIDDEN_TIMEOUT_QUIET=true

#in cazul mai multor sisteme de operare este indicat timpul

# in care este afisat meniul inainte de butarea in sistemul default

GRUB_TIMEOUT=10

GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

GRUB_CMDLINE_LINUX=""

# Uncomment to disable graphical terminal (grub-pc only)

#GRUB_TERMINAL=console

# The resolution used on graphical terminal

# note that you can use only modes which your graphic card supports via VBE

# you can see them in real GRUB with the command `vbeinfo'

#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux

#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries

#GRUB_DISABLE_LINUX_RECOVERY="true"

Page 11: Curs Linux Cma

# Uncomment to get a beep at grub start

#GRUB_INIT_TUNE="480 440 1"

3. fisierele din directorul /etc/grub.d

Acestea sunt editabile de catre user (root), iar pe baza lor se genereaza /boot/grub/grub.cfg (in

urma rularii comenzii update-grub).

In comparatie cu Grub1, Grub2 detecteaza automat sistemele de operare instalate si actualizeaza

corespunzator /boot/grub/grub.cfg

Fisierele importante din acest director sunt:

- 10_linux -> detecteaza kernel linux;

- 30_os-proper -> cauta automat sisteme de operare Linux si Windows instalate si actualizeaza

/boot/grub/grub.cfg;

- 40_custom -> fisier care se editeaza de catre user cu sistemele de operare pe care dorim sa le

butam. In acest fisier se adauga sistemele Windows, Solaris etc daca nu dorim detectarea lor

automata;

In comparatie cu Grub Legacy, Grub2 incepe numerotarea partitiilor de pe un hard disk de la 1 in

loc de 0. Diskurile se numeroteaza in continuare de la zero.

Exemplu: (hd0,1) reprezinta prima partitie de pe primul hard disk, iar (hd1,3) reprezinta a 3-a

partitie de pe al doilea hard disk.

Exemplu: 40_custom in cazul in care se doreste configurarea Grub2 sa buteze un sistem

Windows care se gaseste pe prima partitie de pe primul hard disk.

menuentry "Windows XP SP3" { set root=(hd0,1) chainloader +1 }

In cazul in care adaugam manual in 40_custom un sistem de operare, acesta poate fi identificat si

automat astfel avem in lista meniu acelasi sistem de 2 ori. Daca nu dorim sa mai se detecteze

automat sisteme de operare se poate sterge fisierul 30_os-proper sau i se poate lua dreptul de

executie (chmod -x 30_os-proper).

Nota

De cele mai multe ori reconfigurarea GRUB-ului (ex: dupa instalarea unui noi sistem de

operare) are loc automat prin rularea comenzii upate-grub de catre userul root.

Resurse

GRUB

GRUB2

The GRUB2 Guide

Page 12: Curs Linux Cma

1 Introducere & Instalare » 1.4 Instalare

Instalare

Instalarea unui sistem de operare Linux modern decurge asemanator cu instalarea sistemului

Windows. Installer-ul recunoaste componentele hardware, instaleaza drivere pentru acestea,

partitioneaza hard disk-ul, creaza utilizatori, configureaza reteaua etc. La sfarsit avem un sistem

de operare Linux perfect functional.

Nota

In comparatie cu Windows, o distributie Linux contine aproape toate programele necesare

utilizatorului. Acestea sunt incluse pe DVD-ul sau CD-urile de instalare, iar daca sunt alese

de utilizator sunt instalate o data cu sistemul de operare. La final vom avea acces la

majoritatea programelor necesare precum: editoare de text, playere video, mp3 player,

program de copiere CD-uri, program de Backup, client de E-mail, Browser, client de

messenger etc.

Pentru o echivalenta a programelor Windows-Linux cititi sectiunea capitolului "Mediul

Grafic" a acestui curs numita "Programe Desktop".

Aspecte care trebuie avute in vedere inaintea inceperii instalarii unui sistem de operare Linux:

1. Linux are nevoie de propria partitie pe care sa se instaleze. Aceasta poate fi creata anterior din

Windows folosind un program precum Partition Magic sau in timpul instalarii Linux.

Dimensiunea partitiei se recomanda sa fie de minim 10 GB pentru o folosire normala a

sistemului Linux. In cazul in care aceasta se creaza din Windows poate sa fie formatata cu orice

sistem de fisiere (fat, ntfs etc), iar in timpul instalarii Linux aceasta trebuie formatata cu un

sistem de fisiere specific precum ext3/ext4 sau reiserfs.

2. Pentru performante crescute, Linux necesita o partitie speciala de tip swap. Se recomanda ca

dimensiunea partitiei sa fie de 2 ori dimensiunea memoriei RAM. Partitia de swap trebuie creata

anterior din Windows sau in timpul instalarii Linux. Se va formata ca swap in timpul instalarii.

Partitia de swap NU este obligatorie.

3. Dupa downloadul fisierului ISO si inainte de copierea acestuia pe un CD/DVD si instalare, se

recomanda verificarea hash-ului acestuia folosind md5sum sau sha1sum.

Hash-ul este un rezumat criptografic unic pentru fiecare fisier (nu exista 2 fisiere cu acelasi

hash). Fiecare fisier are mereu acelasi hash (daca dorim sa calculam hash-ul de mai multe ori).

Astfel se compara hash-ul calculat local cu hash-ul de pe site-ul producatorului. In cazul in care

acestea sunt egale putem trage 2 concluzii: fisierul a fost downloadat fara erori (este integru) si a

fost nemodificat fata de versiunea originala de pe site-ul producatorului. In Linux exista

comenzile md5sum si sha1sum pentru calcul de hash-uri, iar in Windows trebuie instalate.

Detalii.

Page 13: Curs Linux Cma

1 Introducere & Instalare » 1.5 Console/terminale virtuale

Console/terminale virtuale

In Linux si Unix exista conceptul de Consola Virtuala si Terminal Virtual sau Terminal Text.

Considerente istorice

Initial se folosea un singur calculator de tip mainframe sau similar la care se conectau mai multi

useri simultan folosind fiecare o consola. O consola era reprezentata printr-un ansamblu de

tastatura si monitor.

Linux pune la dispozitia utilizatorului 7 console virtuale (logice) care pot fi accesate folosind

combinatia de taste CTRL+ALT+F1 pt consola 1, CTRL+ALT+F2 pentru consola 2 etc.

In consola 7 este pornit mediul grafic.

Nota

Fizic, cele 7 console virtuale sunt reprezentate prin fisierele /dev/tty1-7, iar terminalele

virtuale sunt reprezentate prin fisierele /dev/pts*

Fisierul /etc/securetty contine pe fiecare linie locatiile de unde userul root are voie sa se

logheze

Terminal windows, terminal emulator sau terminal virtual reprezinta o consola pornita din modul

grafic.

Un terminal virtual se porneste in Ubuntu (Gnome): Start->Accessories->Terminal

Page 14: Curs Linux Cma

In momentul in care deschidem un terminal virtual porneste shell-ul default al sistemului (Bash)

care asteapta rularea de comenzi.

Toate comenzile se scriu in Linux intr-un terminal virtual (sau consola virtuala).

Resurse

Starting a terminal (in Unity, Gnome, Kde sau Xfce)

Page 15: Curs Linux Cma

1 Introducere & Instalare » 1.6 Linux rescue

Linux rescue

1.6.1 Refacerea configuratiei de boot

1.6.2 Recuperarea parolei de root

Linux este un sistem de operare bazat pe comenzi.

Comenzile sunt interpretate din punct de vedere al sintaxei de catre Shell (o componenta

importanta a sistemului) si transmise kernelului spre executie.

Comenzile se executa intr-un terminal virtual sau consola virtuala. Pentru a deschide un terminal

in Ubuntu: Start->Accessories->Terminal

De asemenea in Linux exista 2 categorii de useri:

1. userii neprivilegiati (toti inafara de root)

2. un singur user privilegiat numit root

Userii neprivilegiati nu au nicio permisiune in sistem, de accea orice comanda care presupune

modificari in sistem trebuie rulata de catre root. Ex: modificare IP, instalare programe, update

programe, practic orice modificare.

Pentru a se rula comenzi ca root exista 2 posibilitati:

1. "Devenim" root temporar ruland comanda su si introducand parola de root. Toate comenzile

ulterioare (pana la logout) vor fi executate de catre root

2. Fiecare comanda este rulata de catre un user neprivilegiat dar prefixata de comanda sudo.

Exemplu: in loc sa se ruleze comanda passwd root care modifica/seteaza parola lui root se

ruleaza sudo passwd root. In acest caz este ceruta parola userului neprivilegiat care ruleaza

comanda sudo. Aceasta din urma pleaca cu drepturi de root.

Nota

1. In Ubuntu initial dupa instalare, userul root nu are setata parola si nu se poate loga.

Pentru a folosi userului root in mod direct trebuie setata parola si anume se ruleaza: sudo

passwd root. Ulterior punem "deveni" root ruland comanda su ca user neprivilegiat

2. Userii care pot rula comnezi prefixate cu sudo sunt cei care fac parte din grupul admin,

iar initial este doar userul creat la momentul instalarii.

3. Distributiile de Linux bazate pe Debian precum Ubuntu sunt orientate foarte mult in

directia folosiri lui sudo. Celelalte distributii precum si Unix folosesc mai mult varianta de

devenire temporara root. Aceasta este si varianta considerata clasica si este folosita de multe

ori si in exemplele acestui curs. Diferentele dintre cele 2 metode nu sunt foarte mari si tin

mai multe de preferintele fiecarui administrator.

Notiunile despre console, comenzi, shell-uri si useri vor fi mult detaliate in capitolele urmatoare.

Page 16: Curs Linux Cma

1 Introducere & Instalare » 1.6 Linux rescue » 1.6.1 Refacerea configuratiei de boot

Refacerea configuratiei de boot

Exista foarte multe cazuri in care sistemul de operare nu mai buteaza din cauza unei erori, cand

am "pierdut" parola de root sau cand vrem sa rescriem Grub-ul pe MBR pentru butarea in mai

multe sisteme.

Dupa instalarea Windows (Linux fiind deja instalat) MBR-ul este suprascris de Windows astfel

incat nu vom mai putea alege sistemul de operare in care sa butam sau sa intram in Linux.

Nota

CD-ul de rescue poate sa fie primul CD dintre CD-urile de instalare, un CD special in cazul

anumitor distributii sau DVD-ul de instalare.

Etapele sunt urmatoarele (in cazul in care folosim CD-ul de instalare Ubuntu - similar pentru alte

distributii):

1. Butam folosind CD-ul de instalare

2. Alegem optiunea de Live CD sau "Try Ubuntu"

3. Dupa butare deschidem un terminal si "devenim" user privilegiat (root) ruland comanda: sudo

su

Toate operatiile urmatoare pana la restartare se realizeaza de userul root.

4. Montam in /mnt partitia pe care se gaseste sistemul Linux caruia ii facem rescue (cel in care

nu mai putem intra datorita instalarii Windows sau defectarii Grub-ului de pe MBR). Pentru a o

identifica putem rula fdisk -l. Presupune ca aceasta este /dev/sda1

mount /dev/sda1 /mnt

5. Se instaleaza Grub cu vechea configuratie pe MBR prin comanda grub-install --root-

directory=/mnt /dev/sda

6. Se restarteaza sistemul (comanda reboot) urmand sa apara meniul GRUB. In cazul in care

Windows a fost instalat dupa Linux, in acest moment nu vom mai putea intra in Windows.

Trebuie sa ne logam in Linux si ca root sa rulam: update-grub

Nota

/dev/sda se inlocuieste cu fisierul care reprezinta Hard Disk-ul pe care se instaleaza Grub.

Grub se instaleaza pe MBR adica pe primul sector al hard dikului (Ex: sda) si nu pe o

anumita partitie (Ex: sda1). Directorul in care se monteaza partitia (in exemplu de mai sus

/mnt) poate fi inlocuit cu orice alt director existent.

Page 17: Curs Linux Cma

1 Introducere & Instalare » 1.6 Linux rescue » 1.6.2 Recuperarea parolei de root

Recuperarea parolei de root

Exista cazuri in care parola userului root a fost uitata, schimbata accidental sau in mod

intentionat de o alta persoana care avea acces la contul de root astfel incat nu mai ne putem loga

ca root in sistem.

Important

Orice sarcina administrativa din Linux poate fi realizata DOAR de userul root deci accesul la

contul root este obligatoriu. In Linux orice modificare a unei setari a sistemului de operare se

realizeaza modificand un fisier text aferent numit fisier de configurare. Aceste fisiere se gasesc

in directorul /etc

Un user normal sau neprivilegiat are permisiunea de a modifica DOAR fisierele si directoarele

din propriul Home Directory.

Nota

Recuperarea parolei de root poate avea loc DOAR daca avem acces fizic la calculator !!.

Vechea parola de root NU poate fi gasita ci schimbata.

Butarea sistemului folosind CD-ul de instalare si alegand LiveCD. De asemenea se poate buta cu

orice LiveCD precum Knoppix.

Dupa butare se monteaza partitia pe care se gaseste sistemul de fisiere "/" si care contine fisierele

/etc/passwd (contine userii din sistem inclusiv root) si /etc/shadow (contine hash-ul parolei

uitate). Se ruleaza: mount /dev/sda1 /mnt

Nota: sda1 se inlocuieste corespunzator, iar in locul lui /mnt se poate folosi orice alt director.

In continuare exista 3 posibilitati (prima este mereu disponibila si cea mai usoara):

a) Se editeaza folosind editorul preferat (Exemplu VI) fisierul /etc/shadow si se sterge hash-ul

parolei lui root. Dupa restartarea calculatorului ne putem loga ca root fara a mai fi necesara

parola. In acest caz dupa logarea ca root fara parola trebuie setata o noua parola lui root prin

comanda: passwd root

b) Se inlocuieste hash-ului parolei lui root cu hash-ul unei parole cunoscute a unui cont oarecare.

Se logheaza ca root folosind acea parola;

c) Se monteaza sistemul de fisiere pe care se gaseste sistemul Linux in root ( /) si se foloseste

comanda passwd root;

Exemplu

Presupunem ca Linux s-a instalat pe prima partitie primara de pe primul hard disk SATA (

/dev/sda1)

0. Butare cu un LiveCD.

1. mount /dev/sda1 /mnt

2. vi /mnt/etc/shadow

Se sterg cu mare atentie toate caracterele care reprezinta hash-ul parolei intre cele 2 doua

puncte (:).

Prima linie trebuie sa arate: root::14915:0:99999:7:::

3. Restartare si logare ca root fara parola.

4. Modificare parola root folosind comanda:

passwd root

Page 18: Curs Linux Cma

2 Mediul Grafic » 2.1 Sisteme grafice

Sisteme grafice

Un sistem grafic (graphical environment/desktop environment) consta in icoane, ferestre,

toolbars, foldere, panels, widgets si influenteaza modul de lucru si experienta al utilizatorului.

In cazul unui server Unix/Linux administrarea si configurarea acestuia se realizeaza folsoind CLI

(command line interface) sau linia de comanda pentru un control total.

Chiar daca anumite aspecte ale sistemului pot fi configurate grafic (daca exista instalat un sistem

grafic) cunosterea in profunzime a CLI este obligatorie pentru orice administrator performant.

Nota

Pe multe servere dedicate mediul grafic nu este instalat (Ex: Ubuntu Server) astfel incat

administrarea sistemului are loc doar prin consola, de cele mai multe ori remote folsoind

ssh.

Existe mai multe Desktop Environments (DE), printre cele mai cunoscute si apreciate fiind:

1. Unity

Acest DE modern realizat de Canonical Ltd special pentru Ubuntu se bazeaza pe GNOME. Este

default pentru Ubuntu incepand cu versiunea 11.04.

Resursele hardware necesare sunt considerabil mai mari in comparatie cu alte DE.

Cerinte hardware: CPU 1GHz, RAM 1 GB

2. Gnome (GNU Noterwork Object Model Environment)

A aparut in 1997 ca o alternativa la KDE. Este DE default pentru multe distributii printre care:

Ubuntu (pana la versiunea 11.04), Debian, Mint, Fedora, CentOS, etc.

Page 19: Curs Linux Cma

Exista in prezent doua versiune principale: Gnome 2 si Gnome 3.

Nota

Daca se doreste folosirea Gnome in Ubuntu acesta trebuie instalat: sudo apt-get install

gnome-shell

Trebuie ales apoi din ecranul de login pentru a fi folosit:

3. KDE

Este primul DE complex pentru Linux si este considerat cel mai configurabil si cu cele mai multe

Page 20: Curs Linux Cma

optiuni. Multe destributii folosesc default KDE: Kubuntu, Mandriva, etc.

Nota

Daca se doreste folosirea KDE in Ubuntu acesta trebuie instalat: sudo apt-get install

kubuntu-desktop

Trebuie ales apoi din ecranul de login pentru a fi folosit.

Kubuntu este o distributie bazata default pe Kde.

4. Xfce

Reprezinta o alternativa la Gnome sau Kde. Aceste DE se axeaza pe performanta in loc de

feature-uri. Are un "look" clasic iar resursele consumate sunt minime. Este ideal pentru

calculatoarele mai vechi sau pentru utilizatorii care sunt interesati doar de performanta.

Page 21: Curs Linux Cma

Cerinte hardware: CPU 300 MHz, RAM 192 MB.

Nota

Daca se doreste folosirea Xfce in Ubuntu acesta trebuie instalat: sudo apt-get install xfce4

Trebuie ales apoi din ecranul de login pentru a fi folosit.

Xubuntu este o distributie bazata default pe Xfce.

Resurse

Unity

Gnome

KDE

Xfce

Comparison of X Window System desktop environments

Gnome vs. Kde vs. Xfce

Page 22: Curs Linux Cma

2 Mediul Grafic » 2.2 Programe Desktop

Programe Desktop

Un sistem de operare Linux modern poate inlocui COMPLET, eficient si fara probleme pentru

majoritatea utilizatorilor un sistem de operare Windows. Veti avea astfel un sistem de operare

mult mai stabil, mai sigur, cu mai multa functionalitate dar si complet gratuit.

Nota

Majoritatea aplicatiilor prezentate se instaleaza automat folosind un manager de pachete

perecum apt-get.

Exemplu:

sudo apt-get update sudo apt-get install wireshark putty gns3

Pentru mai multe detalii despre instalarea de programe cititi capitolul Administrarea

pachetelor software a acestui curs.

In tabelul de mai jos gasiti o mica descriere a celor mai importante programe Desktop pe Linux

precum si programul echivalent din Windows pentru o tranzitie cat mai usoara.

Nr.

Crt. Program Linux

Echivalent

Windows Nota

1 LibreOffice MS Office

Suita de program LibreOffice reprezinta o

alternativa eficienta la MS Office. Poate

lucra cu fisiere word, excel, PowerPoint

create cu MS Office. Proiectul LibreOffice

este urmasul lui OpenOffice. LibreOffice

ruleaza inclusiv pe Windows.

2 qtparted, gparted Partition Magic Program de partitionare, modificare partitii

etc

3 PartImage, PING Norton Ghost

Programe folosite pentru backup sau pentru

clonarea unei partitii. PING este un live CD

extrem de eficient care poate clona orice tip

de partitie (inclusiv NTFS).

4 k3b, brasero Nero Program pentru scrierea de CD-uri, DVD-

uri, imagini iso etc

5 xmms, amarok,

banshee, exaile Winamp

Programe pentru redarea de fisiere mp3 sau

alte fisiere muzicale.

6 mplayer, xine, vlc,

totem

Windows Media

Player

Programe folosite pentru vizualizare de

filme in orice format (divx, xvid, wma, dvd

etc). Codec-urile necesare se instaleaza de

cele mai multe ori automat.

7 Krusader

Total

Commander

Twin File manager cu functionalitate

multipla(client ftp, arhivator/dezarhivator

zip, rar etc)

Page 23: Curs Linux Cma

8

Mozilla Firefox,

Google Chrome, Opera,

Lynx - Web Browser

text util pentru lucrul in

consola

Internet Explorer Web Browser

9 Mozilla Thunderbird Outlook Express Client de e-mail

10 gaim/pidgin

Yahoo

Messanger,

MSN, ICQ

Client de chat

11 gedit, kate Notepad,

Wordpad Editor text

12 xchm, gnochm

Vizualizator pentru fisierele chm

13 clamav, clamwin

Norton Antivirus,

Bit Defender,

AVG, Kaspersky

etc

Antivirus complet free. ClamAV este

varianta care ruleaza pe Windows

14 netfilter/iptables

Windows

Firewall, Norton

Firewall, Kerio

etc

Firewall extrem de eficient folosit cu

succes pe servere Enterprise. Ofera

facilitati de rutare/nat, modificare a

pachetelor(mangle) etc. Reprezinta

SINGURA solutie tip firewall disponibila

pe Linux

15 gtkpod itunes Program pentru ipod

16 GIMP Adobe Photoshop Editor de imagini

17 Ktorrent, Transmission BitTorrent,

uTorrent Torrent client

18 evince Acrobat Reader PDF Viewer

19 gftp Ftp Commander

20 Lame, Grip, CD

Paranoia

21 Quanta Plus, BlueFish HomeSite, Adobe

- Dreamweaver

IDE (Integrated development environment)

folosit pentru dezvoltarea de aplicatii web

(html, javascript, php, css etc)

Alte programe utile, recomandate a fi instalate pe Linux sunt:

GNS3 - Graphical Network Simulator - Emulator pentru echipamente Cisco (Routers,

Switches, ASA)

Password Gorilla - Password Manager

Putty - telnet/ssh client

Page 24: Curs Linux Cma

Calibre - E-Book (mobi, epub etc) Manager

recordmydesktop - Desktop Recorder

Wireshark - Sniffer si analizator de pachete

Audacity - Audio Editor & Recorder

PdfEdit - PDF Editor

Nota

Multe programe folosite pe Windows ruleaza de asemenea si pe Linux. Dintre acestea

enumeram:

Acrobat Reader - PDF Viewer

Google Earth

Eclipse, NetBeans - IDE pentru aplicatii Java

VMware, VMware Player, VirtualBox - Virtualizare

Pentru rularea de programe native Windows pe Linux cum ar fi jocuri, Adobe Photoshop,

Visual Studio etc se foloseste WINE.

Pentru a monta partitii de Linux precum ext3 pe Windows se poate folosi EXT2ifs

Resurse

Best Free Software for Linux

Top 100 of the Best (Useful) OpenSource Applications

Page 25: Curs Linux Cma

3 Structura Linux » 3.1 Structura Linux

Structura Linux

Un sistem de operare este format din urmatoarele componente:

1. Kernel

Reprezinta partea cea mai importanta a OS, cea care lucreaza cu CPU si este cea mai apropiata

de Hardware. Fizic kernelul se regaseste intr-un fisier iar de cele mai multe ori acesta este

/boot/vmlinuz-version_no

Functii:

I/O Management;

managementul memoriei RAM si SWAP;

apelarea functiilor de sistem;

lucrul cu echipamentele periferice prin drivere;

managementul sistemului de fisiere si al proceselor care ruleaza;

Memoria SWAP reprezinta un tip special de memorie care se gaseste pe Hard disk, dar care este

folosita de Kernel ca si cand ar fi memorie RAM. Dimensiunea acesteia se recomanda a fi egala

sau mai mare decat memoria RAM. Pe Linux se foloseste o partitie speciala pentru memoria de

tip Swap. Aceasta memorie este optionala.

2. Shell

Utilizatorul nu poate comunica direct cu Kernelul. Accesul la functiile kernelului se face prin

intermediul shell-ului. Acesta este un program care primeste comenzi de la user sau alte aplicatii,

le interpreteaza si le transmite kernelului pentru a le executa.

Printre functiile shell-ului se afla si customizarea intregului environment (mediu de lucru)

precum si programarea folosind shell scripts.

Exista mai multe shell-uri printre cele mai importante amintim:

a) Bourne Shell (sh) - Primul shell pentru Unix. A fost dezvoltat de Stephen Bourne la AT&T.

Nu are foarte multe optiuni.

b) Korn Shell (ksh) - A fost dezvoltat de David Korn la Bell Labs.

c) C Shell (csh) - A fost dezvoltat de Bill Joy la Sun si se bazeaza pe limbajul de programare C.

d) Enhanced C Shell (tcsh)

e) Z Shell (zsh) - Este asemanator de Korn shell dar are mai multe functii.

f) Bash (bash) - Bourne Again Shell - Default pe Linux. Cel mai folosit si mai puternic shell.

3. Sistemul de fisiere . Pentru detalii cititi subcapitolul "Sistemul de fisiere" al acestui curs.

Page 26: Curs Linux Cma

3 Structura Linux » 3.2 Structura unei comenzi

Structura unei comenzi

Pentru managementul sistemului Linux (copiere de fisiere sau directoare, stergere, redenumire,

afisare continut, listare, editare etc) se folosesc comenzi. Exista peste 400 comenzi de baza in

Unix/Linux.

Exista comenzi incluse in shell ( Exemplu: alias, cd, umask) si comenzi independente

reprezentate prin programe ( Exemplu: ls, cp, rm etc).

Structura unei comenzi este urmatoarea:

NUME_COMANDA OPTIUNI [ARGUMENT 1] [ARGUMENT 2]

NUME_COMANDA = reprezinta numele comenzii. Trebuie sa apara primul. Directorul in care

se gaseste comanda trebuie sa fie in variabila PATH (la fel ca si in WINDOWS).

Nota

In contrast cu Windows, in Linux directorul curent reprezentat prin . (punct) nu se gaseste

in PATH. Pentru a executa o anumita comanda nu este suficient sa ne mutam in directorul

care contine programul respectiv sau comanda si sa executam respectiva comanda.

OPTIUNI

pot fi scurte (o litera). Exemplu: ls -R sau pot fi combinate mai multe litere. Exemplu: ls -Fal

pot fi formate din unul sau mai multe cuvinte. Exemplu: smart --ignore-locks

ARGUMENTE

reprezinta scopul comenzii. Pot fi fisiere sau directoare, adrese IP, nume de domenii DNS etc

Nota

Comenzile se scriu cu litera mica, iar argumentele pot fi cu litera mica sau litera mare, de

cele mai multe ori cu litera mica. Litera mica difera intotdeauna de litera mare.

Important

Apasarea tastei TAB o singura data dupa primele caractere dintr-o comanda sau fisier, are ca

efect completarea comenzii sau au fisierului daca comanda sau fisierul se identifica unic.

Apasarea tastei TAB de 2 ori determina afisarea tuturor comenzilor sau a fisierelor care incep cu

literele scrise deja. Daca tasta TAB nu completeaza comanda sau fisierul inseamna ca fisierul sau

comanda nu exista ori sunt scrise partial gresit. Este foarte important sa se foloseasca tasta TAB

pentru auto-completare atat pentru cresterea eficientei cat si pentru elimitarea erorilor.

Page 27: Curs Linux Cma

3 Structura Linux » 3.3 Comenzile ls si less

Comenzile ls si less

1. Comanda ls

Una dintre cele mai folosite comenzi in Linux este ls (list). Aceasta afiseaza informatii diverse

despre fisiere si directoare.

ls OPTIONS FILE - listeaza continut

-l listare lunga, sortare dupa nume

-F afiseaza tipul fisierului

-t sortare dupa mtime

-h human readable

-i afiseaza inode

-R afiseaza recursiv

-S sortare dupa marime

-d afiseaza informatii despre director in loc de continutul acestuia

-c afiseaza ctime (in combinatie cu -l)

-u afiseaza atime (in combinatie cu -l)

-a afiseaza hidden files

2. Comanda less

Intreaga configuratie a unui sistem Linux, fie ca ne referim la servere care ruleaza, firewall sau la

rezolutia monitorului se gaseste aproape exclusiv in fisiere text. Una dintre sarcinile cele mai

frecvente ale unui admin este vizualizarea diferitelor fisiere text. Cea mai folosita comanda

pentru vizualizare care se gaseste pe orice distributie de Linux sau chiar de Unix este less.

less FILE - afiseaza continut fisier text

In timpul vizualizarii continutului fisierului putem folosi urmatoarele taste:

enter afisare urmatorul rand

space afisare urmatoarea fereastra

Page 28: Curs Linux Cma

d afisare urmatoarea jumatate de fereastra

u afisare jumatatea de fereastra anterioara

/sir cautare sir forward

?sir cautare sir backward

n urmatoarea aparitie a sirului

N aparitia anterioara a sirului

g salt la inceputul fisierului

G salt la sfarsitul fisierului

q quit

h help

Resurse

man ls

man less

Page 29: Curs Linux Cma

3 Structura Linux » 3.5 Runlevel

Runlevel

Reprezinta starea in care se afla si opereaza sistemul de operare la un anumit moment dat.

Exemplu: un sistem de operare Linux care intra in runlevel 0 se opreste, daca intra in runlevel 6

tocmai se restarteaza.

In functie de runlevel-ul in care opereaza sistemul de operare exista anumite facilitati oferite si

anumite procese care ruleaza. Un sistem de operare Linux se poate afla la un moment dat intr-un

singur runlevel.

Linux runlevels

Runlevel Semnificatie Descriere

0 Halt, Shut down Oprirea sistemului, aducerea lui in starea in care se intrerupe

alimentarea cu energie electrica

1 single-user

Modul administrator folosit pentru mentenanta. Nu exista retea,

mediu grafic si doar sistemele de fisiere locale sunt montate.

Exista un sigur user care se poate loga in sistem si anume root.

Este echivalentul lui Safe-Mode din Windows

2 multi-user Modul multi-user fara retea.

3 multi-user + retea Runlevel default pentru servere.

4 N/A Nu exista

5 multi-user + retea

+ mediul grafic Run level default pentru Desktop

6 reboot/restart Restartarea calculatorului

Mai poate exista runlevel-ul S sau s, care nu este folosit direct ci de catre programe si scripturi

care se executa cand se intra in runlevel 1.

Pentru trecerea dintr-un runlevel in altul se foloseste comanda: init noul_runlevel

Exemplu

1. Restartare calculator

/sbin/init 6

2. Oprire calculator

/sbin/init 0

3. Intrare in single-user mode

/sbin/init 1

4. Revenire in runlevel 5

/sbin/init 5

Page 30: Curs Linux Cma

Nota

In cazul distributiilor bazate pe Debian precum Ubuntu runlevel-urile existente au o alta

semnificatie si anume nu se diferentiaza intre runlevel 2,3,4 si 5 iar default este runlevel 2.

Resurse

Runlevel - Wikipedia

Page 31: Curs Linux Cma

3 Structura Linux » 3.6 Sistemul de fisiere » 3.6.1 Prezentare generala

Prezentare generala

Sistemul de fisiere reprezinta modul de organizare, structurare si accesare a fisierelor,

directoarelor si linkurilor pe hard disk.

Modul de organizare, accesare si recunoastere a particularitatilor fiecarui sistem de fisiere cade

in sarcina Kernelului. Acesta trebuie sa "ofere suport" pentru acel sistem de fisiere.

In prezent Kernelul de Linux recunoaste majoritatea sistemelor de fisiere existente: fat16, fat32,

ntfs, ext2, ext3, ReiserFS, nfs, smb, iso9660 etc.

Pentru majoritatea distributiilor de Linux default este ext4 - Fourth Extended File System

(default pentru RedHat, Fedora, Ubuntu, Mint etc) sau ReiserFS (default pentru Slackware,

SuSE, Xandros, Yoper).

De multe ori in studiul sistemelor de operare Unix/Linux gasim sintagma - "everything is a file".

Acest lucru se refera la faptul ca fiecare program, sau dispozitiv hardware este reprezentat printr-

un fisier. Nu mai exista alta modalitate de reprezentare a informatiei.

In Linux fisierele sunt case sensitive - se face distinctie intre litera mare si mica.

Un fisier se considera ascuns (hidden) daca numele sau incepe cu "." (punct).

Exemplu

/dev/sda1 reprezinta prima partitie de pe hard disk-ul primary master

/dev/cdrom reprezinta CD-ROM-ul. O scriere sau o citire de pe hard disk sau CD inseamna

de fapt o scriere sau citire din fisierul respectiv.

In Linux un director este tot un fisier (dar special care are anumite proprietati).

Sistemul de fisiere in Linux este arborescent (ca si in windows) doar ca avem un singur arbore

chiar daca avem mai multe partitii sau hard disk-uri.

Radacina sistemului de fisiere se numeste ROOT si se noteaza cu "/".

Atentie: a nu se confunda userul numit root cu radacina sistemului de fisiere care se numeste tot

root. Intre cei 2 termeni nu exista nicio legatura.

Resurse

Ext4 - Wikipedia

Page 32: Curs Linux Cma

3 Structura Linux » 3.6 Sistemul de fisiere » 3.6.2 FHS

FHS

De-a lungul timpului s-a incercat standardizarea sistemului de fisiere pentru sistemele

Unix/Linux luand nastere astfel FHS - Filesystem Hierarchy Standard. Cu toate acestea nu exista

un standard general acceptat in prezent.

Principalele directoare care exista in majoritatea distributiilor de Linux si Unix sunt:

/sbin - utilitare pentru administrarea sistemului, multe accesibile doar lui root

/bin - utilitarele sistemului care trebuie sa fie disponibile atat userilor normali cat si lui root

/dev - fisiere speciale care reprezinta dispozitivele din sistem

/lib - librarii de functii folosite de aplicatii, kernel etc

/var - fisiere care in general isi modifica continutul (loguri, mailuri etc)

/usr - o ierarhie asemanatoare cu "/" ( /usr/sbin, /usr/bin, /usr/etc )

/etc - fisierele de configurare ale sistemului, ale serverelor care ruleaza etc

/root - home directory userului root

/home - home directory pentru userii din sistem. Fiecare user are home directory un director in

interiorul lui /home (de cele mai multe ori directorul poarta numele userului)

/proc - printre functiile principale ale kernelului este si aceea de a controla dispozitivele fizice si

de a coordona modul in care procesele folosesc aceste resurse. In /proc se gaseste statusul curent

al kernelului cu toate informatiile pe care acesta le cunoaste. Aceste fisiere si directoare sunt

create automat la butare. Ele se numesc virtuale. De aici vine si numele de "Sistem de Fisiere

Virtual" (acesta este proc). Aceste fisiere contin multe informatii utile, iar cu toate acestea

dimensiunea lor este de 0 bytes.

Nota

Fisierele din /proc pot fi modificate pentru a configura sistemul "on-the-fly".

Exemplu: echo "new-hostname" > /proc/sys/kernel/hostname

/media - mount point pt. sisteme de fisiere temporare

/mnt - mount point pentru sisteme de fisiere remote

/lost&found - fisiere care au fost salvate in timpul unui "failure"

/boot - fisiere necesare boot loader-ului, kernel-ului

/opt - programe si aplicatii adaugate ulterior care nu fac parte din distributie

/cdrom - mount point pt CD

Page 33: Curs Linux Cma

Mount Point - reprezinta locul (directorul) din sistemul de fisiere UNIC in care se alipesc sisteme

de fisiere de pe alte partitii locale sau externe, de pe CD-ROM/DVD-ROM, USB Stick etc.

Exemplu: la introducerea unui stick usb acesta se va monta automat intr-un subdirecor al

directorului /media. Respectivul subdirector se numeste mount point.

Nota

Partitia swap nu are mount point

Resurse

FHS - PDF Download

Page 34: Curs Linux Cma

3 Structura Linux » 3.6 Sistemul de fisiere » 3.6.3 Structura sistemului de fisiere

Structura sistemului de fisiere

Sistemul de fisiere in Linux este arborescent si unic. Radacina se numeste root si se noteaza cu

"/".

In Linux fisierele sunt case-sensitive - se face distinctie intre litera mare si mica.

In Linux "totul este un fisier". Nu mai exista alta forma de reprezentare a informatiei.

Un sistem de fisiere poate fi impartit in 4 parti distincte in urmatorea ordine:

1. Boot Block - aflat la inceputul partitiei si care contine cod (Boot Loader) pentru a incarca

sistemul de operare.

2. Super Block - contine informatii actuale despre sistemul de fisiere: marimea acestuia, nr. de

blocuri de date libere, locatia acestora, marimea lui inode table, nr maxim de inoduri etc.

3. Inode Table (List) - Lista statica definita initial la instalare si care nu se poate schimba si care

contine inodurile din sistem.

4. Data Blocks - Datele sunt salvate in blocuri (in general 1 block = 512 bytes).

Boot Block Super Block Inode Table Data Block

Page 35: Curs Linux Cma

3 Structura Linux » 3.6 Sistemul de fisiere » 3.6.4 Structura unui fisier

Structura unui fisier

Un fisier consta in informatia pe care acesta o contine (text, date, imagine, sunet etc) dar si o

structura de date care se numeste inode (index node) si care contine informatii suplimentare

despre acel fisier.

Standardul POSIX stabileste ca fiecare inode sa contina urmatoarele informatii:

tipul de fisier

owner

group owner

drepturile de acces (citire, scriere, executie) pentru owner, group si others

nr. de hard linkuri catre aceeasi informatie

atime

ctime

mtime

marimea unui fisier (size)

pointer catre blocurile de date care reprezinta informatia tinuta de fisier.

inum - nr. intreg care identifica unic fiecare inode

Nota

Atentie !!! Numele fisierului nu este pastrat in structura inodului.

Un director este un fisier de tip container care contine perechi de nume_fisier si inode-ul

corespunzator.

In momentul in care ne referim (utilizatorul sau un proces) la un fisier, kernelul cauta in structura

de directoare conform cu calea relativa sau absoluta de referire la fisier, inode-ul corespunzator

pentru acel nume.

Fiecare inode se identifica unic printr-un numar de tip intreg numit "inode number" sau i-

number. Acesta poate fi vizualizat folosind comanda ls -i

Exista un nr. maxim pt. acest i-number care se defineste automat la instalarea sistemului in

functie de dimensiunea partitiei si deci exista un nr. maxim de fisiere (comanda df -i).

In Linux fiecarui fisier sau director i se ataseaza 3 (trei) timpi:

ctime (change time) - reprezinta data la care s-au modificat informatiile continute in inode-ul

fisierului sau directorului (permisiuni, owner, group etc). Nu se refera la timpul cand au avut loc

modificari ale continutului. Se afiseaza cu comanda ls -lc

mtime (modify time) - data la care s-a modificat informatia din fisier. Se afiseaza cu ls -l

atime ( access time ) - data la care s-a afisat continutul fisierului. Se afiseaza cu ls -lu

Comanda stat afiseaza de asemenea acesti 3 timpi.

Pentru modificarea celor 3 timpi ai unui fisier sau director se foloseste comanda touch

touch OPTIONS FILE - listeaza continut

Page 36: Curs Linux Cma

fara optiuni modifica atime, mtime si ctime cu timpul curent

-t

DATE_TIMESTAMP

motifica atime si mtime cu DATE_TIMESTAMP in loc de data

curenta

ex: touch -t 200301231230 a.txt

-d DATE_STRING modifica atime si mtime cu DATE_STRING

ex: touch -d '1 May 2006 10:22' /etc/group

-a

modifica doar atime cu data curenta sau cu o alta data daca este

specificata

ex: #touch -a -d '23 May 2006 10:22' /etc/group

-m modifica doar mtime cu data curenta sau cu o alta data daca este

specificata

-r REFERENCE_FILE schimba atime si mtime cu cele ale lui REFERENCE_FILE

ex: touch -r b.txt a.txt

Nota

ctime nu poate fi setat in mod expres si independent de catre user

Resurse

POSIX

man touch

Page 37: Curs Linux Cma

3 Structura Linux » 3.6 Sistemul de fisiere » 3.6.5 Tipuri de fisiere

Tipuri de fisiere

In Unix si Linux fisierele se impart in urmatoarele categorii:

1) fisiere standard (regular files). Acestea pot fi text, executabile, binare etc

2) directoare. Acestea sunt tot fisiere care au rol de container pentru alte fisiere sau directoare.

Ele reprezinta un tip special de fisier (container) folosit pentru formarea structurii arborescente.

3) link-uri. Pot fi soft links/sym links (echivalentele shortcut-urilor din windows) si hard links -

se refera la aceeasi zona de date, dar identificata prin nume diferite.

4) fisiere speciale (device files). Toate dispozitivele fizice (hard disk, RAM, etc) sunt

reprezentate printr-un fisier. Accesul la aceste dispozitive se realizeaza prin scrierea/citirea din

aceste fisiere.

Exista mai multe feluri de fisiere (dispozitive) speciale:

a) de tip caracter - folosite pentru accesarea byte cu byte a fisierului care reprezinta dispozitivul

hardware ( Exemplu: /dev/pts/0)

b) de tip bloc - folosite pentru accesarea in blocuri de date a fisierului care reprezinta dispozitivul

hardware ( Exemplu: /dev/sda1)

c) named pipes - procesele in Linux comunica cu ajutorul unui pipe (conducta) care se creaza cu

ajutorul caracterului "|". In acest mod outputul unui proces poate fi directionat ca input pentru un

alt proces. Acest tip de pipe exista doar pe timpul executiei comenzii. Exista un al doilea tip de

pipe numit "named pipe" introdus initial in Unix-ul de tip AT&T si care este folosit pentru

comunicarea dintre procese prin intermediul unei cozi de tip FIFO (First In First Out). Acest tip

de fisier se creaza de catre administratorul sistemului pentru a interconecta 2 procese cu comanda

mkfifo

d) Socket (unix domain socket) este asemanator cu pipe-ul, adica se foloseste pentru a conecta

doua procese. Exista o oarecare asemanare cu socketul TCP/IP chiar daca este vorba despre un

alt concept.

Comanda ls -lF afiseaza diferitele tipuri de fisiere folosind anumite simboluri:

Simbol Descriere

nimic fisier standard

/ director

* fisier executabil (ex: /bin/ls)

@ sym link (ex: /etc/grub.conf)

= socket (ex: /dev/log) - procesele scriu in /dev/log pentru a comunica cu syslogd

| named pipe (ex: /dev/initctl) - folosit pentru a comunica cu init

Page 38: Curs Linux Cma

3 Structura Linux » 3.6 Sistemul de fisiere » 3.6.6 Links

Links

In Linux, comparativ cu Windows exista 2 categorii de linkuri:

1) hard links

se refera la asocierea unui nume de fisier cu un inode number (asocierea va fi prezenta intr-un

director). Avem astfel doua sau mai multe nume care sunt asociate cu aceeasi structura de tip

inode;

nr. de hard linkuri din structura inodului este incrementat de fiecare data cand se creaza un nou

hard link;

in momentul in care se sterge un fisier, se decrementeaza nr. hard linkurilor din inode, iar cand

se ajuge la zero este dealocat inodul si marcat ca liber;

nu se pot crea MANUAL hard linkuri catre directoare. Un director nou creat are default 2 hard

linkuri, 2 denumiri si anume numele directorului si . din director.

De fiecare data cand se creaza un subdirector, numarul de hard linkuri al directorului parinte este

incrementat fiindca se creeaza o noua referinta catre acesta si anume ".." care exista in orice

director. Daca un director are 17 hard linkuri inseamna ca acesta contine 15 subdirectoare.

nu se pot crea hard linkuri intre fisiere de pe partitii diferite;

daca fisierul initial este sters, redenumit sau mutat hard linkul nu este influentat;

un hard link se creaza folosind comanda ln

2) soft links / sym links

echivalentul shortcuts din Windows;

daca fisierul sau directorul initial este sters, mutat sau redenumit soft linkul nu mai

functioneaza;

listarea continutului folosind comanda ls -F identifica un symlink dupa caracterul "@" de la

sfarsitul numelui;

se pot crea symlinkuri catre directoare sau fisiere de pe alte partitii;

un symlink se creaza folosind comanda ln cu optiunea -s

Exemplu

1. Pentru a crea un soft link numit mylink.txt care pointeaza la /home/stud/proiect.txt se

foloseste comanda:

ln -s /home/stud/proiect.txt /home/stud/mylink.txt

2. Pentru a crea un hard link al lui /etc/passwd in /etc numit hl-passwd se foloseste

comanda:

ln /etc/passwd /etc/hl-passwd

Page 39: Curs Linux Cma

3 Structura Linux » 3.6 Sistemul de fisiere » 3.6.7 Piping & Redirectare

Piping & Redirectare

Unix/Linux este un sistem de operare care se bazeaza pe comenzi foarte specializate care

lucreaza impreuna. Astfel mai multe comenzi pot fi combinate si se poate crea astfel o comanda

complexa.

Se foloseste astfel caracterul pipe "|".

Exemplu

ls -l | less - outputul comenzii ls -l este trimis lui less pentru paginare

ls -a | sort - outputul comenzii ls -l este trimis comenzii sort care sorteaza in ordine

alfabetica

ps -aux | grep init

Redirectarea outputului

In general scopul unei comenzi este de a trimite outputul catre standard output care este

monitorul. Este posibil ca outputul unei comenzi sa fie redirectat catre un fisier care exista sau

nu. Se foloseste ">" sau ">>"

Exemplu

ls -l /bin > /home/student/binaries.txt - creaza fisierul /home/student/binaries.txt (daca

acesta exista il suprascrie) care va contine outputul comenzii ls -l /bin

ls -l /sbin >> /home/stud/binaries.txt - adauga outputul comenzii ls -l /sbin fisierului

/home/student/binaries.txt (daca acesta nu exista il creaza)

Outputul unei comenzi poate fi redirectat in afara de standard output si catre standard error.

Pentru acesta se foloseste "2>".

Pentru a combina standard output cu standard error se foloseste "&>"

Exemplu

gcc program.c > output.txt 2> errors.txt - redirecteaza outputul compilarii fisierului

program.c catre output.txt, iar erorile sunt redirectate catre fisierul errors.txt

gcc program.c &> output.txt - redirecteaza catre fisierul output.txt atat standard output cat si

standard error.

Page 40: Curs Linux Cma

4 Comenzi si Editoare » 4.1 Editorul VI

Editorul VI

In Unix/Linux exista mai multe editoare de text acestea impartindu-se in editoare grafice ( gedit,

kate ) si editoare care ruleaza in consola ( vi, vim, emacs, joe, pico, nano etc).

Editorul omniprezent pe orice sistem Unix/Linux este VI (Visual Editor).

Acesta este extrem de flexibil, complex si plin de optiuni.

Nota

VIM (VI Improved) reprezinta o varianta imbunatatita a lui VI care ofera multe facilitati

suplimentare si este de recomandat sa fie folosit atunci cand se poate. Toate regulile din VI

raman valabile. In Ubuntu VIM nu este instalat default. Trebuie rulata comanda: sudo apt-

get install vim

Se caracterizeaza prin 3 modalitati de operare:

1. Command Mode

In momentul in care se deschide VI suntem introdusi in "command mode". Se foloseste pentru a

accesa celelalte moduri, pentru a vizualiza si edita fisierul curent, copy/paste, search etc.

Pentru a schimba intre celelalte 2 moduri de operare ( Insert Mode si Last Line Mode) trebuie sa

trecem prin Command Mode. Se foloseste tasta ESC.

Modul comanda se foloseste pentru a sterge un caracter, un cuvant, un grup de cuvinte sau litere

precum si pentru a inlocui un text.

In modul command ne gasim dupa deschiderea unui fisier ( Exemplu: vim /etc/passwd) sau din

celelalte moduri apasand tasta ESC.

In timp ce ne aflam in modul comanda avem urmatoarele optiuni:

r - replace a char

x - sterge caracterul de sub cursor.

cw - change word - sterge cuvantul incepand cu litera de unde este pozitionat cursorul si ne

introduce in Insert Mode.

dd - sterge o linie (de fapt efectul este de cut, putem face paste ulterior)

7dd - sterge 7 linii

dw - sterge cuvantul de sub cursor incepand cu caracterul care se gaseste sub cursor.

u - undo

G - se duce la sfarsitul fisierului

$ - muta cursorul la sfarsitul liniei

0(zero) sau ^(carret) - muta cursorul la inceputul unei linii

:x - muta cursorul pe linia nr. x.

Exemplu: :37 - muta pe linia 37

shift+v, alt+v si ctrl+v ne introduce intr-un sub mod in care putem selecta vizual un bloc de text

sau mai multe randuri (valabil doar in VIM).

y(yank) - echivalentul lui copy din Windows

p(paste)

/(slash) - search forward.

? - search backward

Page 41: Curs Linux Cma

n - urmatoarea aparitie

N - aparitia anterioara

ZZ (z mare, z mare) - salvare cu iesiere din fisier

2. Insert Mode

Este folosit pentru a insera text in documentul curent.

Pentru a intra in Insert Mode din Command Mode se pot folosi urmatoarele taste:

i - insereaza inaintea caracterului de sub cursor

I - insereaza la inceputul unui rand

a - insereaza dupa caracterul de sub cursor

A - insereaza la sfarsitul randului

o - insereaza pe randul urmator.

3. Last Line Mode

Se foloseste pentru a salva documentul curent, pentru revenire la varianta de la ultima salvare a

fisierului sau pentru a executa diferite comenzi (text substitution, afisarea nr. de linii etc).

Pentru a intra in acest mod se foloseste : (doua puncte) din Command mode.

In Last Line mode utilizatorul are la dispozitie urmatoarele comenzi:

wq - write and quit

q! - quit fara salvare

w! - salvare fara quit

e! - undo

set nu - numeroteaza liniile

Editorul VIM foloseste fisierul de configurare ~/.vimrc si/sau ~/.exrc. Acestea pot fi modificate

pentru customizarea editorului astfel incat setarile sa ramana permanente. Daca aceste fisiere nu

exista se pot crea (fosind touch/vim), iar VIM le va folosi.

Durata: 3.20 min

Marime: 614KB

Resurse:

VIM Tutorial - PDF

O'Reilly - Learning the VI Editor, 6th Edition

YouTube - Basic VIM Tutorial

Page 42: Curs Linux Cma

4 Comenzi si Editoare » 4.2 Comenzi de baza

Comenzi de baza

In Linux exista peste 400 de comenzi folosite pentru managementul sistemului. Nu toate sunt

insa utilizate pentru taskurile zilnice ale unui administrator de sistem. Mai jos ne-am propus sa

explicam cele mai folosite comenzi din Linux. O intelegere buna a acestora este extrem de

importanta pentru a putea avansa in studiul unui sistem de operare Linux.

Important

Cunoasterea tuturor comenzilor si a tuturor optiunilor acestora este imposibila chiar si pentru cei

mai experimentati admini. Documentatia comenzilor se gaseste in man page-uri care trebuie

folosite intesiv in momentul in care se doreste aflarea efectului unei comenzi sau a unei optiuni a

comenzii.

Exemplu: man ls

pwd - Print Working Directory

Afiseaza directorul curent. Nu are optiuni sau argumente.

cd - Change Directory

Schimba directorul curent.

cd NEW_DIRECTORY - mutare in directorul NEW_DIRECTORY

.. = directorul parinte

. = directorul curent

~ = home directory

Exemplu

1. Directorul curent se schimba cu /etc/

cd /etc

2. Viitorul director curent va fi parintele directorului curent actual

cd ..

3. Directorul curent devine Home Directory al userului care executa comanda. Daca se

ruleaza comanda cd fara argumente se schimba directorul curent cu Home Directory. Cele 2

comenzi sunt echivalente

cd ~

cd

4. Directorul curent devine ultimul director in care ne-am aflat

cd - = mutare in directorul anterior

mkdir - Make Directory

Page 43: Curs Linux Cma

mkdir OPTIONS DIRECTORY

Optiuni:

-p = creaza atat directorul cat si directoarele parinte daca acestea nu exista. Daca directorul

parinte nu exista comanda mkdir returneaza eroare daca se foloseste fara optiunea -p

-v = verbose

Exemplu: mkdir /home/stud/documents/privat

ls - List

Listeaza continut director sau listare informatii despre fisier.

ls OPTIONS FILE/DIRECTORY

Detalii

mv - Move

Muta sau redenumeste (in functie de context) fisiere si directoare.

In Linux nu exista comenzi diferite pentru mutare respectiv redenumire.

mv OPTIONS SOURCE DESTINATION

Optiuni:

-f = force (do not prompt before overwriting)

-i = interactive (prompt before overwriting)

-u = update (muta doar daca sursa este mai noua ca destinatia sau destinatia lipseste)

-v = verbose

Exemplu

1. Muta fisierul file1.txt din /home/paul/ in /home/dan/ sub numele de file2.txt

mv /home/paul/file1.txt /home/dan/file2.txt

2. Redenumire director

mv /home/dan /home/andrei

cp - Copy

Copiaza fisiere sau directoare din sursa in destinatie.

cp OPTIONS SOURCE DESTINATION

Optiuni:

-i = interactiv

-p = pastreaza owner, group si permisiuni pt. fisierul destinatie creat

-r = copiaza recursiv (obligatoriu pentru directoare)

-f = force (do not prompt before overwriting)

Page 44: Curs Linux Cma

rm - Remove

Sterge fisiere sau directoare.

rm OPTIONS FILES/DIRECTORIES

Optiuni:

-i = interactiv

-r = sterge recursiv, obligatoriu pentru directoare

-f = force

Nota

Comanda rm (ca si comenzile asemanatoare din Windows) nu sterge efectiv informatia

reprezentata de fisier ci doar marcheaza inode-ul si blocurile de date catre care acesta

pointeaza ca fiind "libere pentru a fi utilizate din nou". Folosind programe speciale

informatia stearsa poate fi recuperata FOARTE USOR.

Programe cunoscute si folosite pentru investigarea unui sistem dupa compromiterea sa de

catre un Black Hat Hacker si care contin inclusiv utilitare pentru recuperarea informatiei

sterse accidental sau intentionat sunt The Sleuth Kit, Autopsy Browser si The Coroner's

Toolkit (TCT).

Important

Un fisier sau director sters folosind comanda rm nu mai poate fi recuperat in mod standard din

Recycle Bin. In Linux pentru fisierele si directoarele sterse folosind cumanda rm nu exista

Recycle Bin. Un fisier odata sters nu mai poate fi recuperat in mod conventional.

shred

Sterge securizat fisiere.

shred OPTIONS FILES

Exemplu

Suprascrie fisierul a.txt cu date aleatoare de 100 ori (optiunea -n) dupa care il sterge.

shred -vu -n 100 a.txt

touch

Creaza un fisier gol daca FILE nu exista sau reseteaza atime, mtime si ctime pentru FILE daca

acesta exista.

touch OPTIONS FILE

Detalii

cat

Page 45: Curs Linux Cma

Concateneaza si/sau afiseaza continutul unui fisier

cat OPTIONS FILES

Optiuni:

-b = no. of nonblank lines

-n = no. of output lines

Exemplu

1. Afiseaza fisierul /etc/passwd la consola

cat /etc/passwd

2. Concateneaza fisierele /etc/passwd si /etc/shadow in fisierul /home/dan/passwd-shadow

pe care il si creaza daca nu exista sau il suprascrie daca exista.

cat /etc/passwd /etc/shadow > /home/dan/passwd-shadow

more & less

Programe de paginare.

more FILE

less FILE

Detalii

head

Afiseaza primele linii (default 10) dintr-un fisier

head OPTIONS FILE

Optiuni:

-n nr = afiseaza primele 'nr' linii

tail

Afiseaza ultimele linii (default 10) dintr-un fisier

tail OPTIONS FILE

Optiuni:

-n nr = afiseaza ultimele 'nr' linii

-n +nr = afiseaza incepand cu linia 'nr'

-f = afiseaza in timp real ultimele linii dintr-un fisier. tail -f fisier este cea mai importanta

comanda pentru urmarirea modificarii in timp real a logurilor.

Exemplu

1. Afiseaza fisierul /etc/passwd incepand cu linia nr. 5 si pana la final

tail -n +5 /etc/passwd

tail -n 5 /var/log/auth.log

Page 46: Curs Linux Cma

3. Afiseaza in timp real ultimele 10 linii din fisierul cu loguri /var/log/auth.log

tail -f /var/log/auth.log

strings

Afiseaza caracterele printabile/ascii dintr-un fisier binar.

strings FILE

Exemplu: strings /bin/ls

wc

Afiseaza nr. de randuri, caractere sau cuvinte dintr-un fisier

wc OPTIONS FILE

Optiuni:

-l = nr. de linii

-w = nr de cuvinte

-m = nr de caractere

Exemplu:

1. Afiseaza nr. de useri din sistem

wc -l /etc/passwd

2. Afiseaza nr. userilor logati in sistem

who | wc -l

file

Determina tipul fisierului

file OPTIONS FILE

Optiuni:

-p = preserve atime

du - disk usage

Afiseaza marimea unui fisier sau director

du OPTIONS FILE

Optiuni:

-k = adauga prefixul KB

-s = sum (summarize)

-h = human readable format

Exemplu: du -ksh /etc/

df - disk free

Page 47: Curs Linux Cma

Afiseaza spatiul total, spatiul ocupat si spatiul liber de pe fiecare partitie de pe hard disk.

df OPTIONS

Optiuni:

-h = human readable

-i = print used/free inodes

Exemplu: df -hi

cmp - compare

Compararea a 2 fisiere fara afisarea diferentelor dintre ele.

cmp FILE1 FILE2

diff

Compara FILE1 si FILE2 dupa continut si afiseaza diferentele

diff OPTIONS FILE1 FILE2

Optiuni:

-i = case insensitive

-B = ignora liniile goale (blank lines)

-w = ignora spatiile libere (white spaces)

-c = comparare detaliata

-y = afiseaza pe coloane

stat - statistics

Afiseaza informatii despre FILE (size, type, atime, mtime, ctime)

stat FILE

history

Afiseaza comenzile din history

history OPTIONS

Optiuni:

-c = sterge comenzile din history

-d nr = sterge linia nr. din history

which

Cauta si afiseaza calea catre o comanda

which

whereis

Page 48: Curs Linux Cma

Cauta si afiseaza calea catre o comanda, man page sau sursa

whereis

uptime

Afiseaza timpul de cand hostul este pornit precum si load-ul din ultimele 1,5 si 15 minute

uptime

date

Afiseaza/modifica data

date

free

Afiseaza informatii despre RAM si SWAP

free OPTIONS

Optiuni:

-t = total

-m = MB

-k = KB

uname

Afiseaza informatii despre sistem (kernel version etc)

uname OPTIONS

Optiuni:

-a = all info

-s = kernel name

-r = kernel release

-v = kernel version

-m = machine

-p = processor

-o = operating system

Exemplu: uname -a

uname -s -r -v -m

vmstat - virtual memory statistics

Afiseaza informatii despre despre memorie, cpu, I/O blocks etc

vmstat

Page 49: Curs Linux Cma

Informatiile afisate sunt documentate in man page-ul comenzii.

ifconfig - Interface configuration

Afiseaza informatii despre interfetele de retea. Se foloseste si pentru a seta caracteristicile

interfetelor de retea (IP, Network Mask, MAC etc).

ifconfig OPTIONS INTERFACE

Exemplu

1. Afiseaza informatii despre toate interfetele (active sau inactive)

ifconfig -a

2. Afiseaza informatii doar despre interfetele active

ifconfig

3. Afiseaza informatii doar despre interfata eth0

ifconfig eth0

Nota

Pentru exemple referitoare la modul in care se pot seta parametri placii de retea folosind

comanda ifconfig cititi capitolul Configurare retea.

netstat

Afiseaza informatii despre porturile deschise precum si despre conexiunile existente.

netstat OPTIONS

Optiuni:

-t = porturile tcp

-u = porturile udp

-p = afiseaza numele programului(client sau server) care foloseste portul

-a = all

-n = afisare numerica

Exemplu: netstat -tupan

lshw

Afiseaza informatii despre hardware.

Exemplu: lshw | less

lspci

Afiseaza informatii despre dispozitivele PCI.

acpi -V

Page 50: Curs Linux Cma

Afiseaza informatii despre baterie in cazul laptopurilor.

iftop

Afiseaza informatii despre conexiunile din retea inclusiv Bandwidth. Se poate folosi si pe post de

"Bandwidth Meter". In cazul in care nu este instalat default trebuie rulat: sudo apt-get install

iftop

Exemplu: iftop -i wlan0 -B -P -n

wodim -prcap

Afiseaza informatii despre capabilitatile CD/DVD Rom.

Nota

Multe exemple din aceasta pagina au folosit fisierul /etc/passwd. Acesta este unul dintre

cele mai importante fisiere din sistem in care se gasesc utilizatorii sistemului, cate unul pe

fiecare linie, impreuna cu multe informatii despre acestia.

Page 51: Curs Linux Cma

4 Comenzi si Editoare » 4.3 Regular Expressions

Regular Expressions

O expresie regulata (regex) reprezinta o modalitate (metoda) de identificare a unui string (sir de

caractere) dintr-un text dat conform anumitor reguli. Un regex este reprezentat fizic printr-un

string format din caractere speciale.

Reguli:

1. Blocul fundamental reprezinta un singur caracter si se selecteaza pe sine

2. O expresie paranteza patrata (bracket expression) reprezinta o lista de caractere cuprinsa intre

"[" si "]" si descrie un singur caracter din acea lista.

3. Daca primul caracter este ^ (caret) descrie orice caracter care nu se gaseste in lista.

Exemplu: regex-ul [0123456789] - reprezinta o singura cifra iar [^0123456789] reprezinta orice

caracter care nu este cifra.

4. In interiorul unei expresii paranteza patrata un "range expression" reprezinta 2 caractere

separate prin -(minus) si selecteaza(identifica) orice caracter care se gaseste intre cele 2 caractere

din range expression.

5. ^ (caret) in afara parantezelor drepte reprezinta un metacaracter care identifica inceputul unei

linii (daca este primul caracter din regex).

6. $ reprezinta un metacaracter care identifica sfarsitul unei linii (daca este ultimul caracter din

regex)

Exemplu

^ab - linie care incepe cu ab

ab$ - linie care se termina cu ab

^$ - linie goala

^a[a-z0-9] - linie care incepe cu "a" urmat de orice caracter intre "a" si "z" sau "0" si "9"

7. backslash ("\") urmat de un caracter special selecteaza caracterul special respectiv. Caractere

speciale sunt: ., *, [, \ (punct, asterix, paranteza dreapta deschisa si backslash). Caracterul special

"." (punct) selecteaza orice caracter mai putin NEWLINE (linie goala)

8. "?" (semnul intrebarii) selecteaza 0 sau 1 caractere anterioare

9. * (asterix) selecteaza zero (0) sau mai multe caractere anterioare

10. + (doar pt. expresii regulate extinse) selecteaza caracterul anterior o data sau de mai multe ori

11. {n} Elementul precedent este selectat de n ori (exact)

12. {n,} Elementul precedent este selectat de n sau mai multe ori

13. {n,m} Elementul precedent este selectat de cel putin n ori dar nu mai mult de m ori

Cand folosim acolade trebuie sa le precedam cu backslash ("\")

Exemplu

1. Gasirea tuturor liniilor care contin un string de tip CNP dintr-un fisier numit file1 (se

presupune ca un CNP incepe cu 1,2 sau 7 pentru cetatenii straini rezidenti).

grep '[127][0-9]\{12\}' file1

Daca se doreste gasirea tuturor liniilor care contin DOAR string de tip CNP se foloseste "^"

pentru ancorarea regex-ului la inceput de rand si "$" pentru ancorarea regexului la sfarsit de

rand.

grep '^[127][0-9]\{12\}$' file1

2. Sa se creeze un fisier care sa contina toate fisierele si doar fisiere (de tip regular file) din

/etc eliminand liniile goale liniile care contin cuvantul 'total' sau liniile care afiseaza

directoare

ls -lR /etc/ | egrep -v '(^$|^total|^/)' > etc_content

Page 52: Curs Linux Cma

4 Comenzi si Editoare » 4.4 Comenzile find si grep

Comenzile find si grep

1. find

Comanda find cauta fisiere si directoare dupa criterii complexe in mod recursiv

find [path...] [expression]

Daca unul dintre argumente este numeric si are valoarea n se poate folosi:

+n for greater than n

-n for less than n

n for exactly n

-type f = tipul este fisier

-type d = tipul este director

-user uname = userul este uname

-group gname = grupul owner este gname

-maxdepth nr = specifica cate nivele in jos, in structura de directoare sa caute. Default este

infinit, cauta recursiv pana la ultimul subdirector

-links n = fisierul are n hard link-uri

-perm mode = permisiunile fisierului sunt exact mode (octal or symbolic).

-perm -mode = all of the permission bits mode are set for the file.

-perm +mode = any of the permission bits mode are set for the file.

-size n = marimea fisierului este n (poate fi folosit ca sufix c=bytes, b=blocuri de 512

bytes,k=kilobytes, M=megabytes, G=gigabytes).

Se poate folosi +n = mai mare decat n, -n mai mic decat n

-inum inode_number = fisierul are nr. inod inode_number

-name REGEX = cauta dupa nume folosind regular expression (vezi capitolul referitor la regular

expressions)

Exemplu

1. Cauta recursiv fisiere cu dimensiunea mai mare de 2M care-l au owner pe root

find / -size +2M -user root -type f

2. Cauta fisierele din /etc care nu-l au owner pe root

find /etc -not -user root

3. Cauta fisierele din /home/data care contin denumirea Linux in nume, 2 nivele

(subdirectoare) in jos

find /home/data -maxdepth 2 -name Linux

4. Cauta fisierele din / care au permisiunea SUID setata (alte detalii in capitolul Permisiuni

speciale)

find / -type f -perm -4000

Criteriile comenzii find sunt asociate folosind SI logic (optiunea -a care este default) si SAU

logic ( -o)

Nota

Fisierele pot fi cautate de asemenea folosind comanda locate. Aceasta comanda nu cauta

Page 53: Curs Linux Cma

direct in sistemul de fisiere ci cauta intr-un fisier de tip index care trebuie creat anterior. Pe

Ubuntu fisierul este /var/lib/mlocate/mlocate.db. Modificarea fisierelor pe hard disk

(stergere, creare de noi fisiere, redenumire) nu actualizeaza in timp real mlocate.db.

Comanda updatedb este cea care actualieaza indexul folosit de comanda locate cu situatia

reala de pe hard disk. In general comanda updatedb se ruleaza in mod automat din cron o

data pe zi. Avantajul comenzii locate este rapiditatea cu care sunt gasite fisierele, iar

dezavantajul este lipsa optiunilor complexe de cautare.

2. grep

grep [options] PATTERN [FILE...] - cauta sabloane de text (string patterns) in FILE sau in

outputul unei comenzi

-i = ignore case

-n = line number din fisierul in care a fost gasit patternul

-R = recursive

-v = invert match

-w = cauta numai cuvinte

-H = afiseaza numele fisierului in care a fost gasit pattern-ul

Exemplu

1. Cautare cuvantul 'nameserver' in toate fisierele din /etc/

grep 'nameserver' /etc/*

2. Cautare cuvantul 'root' in /etc/passwd cu afisarea numarului liniei pe care se gaseste

grep -n 'root' /etc/passwd

3. Cautarea tuturor proceselor numite httpd care ruleaza

ps -ef | grep httpd

Durata: 3.16 min

Marime: 1.04MB

Durata: 2.23 min

Marime: 731KB

Resurse:

YouTube - Grep tutorial

Page 54: Curs Linux Cma

5 Conturi de Utilizatori » 5.1 Concepte generale

Concepte generale

Conturile de utilizator permit sistemului de operare sa identifice si sa restrictioneze accesul la resurse.

Administrarea conturilor de utilizator reprezinta una dintre principalele sarcini ale unui administrator de

sistem.

In Linux sau in Unix fiecare actiune care are loc (proces care ruleaza) sau fiecare resursa de tip fisier este

controlata de un anumit utilizator.

Exista 2 categorii principale de utilizatori:

1. useri de sistem.

Fiecare daemon care ruleaza foloseste un user pentru a avea acces la resurse si pentru a executa

taskurile necesare.

Definitie

Un daemon este un proces care ruleaza in background fara interactiunea unui utilizator.

Exemplu: httpd ruleaza sub userul wwwuser si wwwgroup, sendmail ruleaza sub userul mail etc.

Important

In Linux si Unix orice proces sau daemon ruleaza cu drepturile utilizatorului care-l lanseaza in executie.

Exemplu: daca root lanseaza un proces, procesul are acces total asupra sistemului. Daca un utilizator

normal lanseaza acelasi proces, procesul va avea acces doar asupra fisierelor la care are acces

utilizatorul si in acelasi mod.

Acest concept este fundamental, iar pe el se bazeaza o mare parte din securitatea generala Linux/Unix.

2. useri persoane.

Se autentifica in general prin username si parola. Un asemenea cont de user este format din: username,

parola, home directory, mediul de lucru (environment) - $PATH, umask, shell-ul folosit etc.

Fiecare user este identificat printr-un UID. UID este in general pe 16 sau 32 de biti (intre 0 si 65535 sau 0

si 4294967295). Userul root are UID = 0.

Cu toate ca se recomanda ca UID-ul sa fie unic pentru fiecare utilizator acest lucru nu este obligatoriu.

Daca mai multi utilizatori au acelasi UID ei vor fi tratati in mod identic de catre sistem.

Userii sunt organizati in grupuri pentru a se putea seta permisiuni la nivel de grup.

Fiecare user face parte din unul sau mai multe grupuri. Exista deci pentru fiecare user un grup principal

(cel definit in /etc/passwd) si optional mai multe grupuri secundare.

Fiecare grup este identificat printr-un nr. unic numit GID.

Page 55: Curs Linux Cma

5 Conturi de Utilizatori » 5.2 Fisiere specifice

Fisiere specifice

1. /etc/passwd

Userii sistemului se gasesc in fisierul /etc/passwd.

Structura acestuia este formata din campuri separate prin ":" (doua puncte) astfel:

user_name:parola:uid:gid_principal:comentariu:home_directory:shell_default

Exemplu

stud:x:500:500:User principal:/home/stud:/bin/bash

user1:x:501:501:user folosit pentru teste:/home/user1:/bin/bash

sshd:x:71:65:SSH daemon:/var/lib/sshd:/bin/false

Daca in loc de parola in /etc/passwd este "x" parola se gaseste in fisierul /etc/shadow (hash-ul acesteia

sau criptata). Comanda pwck verifica integritatea fisierului /etc/passwd

2. /etc/shadow

Structura fisierului /etc/shadow este urmatoarea:

username:password:last_change:min:max:warn:inactive:expire

username: userul din /etc/passwd. Reprezinta legatura intre fisierul /etc/passwd si /etc/shadow

password: forma criptata a parolei sau hash-ul acesteia

last_change: nr. de zile de la 1 Ian 1970 pana in ziua in care a avut loc ultima schimbare a parolei

min: nr minim de zile intre doua schimbari succesive

max: nr maxim de zile intre doua schimbari succesive

warn: nr. de zile dinaintea expirarii parolei in care userul este avertizat

inactive: nr de zile de la expirarea parolei si pana cand contul este dezactivat

expire: nr. de zile de la 1 Ian 1970 de cand contul este dezactivat

In fisierul /etc/login.defs se gasesc informatii care vor fi folosite default in momentul in care se creaza un

user (lungimea minima a parolei, in cat timp expira contul etc).

3. /etc/group

Grupurile se gasesc in fisierul /etc/group

Structura acestuia este formata din campuri separate prin ":" (doua puncte) astfel:

group_name:parola:GUID:userii_din_acest_grup

Exemplu

programatori:x:100:dan,vali,george

root:x:0:root

Page 56: Curs Linux Cma
Page 57: Curs Linux Cma

5 Conturi de Utilizatori » 5.3 Management conturi

Management conturi

Administrarea conturilor de utilizator presupune adaugarea de noi conturi, schimbarea parametrilor

unui cont (parola, grupuri, etc), stergerea de conturi etc.

Exista 3 modalitati principale de a administra conturile utilizatorilor:

1.Editarea directa a fisierelor care contin informatii despre useri, grupuri si parole folosind editorul

preferat cum ar fi VI.

Fiesierele care trebuie modificate sunt: /etc/passwd, /etc/shadow si /etc/group

Aceasta metoda trebuie evitata fiindca poate duce la erori si deci la instabilitate.

2.Admistrarea folosind unelte grafice

Fiecare distributie de Linux are propriile utilitare.

In Fedora in KDE si GNOME: System Settings -> Users and Groups

De multe ori, in special pe calculatoare cu rol de server mediul grafic nu este instalat sau nu ruleaza. In

plus de cele mai multe ori administrarea se face remote prin ssh deci aceasta metoda nu ne este mereu

la indemana.

3.Folosind comenzi de shell in consola.

a) Pentru adaugare/modificare/stergere useri: useradd, userdel, usermod

useradd OPTIONS USER -> adauga un utilizator

-c 'comment'

-d home directory

-g grupul principal

-G grup1, ... grupN

-s shell

-u uid

-m create home dir. Daca se foloseste optiunea -k skeleton_dir, fisierele si directoarele din scheleton_dir

vor fi copiate in home, daca nu vor fi copiate cele din /etc/skel

-k skeleton_dir (doar impreuna cu -m)

Exemplu

useradd -c 'dan programator' -d /home/dan -m -g programatori -G users,office -s /bin/bash -u 7878

dan

userdel -r USER -> sterge un user si grupul principal corespunzator (daca nu mai exista useri in acel

grup).

Optiunea -r se refera la faptul ca va fi sters si home directory.

passwd USER -> modifica parola utilizatorului user

Page 58: Curs Linux Cma

usermod USER -> modifica datele unui user. Command usermod foloseste aceleasi optiuni ca si useradd

Exemplu

usermod -c 'dan contabilitate' -d /home/dan2 -m -g contabilitate -G users,office -s /bin/bash -u 80

dan

b) Pentru adaugare/stergere/modificare grupuri: groupadd, groupdel, groupmod

Exemplu

groupadd programatori

groupdel programatori

groupmod -n profesori programatori - schimba denumirea grupului programatori in profesori.

Unui grup i se poate seta o parola folosind comanda gpasswd.

Exemplu: gpasswd programatori

Aceasta este ceruta in momentul in care un utilizator doreste sa ruleze un shell (sa devina parte a unui

grup pentru a avea permisiunile grupului respectiv) cu un alt GUID folosind comanda:

newgrp NOUL_GROUP.

Modificare owner/grup owner pentru un fisier sau director

Fiecare fisier sau director are un owner si un grup owner. Acestea fac parte din structura inodului unui

fisier respectiv director. Default ownerul unui fisier este userul care-l creaza, iar grupul owner al

fisierului este grupul principal al userului care creaza fisierul sau directorul.

Exemplu: Daca userul dan creaza un fisier numit a.txt, fisierul il va avea owner pe dan, iar grupul owner

al fisierului va fi grupul principal din care face parte dan. Pentru a schimba ownerul si grupul owner al

unui fiser/director se foloseste comanda chown si chgrp. root este singurul user care poate modifica

ownerul respectiv grupul owner pentru fisiere si directoare.

Exemplu

1. Schimba ownerul fisierului a.txt in paul

chown paul a.txt

2. Schimba grupul owner al directorului /home/programe in programatori

chgrp programatori /home/programe

3. Se schimba in mod recursiv atat ownerul cat si grupul owner al directorului /home/programe in

dan respectiv programatori. Modul recursiv se refera la schimbarea ownerului si grupului atat

pentru director cat si pentru toate subdirectoarele si fisierele continute de acesta. Acest mod de

folosire al comenzii chown face ca comanda chgrp sa fie folosita extrem de rar in practica.

Page 59: Curs Linux Cma

chown -R paul.programatori /home/programe

Important

Atentie! Intre grupul owner al unui fisier si grupul principal sau grupurile secundare ale ownerului

fisierului nu exista legatura. Un fiser poate sa-l aiba ca owner pe userul dan, ca grup owner sa apartina

grupului programatori fara ca dan sa faca parte din grupul programatori

Page 60: Curs Linux Cma

5 Conturi de Utilizatori » 5.4 su & sudo

su & sudo

Odata logat in sistem un user poate "deveni" un alt user folosind comanda su (substitute user) care

porneste un nou shell cu UID si GID noului user. Urmatoarele comenzi vor fi executate cu UID si GUID

userului nou adica cu permisiunile acestuia.

Nota

In Ubuntu userul root este dezactivat default, in sensul ca nu este permisa logarea acestuia in

sistem (inclusiv 'devenirea' root prin executarea comenzii su). Activarea userului root presupune

setarea acestuia a unei parole:

sudo su -> se introduce parola userului neprivilegiat creat la instalare passwod root -> se seteaza

userului root parola

Din acest moment putem 'deveni' root executand comanda su ca user neprivilegiat si introducand

parola de root.

su [-] [username]

caracterul "-" are ca efect imprumutarea mediului de lucru (environment) al noului user.

Apar in acest moment 2 noi concepte: RUID (Real User ID) ca fiind UID-ul utilizatorului care s-a logat

initial in sistem si EUID (Effective User ID) ca fiind UID-ul utilizatorului devenit in urma rularii comenzii

su.

Pentru a vizualiza RUID se foloseste comanda who am i, iar pentru a vizualiza EUID se foloseste comanda

whoami sau id

Nota

Se poate configura ce useri au dreptul sa devina root folosind su. Din pdv al securitatii sistemului

este esential sa permitem numai catorva useri sa poata deveni root (chiar daca si altii stiu parola ei

nu pot deveni root).

Exemplu

Se editeaza fisierul /etc/pam.d/su astfel:

auth sufficient /lib/security/$ISA/pam_wheel.so trust use_uid

auth required /lib/security/$ISA/pam_wheel.so use_uid

Page 61: Curs Linux Cma

Prima linie specifica faptul ca este suficient ca un user sa faca parte din grupul wheel pentru a

deveni root. Acesta devine root fara a i se mai cere parola.

A doua linie specifica faptul ca doar userii care fac parte din grupul wheel vor putea deveni root.

Alti useri chiar daca cunosc parola de root nu pot deveni root prin folosirea comenzii su.

Numai una dintre cele 2 linii poate sa apara in fisier. Pentru a comenta o linie se foloseste

caracterul # (diez).

Important

Un principiu de baza in Linux este ca userul root nu trebuie folosit in mod curent. Administratorul

trebuie sa se logheze folosind un user neprivilegiat iar in momentul in care are nevoie de executia unui

task ce necesita drepturi de root, acesta "devine" root folosind comanda su. Altfel sunt introduse grave

probleme de securitate care pot duce la rezultate distructive pentru intreg sistemul.

sudo reprezinta o alta modalitate de a executa comenzi cu drepturi de root fara a fi root sau a cunoaste

parola de root necesara devenirii root folosind comanda su.

Modul de folosire al comenzii sudo este: sudo command

Commanda command este executata cu drepturi de root.

In Ubuntu doar userii care fac parte din grupul numit admin pot rula comenzi cu permisiuni de root

folosind sudo. Initial doar userul care a fost creat la instalarea sistemului face parte din grupul admin.

Exemplu

Toate exemplele de mai jos sunt rulate de useri neprivilegiati dar cu drepturi de root

1. Instalarea unui program pe Ubuntu folosind apt-get

sudo apt-get install k3b

2. Configurarea parametrilor placii de retea precum IP si Network Mask

sudo ifconfig eth0 192.168.0.1 netmask 255.255.255.0

Nota

Modalitatea de a executa comenzi cu drepturi de root folosind sudo este folosita intensiv pe

anumite distributii de Linux si mai putin pe altele. Distributiile bazate in mod intensiv pe folosirea

comenzii sudo sunt cele derivate din Debian precum Ubuntu, Kubuntu, Knoppix etc. Pe alte

distributii precum cele bazate de RedHat sau Slackware, Gentoo etc se obisnuieste rularea de

comenzi cu drepturi de root dupa ce in prealabil userul neprivilegiat a devenit root folosind

comanda su

Page 62: Curs Linux Cma

5 Conturi de Utilizatori » 5.5 Monitorizare useri

Monitorizare useri

Aceasta sarcina a administratorului de sistem presupune monitorizarea logarilor in sistem sau

vizualizarea userilor logati la un moment dat (prezent sau trecut).

Se folosesc urmatoarele comenzi:

1) who - afiseaza userii logati in sistem la momentul prezent.

Comanda afiseaza informatia sub forma tabelara in urmatorul mod:

username terminalul de unde s-a logat data logarii

Optiuni:

-H - afiseaza un header pentru a interpreta mai usor output-ul

-q - afiseaza nr. userilor logati

Exemplu

# who

stud :0 2007-01-30 09:32

root tty2 2007-01-30 11:35

dan pts/0 2007-01-30 11:33 (:0.0)

dan pts/1 2007-01-30 11:35 (:0.0)

Important

Comanda who afiseaza RUID adica userul logat initial in sistem.

2) w - afiseaza cine este logat in sistem si comanda curenta a fiecarui user.

Pe prima linie se afiseaza: data curenta, uptime, nr user logati si "system load" pt. ultimele 1, 5 si 15

minute.

Informatii despre userii logati se gasesc in fisierul /var/run/utmp (informatii despre utilizatorii logati in

acel moment) si /var/log/wtmp (informatii despre istoria logarii in sistem)

3) last - afiseaza informatii din /var/log/wtmp in ordine cronologica inversa.

Page 63: Curs Linux Cma

Logurile se rotesc periodic. Pentru a vizualiza inregistrarile dintr-un fisier wtmp mai vechi precum

/var/log/wtmp.3 se foloseste optiunea -f

Exemplu: last -f /var/log/wtmp.3

Optiuni:

-n nr = nr. de linii afisate

nume_terminal = logarile de la terminalul specificat

Exemplu: last pts/2

4) lastlog - afiseaza inregistrarile din /var/log/lastlog (ultimele logari in sistem pentru fiecare user)

Optiuni:

-u user = lastlog doar pentru userul user

Page 64: Curs Linux Cma

6 Sistemul de permisiuni » 6.1 Concepte generale

Concepte generale

Sistemul de fisiere in Linux imparte in mod standard utilizatorii in 3 categorii:

a) owner (proprietarul fisierului). By default (implicit) un fisier nou creat primeste ca owner creatorul

sau. Owner-ul are drepturi totale asupra fisierului, poate sa-l stearga, sa-l modifice sau sa-i schimbe

proprietatile.

Exemplu: Daca userul numit dan creaza un fisier nou numit raport.pdf, ownerul fisierului va fi userul dan

b) group (grupul proprietar al fisierului). Folosind grupul care detine fisierul se pot seta drepturi pentru

un nr. mai mare de utilizatori. By default un fisier nou creat primeste ca grup owner, grupul principal al

userului care-l creaza.

Exemplu: Daca userul dan are grupul principal numit contabili, fisierele create de acesta vor avea ca

owner pe dan, iar ca grup owner contabili.

c) others (ceilalti sau restul lumii). Toti utilizatorii care nu fac parte din cele 2 categorii.

Nota

Conceptele referitoare la owner si group owner mai sus mentionat sunt adevarate atat pentru

fisierele nou create cat si pentru directoarele nou create.

Fiecare dintre cele 3 categorii detine independent urmatoarele drepturi asupra unui fisier sau director:

a) r (read) - dreptul de citire

b) w (write) - dreptul de scriere

c) x (execute) - dreptul de executie

Aceste drepturi au efecte diferite in functie de tipul fisierului (fisier normal sau de tip director).

Permisiune Fisier Director

read dreptul de citire al

continutului fisierului dreptul de a afisa continutul directorului

write dreptul de modificare al

continutului fisierului

dreptul de a modifica continutul directorului(stergere, creare,

redenumire fisiere/directoare continute in director) impreuna

cu x

execute dreptul de a executa

fisierul acces la fisierele continute. dreptul de a ne muta in director.

Page 65: Curs Linux Cma

Nota

Daca un director contine dreptul de scriere ( w) pentru o anumita categorie de user ( owner, group

sau other), acea categorie are dreptul de a sterge/modifica continutul directorului doar daca exista

si dreptul de executie pentru director.

Exemplu

1. Daca un director are pentru owner permisiunile de read(r) si write(w) dar nu si execute(x),

owner-ul nu va putea crea noi fisiere in director, nu va putea sterge continutul directorului si nu se

va putea muta in director. Motivul este lipsa permisiunii execute pentru director.

Page 66: Curs Linux Cma

6 Sistemul de permisiuni » 6.2 Permisiuni speciale

Permisiuni speciale

In afara permisiunilor standard (read, write si execute) exista urmatoarele permisiuni speciale:

1) SUID (setuid).

Reprezinta o permisiune speciala pentru fisierele executabile.

Important

In Linux un fisier executabil are aceleasi drepturi ca si userul care il executa. Setand bit-ul SUID, la

executare fisierul are drepturile owner-ului si nu al celui care il executa.

Fisierele cu SUID setat si cu owner root reprezinta o grava problema de securitate. Oricine le poate

executa, iar in urma executiei procesul creat va avea drepturi de root.

Exemplu

1. Comanda rm este reprezentata fizic prin fisierul executabil /bin/rm care are drept owner pe

root. In momentul in care root executa comanda rm efectul este ca aceasta comanda are

drepturile lui root si poate sterge orice fisier din sistem. Daca un alt user executa comanda rm,

efectul este ca aceasta comanda va avea drepturile userului care a executat-o si deci nu va putea

sterge niciun fisier important.

In schimb daca se seteaza permisiunea SUID pentru fisierul /bin/rm, orice user non-root care

executa comanda rm va putea sterge ORICE fisier din sistem. Acest lucru se intampla fiindca

comanda rm are drepturile ownerului adica root si nu drepturile celui care o executa cum este

default.

2. User neprivilegiat care poate vizualiza fisierul /etc/shahow fiindca comanda less are SUID setat

Comanda ls -l afiseaza pentru fisierele cu SUID setat "s" (s mic) pe pozitia dreptului de executie pentru

owner daca fisierul are dreptul de executie pt. owner sau "S" (s mare) daca fisierul nu are dreptul de

executie pentru owner.

2) SGID (setgid).

Reprezinta o permisiune speciala care are efecte diferite daca se aplica unui fisier sau unui director.

Cand se aplica unui fisier, daca fisierul este executabil, procesul creat in urma executiei fisierului va rula

cu drepturile grupului care detine fisierul si nu cu grupul primar al userului care executa fisierul.

Page 67: Curs Linux Cma

Aceasta permisiune ( SGID) este folosita mai ales pentru directoare si anume pentru a crea directoare

"shared".

Fisierele noi create in interiorul directorului vor avea ca grup care le detine grupul directorului si nu al

userului care le creaza cea ce se intampla default.

Comanda ls -l afiseaza pentru fisiere cu SGID setat "s" (s mic) pe pozitia dreptului de executie pentru

grup daca fisierul sau directorul are dreptul de executie pt. grup sau "S" (s mare) daca fisierul sau

directorul nu are dreptul de executie pentru grup.

3) Sticky bit.

Se foloseste pentru directoarele "world writeable" si are rolul de a preveni posibilitatea stergerii

continutului acestora de catre useri altii decat ownerul directorului cu sticky bit setat sau ownerul

fisierului din acel director, chiar daca drepturile directorului ar permite acest lucru (rwx).

Exemplu: /tmp

Nota

Root face exceptie, iar grupul fisierului se supune regulii (nu poate modifica).

Aplicatie: Sticky Bit se foloseste in momentul in care se doreste crearea unui director world writeable

(toate permisiunile pentru toti userii), dar cu protejarea continutului. Fara sticky bit orice user poate

crea fisiere in director, dar poate si sterge fisierele create de alti useri. Daca directorul are sticky bit,

fiecare user are dreptul sa stearga doar propriile fisiere.

Comanda ls -l afiseaza pentru directoarele cu sticky bit setat "t" (t mic) pe pozitia dreptului de executie

pentru other daca fisierul are dreptul de executie pentru other sau "T" (t mare) in rest.

Page 68: Curs Linux Cma

6 Sistemul de permisiuni » 6.3 Modificare permisiuni

Modificare permisiuni

Pentru a modifica drepturile de acces ale unui fisier se foloseste comanda chmod (change mode) cu

urmatoarea sintaxa:

chmod [OPTION]... MODE... FILES

Exista doua posibilitati de setarea a drepturilor de acces:

1) Modul simbolic (relativ)

Trebuie avute in vedere urmatoarele:

a) ale cui drepturi se modifica (u pentru owner, g pentru group, o pentru other, a pentru all)

b) ce presupune modificarea (+ (plus) pentru adaugare, - (minus) pentru eliminare, = (egal) pentru

setare indiferent de permisiunile deja existente)

c) ce permisiuni se modifica (r pentru read, w pentru write, x pentru execute, s pentru setuid/setgid si t

pentru sticky bit)

Exemplu

1. Pentru fisierul /home/stud/orar.doc se modifica drepturile de acces astfel: pentru owner se

aduga r,w si x, pentru grup se adauga r si w, iar pentru o se adauga r. Totul este relativ la drepturile

avute deja.

chmod u+rwx,g+rw,o+r /home/stud/orar.doc

2. Pentru fisierul /home/stud/test_conexiune_internet.sh se modifica drepturile de acces astfel:

pentru owner si group se adauga dreptul de executie iar pentru other se elimina toate drepturile.

chmod ug+x,o-rwx /home/stud/test_conexiune.sh

3. Se seteaza sticky bit pentru directorul /home/stud/tmp

chmod +t /home/stud/tmp

Totul este relativ la permisiunile deja existente.

2. Modul octal (absolut)

Se folosesc 4 cifre in baza 8 (intre 0 si 7) in mod pozitional astfel: pentru fiecare grupa de permisiuni (u, g

si o) in functie de existenta sau lipsa unei permisiuni specific se aduna o cifra conform cu puterea lui 2

corespunzatoare acelei pozitii. Lipsa unei permisiuni se marcheaza cu semnul "-" (minus).

Exemplu

r w - r - x r - -

Page 69: Curs Linux Cma

4 2 0 4 0 1 4 0 0

Permisiune fisier = 654

Prima cifra din cele 4 reprezinta biti speciali care se pot seta ( SUID, GUID si Sticky bit). Daca este zero

reprezinta lipsa lor. Daca se omite se considera zero ( Exemplu: permisiunea 654 este de fapt 0654).

Pentru prima cifra se poate folosi:

1 pentru sticky bit

2 pentru SGID

4 pentru SUID

Exemplu

Echivalenta dintre modul relativ si absolut:

rwx rwx rwx = 0777

Exemplu: chmod 0777 /home/stud/a.txt

r-- --- --- = 0400

Exemplu: chmod 0400 /home/stud/b.txt

rwS rw- r-x = 4665

Exemplu: chmod 4665 /home/stud/c.txt

rw- r-s rwx = 2657

Exemplu: chmod 2657 /home/stud/d.txt

Page 70: Curs Linux Cma

6 Sistemul de permisiuni » 6.4 Umask

Umask

Conceptul de umask se foloseste pentru a stabili modul default de permisiuni cu care este creat un

director sau fisier.

By default fisierele au permisiunile 0666(rw- rw- rw-) iar directoarele 0777(rwx rwx rwx). Pentru a

modifica modul default de permisiuni se foloseste umask in urmatorul mod: din valoarea default se

scade umask (pozitional), rezultand modul in care vor fi create fisierele in ceea ce priveste permisiunile.

Exemplu

daca umask este 0002 noile fisiere create vor avea permisiunile 0664 iar directoarele 0775

daca umask este 0022 noile fisiere create vor avea permisiunile 0644 iar directoarele 0755

Fiecare user are propria valoare pentru umask. umask se seteaza per user.

Se vizualizeaza cu comanda: umask.

Pentru a modifica umask se foloseste comanda umask NOUA_MASCA ( Exemplu: umask 0222).

NOUA_MASCA poate fi reprezentata octal sau simbolic.

Nota

Umask nu trebuie schimbata decat in situatii deosebite. Modificarea umask poate duce la

instabilitatea intregului sistem.

Nota

Odata modificat umask, noua valoare nu se pastreaza decat pana la urmatorul restart. Pentru ca

modificarea umask sa fie permanenta se scrie comanda de modificare a umask intr-un fisier de

initializare al environment-ului utilizatorului precum ~/.bashrc.

Page 71: Curs Linux Cma

6 Sistemul de permisiuni » 6.5 Atribute speciale

Atribute speciale

Sistemele de fisiere extinse precum ext3 folosesc pe langa permisiunile clasice si cateva atribute speciale

pentru fisiere si directoare.

Pentru setarea acestora se foloseste comanda chattr

chattr ATRIBUT FISIER

-i = immutable (nu poate fi sters sau modificat)

-A = nu actualizeaza atime

-R = modifica atributele speciale recursiv pentru directoare

-a = just append

Exemplu:

chattr +i a.txt

chattr -a a.txt

Pentru vizualizare atribute se foloseste comanda lsattr

-R = listeaza recursiv continutul directorului

-d = listeaza atributele directorului in loc de continutul acestuia

-a = listeaza atributele fisierelor ascunse

Exemplu: lsattr a.txt

Page 72: Curs Linux Cma

7 Procese » 7.1 Concepte generale

Concepte generale

Una dintre sarcinile kernelului este si alocarea resurselor (RAM, CPU etc) diferitelor aplicatii.

Definitie

Un proces reprezinta unitatea elementara de alocare a resurselor in sistem si ruleaza in propriul sau

spatiu de memorie.

In momentul in care se executa o comanda este creat un nou proces. Parintele acelui proces este shell-ul

curent. Imaginea procesului reprezinta programul care se executa si care se incarca in memoria RAM.

Exista diferente intre un program si un proces. Acelasi program poate genera mai multe procese diferite.

Exemplu: deschiderea simultana a editorului VI sau folosirea de mai multi useri a comenzii ls.

Nota

Procesoarele (exceptie cele dual-core sau cu mai multe nuclee) executa un singur proces la un

anumit moment dat. Fiecare primeste un anumit slot de timp in care poate folosi procesorul, apoi

ofera posibilitatea altui proces de a folosi CPU. Astfel este creata senzatia de executie simultana.

Important

Fiecare proces care se executa are anumite drepturi asupra sistemului si anume drepturile userului care

l-a executat (user de sistem sau persoana). Un proces pornit de root are drepturile lui root (totale), iar

acelasi proces pornit de un user normal are drepturile userului (limitate). Exceptie fac programele care

au SUID sau GUID setat. Acestea pleaca cu drepturile ownerului sau grupului owner si nu ale celui care le

executa.

Exista comenzi care sunt incluse in shell si care nu se gasesc ca programe independente (fisiere

executabile)

Exemplu: cd, jobs, alias, umask, ulimit, echo etc

Acestea nu creaza un nou proces cand se executa.

Page 73: Curs Linux Cma

7 Procese » 7.2 Caracteristici procese

Caracteristici procese

1. Sistemul de operare foloseste functia de sistem fork() pentru a crea noi procese. Prima etapa este

crearea unui proces identic cu parintele sau (aceleasi resurse, drepturi, practic se creaza o copie identica

a parintelui). Ulterior procesul nou creat "urmeaza propriul sau drum" adica modifica datele primite de

la parinte pentru a executa propria sarcina.

2. Fiecare proces are un parinte, cel care l-a creat. Exceptie face procesul init.

3. Procesele sunt identificate dupa un nr. unic pentru intreg sistemul numit PID (Process ID).

4. Parintele fiecarui proces este identificat cu un PPID (Parent Process ID).

5. Procesul init este primul care porneste la butarea sistemului si are PID = 1. Init se mai numeste si

parintele tuturor proceselor.

6. Un proces dureaza din momentul in care este creat de parintele sau si pana cand programul executat

de proces se termina iar rezultatul procesului este intors parintelui. In acest moment parintele comunica

Kernelului sa elibereze resursele alocate procesului.

Starile unui proces

Un proces se afla in urmatoarele stari de la nastere (fork()) si pana la terminarea sa.

a) created

Reprezinta etapa in care procesul este creat si asteapta permisiunea schedulerului pentru starea ready.

b) ready (waiting sau runnable)

Procesul a fost incarcat in memorie si asteapta executia procesorului. Exista mai multe procese care se

gasesc simultan in aceasta stare.

c) blocking (sleeping)

Procesul este blocat din cauza unei resurse inaccesibile (fisier, variabila de tip semafor, device). Este

sters din lista de asteptare pentru a fi executat de procesor. Daca resursa se elibereaza procesul intra in

starea "ready".

d) running (active sau executing)

Procesul este executat de procesor in acest moment. Daca isi depaseste slice-ul (timpul) alocat pentru

executie va trece din nou in starea ready.

e) terminated

Un proces intra in aceasta stare fie din starea running daca a terminat executia sau daca este omorat

(killed) printr-un semnal. Daca nu este sters din memorie devine zombie. Daca procesul are copii, acestia

sunt preluati de init.

f) suspended and waiting

Reprezinta procesele care au fost indepartate din memoria principala si duse in memoria de tip swap.

g) suspended and blocked

Reprezinta procesele care se gasesc in memoria de tip swap in starea de suspendare.

Page 74: Curs Linux Cma

Atributele unui proces

Un proces detine urmatoarele atribute:

a) PID -> Process ID - identificatorul unic al unui proces

b) PPID -> Parent Process ID - identificatorul parintelui procesului

c) UID -> User ID - Identificatorul userului sub care ruleaza procesul

d) GUID -> Group ID - Identificatorul grupului sub care ruleaza procesul

e) Prioritate

Page 75: Curs Linux Cma

7 Procese » 7.3 Categorii de procese

Categorii de procese

In Linux exista urmatoarele categorii de procese:

1. Parinte (parent)

Fiecare proces poate genera un alt proces si devine parinte. In afara procesului init fiecare proces are un

parinte.

2. Copil (child)

In momentul in care procesul copil se executa, parintele intra in starea de sleeping pana cand copilul

termina executia. Daca copilul se executa in background parintele intra/ramane in starea ready.

3. Daemon

Reprezinta un proces care ruleaza in background.

4. Orfan (orphan)

Reprezinta procesele ale caror parinti au intrat in starea terminated inaintea lor. Sunt preluate automat

de init, parintele tututor proceselor.

5. Zombie (defunct)

Reprezinta procesele care au terminat executia dar nu sunt sterse din tabela de procese. Nu pot fi

terminate in modul conventional (folosind comanda kill) ci doar de catre procesul parinte sau init daca

procesul parinte termina executia.

In general zombie nu fac rau sistemului fiindca nu consuma resurse.

Page 76: Curs Linux Cma

7 Procese » 7.4 Comenzi vizualizare

Comenzi vizualizare

1. ps (process status) - afisarea tabelara a listei de procese

Optiuni:

fara optiuni = afiseaza procesele pornite din terminalul curent

-e (sau A) = toate procesele tuturor userilor

-f = full description

-u user = doar procesele userului user.

--forest = afiseaza arborescent

Fiindca de cele mai multe ori lista de procese nu incape pe un ecran, comanda ps se foloseste in

combinatie cu grep sau less.

Exemplu

ps -ef

ps -ef | grep init

ps -u stud -f | less

ps aux | grep sshd

2. pstree - afisare arborescenta a proceselor

-a = afisarea argumentelor liniei de comanda

-c = afisare decompactata a sub arborilor

-h = sublinierea procesului curent si a parintilor acestuia

-p = afisare PID

Exemplu: pstree -ahp

3. pgrep - afiseaza procesele care ruleaza, cautandu-le dupa nume.

-l = afiseaza si numele procesului nu doar PID-ul

-u username = afiseaza procesele detinute de username (EUID)

Exemplu: pgrep -l -u root,stud sshd

4. top = afisarea in timp real a proceselor cu optiuni diverse de ordonare dupa diferite criterii

Optiuni:

-c = afisarea comenzii complete.

-p PID = afiseaza doar procesul cu PID

-d ss.tt (seconds.tenths)= refresh la fiecare secunda.zecime (sunt permise numere mai mici ca 1)

-u username = doar procesele care ruleaza sub username.

Exemplu: top -d 0.3 = refresh la fiecare 3 zecimi de secunda.

In timpul operarii putem apasa urmatoarele taste:

h sau ? = vizualizam un help pentru top

q = quit

Page 77: Curs Linux Cma

f = selectarea campurilor care vor fi afisate

o(o mic) = selectarea ordinii de afisare

O(O mare) = selectarea campului de sortare

d = insert delay refresh

u = afisarea proceselor doar pentru un user.

k = trimite un semnal unui proces.

Semnificatia celor mai importante coloane afisate de top:

PID = process id

PPID = parent process id

USER = utilizatorul sub care ruleaza procesul

PR = prioritatea procesului

NI = NICE = valorile negative reprezinta o prioritate mai mare, iar cele pozitive o prioritate mai mica.

RES = Resident Size = Cantitatea de memorie non-swap (kb) folosita

VIRT = Virtual Image (Swap + Res)

SHR = Shared Memory - memoria shared folosita. Acest tip de memorie poate fi impartita intre mai

multe procese.

S = Process Status

Statusul unui proces poate fi

D = uninterruptible sleep

R = running

S = sleeping

T = stopped

Z = zombie

%CPU = procentul din timpul CPU folosit de la ultima afisare

%MEM = procentul din memorie folosit

TIME

COMMAND

Nota

Tasks shown as running should be more properly thought of as 'ready to run' -- their task_struct is

simply represented on the Linux run-queue. Even without a true SMP machine, you may see

numerous tasks in this state depending on top's delay interval and nice value. SMP = Symetric

multiprocessing (multiprocessor computing)

http://en.wikipedia.org/wiki/Symmetric_multiprocessing

Sortarea dupa un camp afisat de top:

b = toggle on/off - afecteaza daca top va arata boldat coloanele dupa care se sorteaza si procesele

running.

x = afiseaza boldat coloana de sortare

y = afiseaza boldat randurile care reprezinta procesele "running" sau "ready to run"

Pentru a modifica campul de sortare se apasa "O" (o mare) si se alege campul corespunzator. Se poate

trece dintr-un camp in altul cu "<" si ">"

Shortcuts:

M = sort by memory

Page 78: Curs Linux Cma

P = sort by processor

R = schimba modul de ordonare (crescator, descrescator).

Pentru a salva modificarile facute: W (salveaza in ~/.toprc)

Exista si comanda htop care ofera o reprezentare grafica mai atragatoare, dar nu exista de cele mai

multe ori si trebuie instalata (apt-get install htop).

5. nice

Pentru a modifica prioritatea unui proces se foloseste comanda nice (default +10)

Exemplu:

nice -n -20 sort nr.txt = prioritate maxima

nice -n +19 top = prioritate minima

Nota

1. Valori negative pentru nice pot setate doar de superuser.

2. Varianta 'nice -NR comanda' se considera obsolete si nu se mai recomanda a fi folosita. Exemplu:

nice -10 ls

Page 79: Curs Linux Cma

7 Procese » 7.5 Comunicatia dintre procese / Semnale

Comunicatia dintre procese / Semnale

In Linux si Unix procesele comunica prin doua modalitati principale:

1 Pipes (conducte)

Procesele pot comunica prin canale speciale numite pipes. Un proces trimite informatie pe acest canal

care va fi folosita de celalalt proces. Sincronizarea este posibila fiindca in momentul in care un proces

doreste sa citeasca dintr-o conducta goala este blocat pana cand exista date disponibile.

Example: sort < numere.txt | head

Comanda sort ordoneaza fisierul numere.txt care reprezinta inputul sau. Outputul comenzii sort in loc sa

fie redirectat catre standard output este conectat la o conducta (care exista doar pe durata executiei

comenzilor) care transmite datele ca input comenzii head. Daca conducta "se umple", sort asteapta ca

head sa folosesca si sa indeparteze informatia din conducta.

Procesele pot comunica si folosind conducte de tipul named pipes sau domain named sockets.

Nota

Exemplu de procese care folosesc sockets pentru comunicare:

Procesul server de e-mail comunica printr-un socket cu procesul antivirus si printr-un alt socket cu

procesul care verifica daca un e-mail este spam. Astfel e-mailul este transmis prin socket intre

aceste procese, fiecare actionand intr-un anumit mod.

2. Intreruperi software (Semnale)

O alta modalitate de comunicare dintre procese este prin semnale sau intreruperi software. Exista

intreruperi software care pot fi ignorate de procese sau care nu pot fi ignorate.

Exista multe semnale in Unix (de ordinul sutelor).

Dintre acestea cateva mai importante sunt:

Signal Name Number Description

SIGHUP 1 Hangup (POSIX)

SIGINT 2 Terminal interrupt (ANSI) - CTRL + C

SIGQUIT 3 Terminal quit (POSIX)

SIGILL 4 Illegal instruction (ANSI)

Page 80: Curs Linux Cma

SIGKILL 9 Kill(can't be caught or ignored) (POSIX)

SIGALRM 14 Alarm clock (POSIX)

SIGTERM 15 Termination (ANSI)

SIGCONT 18 Continue executing, if stopped (POSIX) (bg %jobid)

SIGSTOP 19 Stop executing(can't be caught or ignored) (POSIX)

SIGTTIN 21 Background process trying to read, from TTY (POSIX) - (Ctrl + Z)

SIGTTOU 22 Background process trying to write, to TTY (POSIX)

SIGIO 29 I/O now possible (4.2 BSD)

SIGPWR 30 Power failure restart (System V)

Procesele pot ignora, bloca sau "prinde" toate semnalele cu exceptia SIGSTOP si SIGKILL. Daca un

process "prinde" un semnal inseamna ca include cod care va actiona corespunzator la primirea

semnalului. Daca semnalul nu este "prins" de proces, kernelul va executa actiunea default.

Pentru a trimite un semnal in mod expres unui proces se foloseste comanda kill . Aceasta primeste ca

argument PID-ul procesului si tipul de semnal pe care sa-l trimita (default trimite SIGTERM(15)).

SIGTERM se numeste si soft-kill iar SIGKILL se numeste hard-kill. Un proces poate ignora semnalul 15 dar

nu si semnalul 9. La primirea semnalului 15 (daca nu este ignorat) sau 9 procesul trebuie sa intre in

starea terminated.

Nota

Trimiterea semnalului SIGKILL (9) lui init nu are niciun efect.

Comanda pkill primeste ca argument numele comenzii care ruleaza in procesul caruia ii va trimite

semnalul.

Comanda killall se foloseste pentru a trimite semnale tuturor proceselor care ruleaza sub acelasi nume.

Diferenta intre pkill si killall este ca pkill primeste ca argument doar o parte din numele procesului, iar

killall primeste ca argument intreg numele.

Pentru a specifica semnalul trimis se poate folosi codul numeric al semnalului sau numele acestuia.

Exemplu

Page 81: Curs Linux Cma

#ps -ef | grep bash

root 13162 13158 0 11:59 pts/1 00:00:00 -bash

root 13403 13400 0 12:19 pts/2 00:00:00 -bash

#kill -15 13162

sau

#kill -SIGTERM 13162

sau

#pkill bash

sau

#killall bash

Aplicatii:

1) sa se trimita procesului reprezentat de comanda sleep 100 semnalul corespunzator combinatiei Ctrl+Z

2) sa se trimita procesului reprezentat de comanda sleep 50 semnalul corespunzator combinatiei Ctrl+C

Nota

Pidul unui proces care ruleaza poate fi aflat folosind comanda pidof. Exemplu: pidof init

Page 82: Curs Linux Cma

7 Procese » 7.6 Job Control

Job Control

Job control se refera la posibilitatea de a opri/suspenda executia unui proces si repornirea sa la un

moment ulterior.

Pentru a rula o comanda in background se foloseste "&" la sfarsitul comenzii.

Exemplu: updatedb &

Fiecare job care ruleaza in background primeste un id (incepand cu 1). Comanda jobs afiseaza toate

aceste id-uri sub forma [1] 25647. Primul nr. reprezinta Job ID iar cel de-al doilea Process ID.

Daca sunt mai multe joburi in background, semnul "+" identifica job-ul care va fi utilizat ca default in

cazul comenzilor bg si fg, iar semnul "-" identifica job-ul care devine default daca job-ul curent termina

executia.

Exemplu

fg %job_id - aduce in foreground un job din background.

bg %job_id - porneste in background un job suspendat cu Ctrl+Z

La inchiderea terminalului acesta primeste semnalul SIGHUP. Toate procesele pornite din terminal

primesc la randul lor semnalul SIGHUP.

Comanda nohup este folosita cand se doreste ca un proces sa nu reactioneze la primirea semnalului

SIGHUP (hangup). La inchiderea terminalului, parintele (bash) intra in starea terminated si procesul este

preluat de init.

Exemplu: nohup comanda &

Exemplu

Se porneste un proces dintr-un terminal in mod normal (fara nohup) in foreground. Se doreste

inchiderea terminalului astfel incat procesul sa isi continue executia.

#wget -c http://download.fedoraproject.org/.../i386/iso/Fedora-8-i386-DVD.iso

#Ctrl+Z

#jobs

#bg %jobid

#disown -h %jobid

Page 83: Curs Linux Cma

8 Backup si Cron » 8.1 Backup » 8.1.1 Strategii de backup

Strategii de backup

Introducere

Pentru orice afacere datele reprezinta una dintre cele mai importante resurse, o resursa strategica fara

de care firma respectiva nu poate exista.

Toata activitatea unei societati se afla pe hard disk-ul computerelor. O defectiune a acestora, un

incendiu sau o inundatie este echivalenta cu pierderea datelor si chiar cu falimentul companiei

respective.

Nimeni nu-si poate imagina astazi o banca ce isi pierde toate datele referitoare la clienti, conturi, sume

de bani trasferate, sau o companie de telefonie care nu mai gaseste informatiile referitoare la abonati,

numerele de telefon inca disponibile, plata facturilor etc.

Aceste pierderi fatale pentru o firma nu se intampla in realitate. Va puteti intreba de ce, din moment ce

hard diskurile se defecteza mereu, incendiile sau furturile echipamentelor sunt tot mai frecvente?

Pentru ca fiecare firma de pe glob care isi desfasoara activitatea fara a se intreba daca a doua zi mai

exista, are un sistem de backup al datelor.

Fie ca datele importante sunt copiate manual pe cd/dvd, fie exista un alt computer secundar pe al carui

hard disk se afla toate informatiile, fie este implementat un sistem profesionist de back-up pe banda

magnetica, o solutie de backup este nelipsita din strategia oricarei companii.

Important

Backup-urile trebuie depozitate off-site (in alta locatie fizica) in general in seif sau intr-un loc sigur astfel

incat o compromitere fizica a locului unde se afla datele (incendiu, furt, inundatie) sa nu afecteze si

backup-ul.

In principal exista 3 feluri de backup:

1. full backup - toate datele sunt salvate

2. backup incremental - doar datele care s-au modificat in raport cu ultimul backup sunt salvate

3. backup diferential - doar datele care s-au modificat in raport cu o perioada de referinta ( Exemplu:

prima zi a saptamanii) sunt salvate

Medii de stocare

1. Hard disk pe un alt calculator, eventual un hard disk extern pe USB sau FireWire de capacitate mare

(peste 300 GB) care poate fi depozitat off-site.

Avantajele acestei metode sunt multiple; pretul hard disk-urilor tinde sa devina tot mai redus, viteza de

copiere si de restaurare este foarte mare, accesul la date este direct. Un dezavantaj este fiabilitatea

scazuta. Hard disk-urile sunt sensibile la socuri mecanice, fluctuatii electrice sau magnetice etc. Nu de

putine ori auzim ca un anume hard disk s-a ars sau s-a spart.

2. Mediul optic - CD/DVD. Principalul avantaj este costul extrem de redus.

Dezavantajele sunt multiple: spatiu foarte redus de stocare (intre 600 MB - 4 GB), imposibilitatea de a fi

folosit acelasi cd/dvd un timp intelungat, dificultatea de a automatiza procesul. Aceasta solutie este

Page 84: Curs Linux Cma

folosita mai mult de utilizatorii casnici, nu in mediul de afaceri.

3. Benzile magnetice. Aceasta solutie este preferata in mediul Enterprise. Fiabilitatea casetelor cu banda

magnetica este maxima. O caseta poate fi utilizata in conditii optime pana la 30 de ani fara intrerupere

daca sunt respectate recomandarile producatorului (umiditate, temperatura etc). Tape-urile nu au nimic

electronic in componenta, doar suport magnetic. Astfel devin imune la socurile mecanice. Informatia de

pe o caseta care a fost scapata jos si s-a spart sau a fost udata poate fi recuperata foarte usor (eventual

doar o mica parte din informatie a fost deteriorata). Pe o astfel de caseta incap pana la 240 GB.

Dezavantaje ar fi timpul lung necesar recuperarii datelor (acces secvential), viteza mica de scriere si

citire.

Exista programe de backup profesioniste atat comerciale cat si OpenSource. Un program de referinta

este AMANDA (The Advanced Maryland Automatic Network Disk Archiver). Acest sistem solid este

folosit cu succes in multe medii de afaceri. Folosind programele clasice de Unix ( tar, dump etc), pentru a

realiza un backup incremental pe banda magnetica, recuperarea datelor poate fi facuta doar cu aceste

utilitati aflate pe orice sistem Unix/Linux. Ultimele versiuni sunt compatibile cu Samba, astfel incat pot fi

incluse in circuitul de backup si share-uri Windows. Alte solutii profesioniste includ Arkeia, Veritas si

ARCserve.

Un alt aspect important este recuperarea informatiei aflata in circuitul de backup. Acest proces trebuie

sa fie sigur, usor si eficient. Dupa setarea sistemului de backup, trebuie verificat ca in caz de pierdere a

fisierelor, backup-ul chiar functioneaza si datele pot recuperate efectiv. Altfel cel mai complex sistem de

backup este nefolositor.

Securitatea datelor nu este de neglijat. De curand o companie aflata in Fortune Top 500 declara ca firma

de trasport FedEx a pierdut casetele cu backup in timp ce le transporta intr-o alta locatie. Imaginati-va

toate acele informatii in valoare de miliarde de dolari la indemana oricui ! De aceea este recomandat ca

datele sa fie criptate. In caz de pierdere/furt nimeni nu le poate accesa.

Page 85: Curs Linux Cma

8 Backup si Cron » 8.1 Backup » 8.1.2 Comenzi specifice

Comenzi specifice

Comenzi de arhivare si comprimare

1. tar (tape archive) - reprezinta principala comanda de arhivare pe Linux. Tar nu realizeaza comprimare

(in mod default) ci doar arhivare.

tar optiuni output_file files/dirs

Comanda tar primeste obligatoriu una dintre optiunile:

-c = create - creaza o arhiva

-x = extract - extrage fisierele din arhiva

-t = table of content (vizualizare continut)

-r = adauga la sfarsitul arhivei

-u = adauga in arhiva doar fisierele noi

-C DIR = specifica directorul destinatie in care se va decomprima (altfel in directorul curent)

Important

Folosind optiunea -x se pot suprascrie fisierele care exista pe hard disk cu cele care se dezarhiveaza.

Alte optiuni:

-f = file (se specifica fisierul arhiva care se creaza)

-v = verbose

--atime-preserve = nu schimba atime pentru fisierele adaugate

Exemplu

a) se creaza arhiva.tar in directorul curent din directorul /home/stud/dir_care_se_arhiveaza

tar -cvf arhiva.tar /home/stud/dir_care_se_arhiveaza

b) vizualizarea continutului unei arhive

tar -tf arhiva.tar

c) adaugare fisier a.txt la arhiva.tar

tar -rf arhiva.tar a.txt

d) adaugare fisiere noi in arhiva. Acestea sunt adaugate, versiunile mai vechi din arhiva nu sunt

inlocuite.

tar -uf arhiva.tar f*

e) pastreaza atime pentru fisierele adaugate

tar --atime-preserve -cvf arhiva.tar dir1/

Page 86: Curs Linux Cma

f) Extrage doar un fisier din arhiva

tar -xvf arhiva.tar a.txt

g) Extrage continutul arhivei in directorul /tmp

tar -xjvf arhiva.tar.bz2 -C /tmp

2. BZIP2, GZIP

Programul tar poate fi folosit si pentru a compresa fisiere. Se folosesc optiuni specifice care au drept

efect trecerea fisierelor printr-un program de compresie inainte de arhivare.

Optiuni ale comenzii tar pentru comprimare:

-j = create bzip2 (fisierele care se arhiveaza sunt trecute prin filtrul de compresie bzip2)

Exemplu

Creaza in directorul curent arhiva directorului /home/dan/dir1 numita archivefile.tar.bz2

comprimata cu bzip2

tar -cvjf archivefile.tar.bz2 /home/dan/dir1

echivalent cu

tar -cvf - /home/dan/dir1 | bzip2 > archivefile.tar.bz2

Extragere arhiva bz2:

tar -xjvf arhiva.tar.bz2

echivalent cu

bunzip2 arhiva.tar.bz2 - rezulta fisierul arhiva.tar

tar -xvf arhiva.tar

-z = creaza o arhiva comprimata cu gzip

Exemplu

tar -czvf arhiva.tar.gz dir1/

tar -xzvf arhiva.tar.gz

Exista si comenzile zip, unzip, gzip si gunzip dar sunt mai putin folosite datorita faptului ca in general se

foloseste comanda tar impreuna cu optiuni de compresie.

Exemplu: Backup la directorul /etc in /root : tar -cjvf /root/etc-$(date +%F).tar.bz2 /etc

3. SCP - Secure Copy (Copy over SSH)

Reprezinta posibilitatea de a copia fisiere remote de pe calculatoare conectate in LAN sau pe Internet.

Page 87: Curs Linux Cma

Copierea are loc criptat.

Pentru aceasta avem nevoie de acces prin SSH la calculatorul de pe care dorim sa copiem sau pe care

dorim sa copiem. Datele sunt copiate folosindu-se un tunel SSH creat intre sursa si destinatie.

scp optiuni SURSA DESTINATIE

- P = port (poate folosi un alt port - default 22)

- p = preserve (atime, mtime si permisiunile)

- r = recursive copy (pt. directoare)

- v = verbose

Exemplu

a) Se copiaza fisierul arhiva.tar.bz2 de pe calculatorul local pe calculatorul cu IP-ul 192.168.0.1 in

directorul /home/dan sub numele de arhiva-stud.tar.bz2. Userul dan trebuie sa aiba acces prin ssh

la 192.168.0.1

scp /home/stud/arhiva.tar.bz2 [email protected]:/home/dan/arhiva-stud.tar.bz2

b) Sursa poate fi host-ul remote identificat prin nume DNS. Conexiunea foloseste portul destinatie

2323 (daemonul ssh trebuie sa asculte pe acest port). Se copiaza fisierul /etc/passwd in dir. curent.

scp -P 2323 [email protected]:/etc/passwd .

c) Copiaza recursiv directorul /etc/ sub numele /backup-etc/

scp -rpv /etc/ root@backuphost:/backup-etc/

4. rsync

Solutie de backup incrementala folosind rsync si Linux

Inainte de a configura o solutie de backup, care este critica pentru orice utilizator privat sau din mediul

de afaceri, trebuie sa ne punem cateva intrebari:

La ce vreau sa fac bakup?

Pentru cat timp vreau sa pastrez backup-ul?

Pe ce mediu vreau sa salvez datele?

Ce importanta au datele care sunt salvate?

Cel mai rau lucru care se poate intampla este ca solutia de backup in care ne-am pus toata increderea sa

nu functioneze la momentul oportun (dupa ce s-a produs pierderea datelor, sa nu le putem recupera).

De aceea verificarea functionarii backup-ul este de importanta capitala.

rsync (remote syncronization) este o utilitara inclusa in toate distributiile moderne de Linux. Aceasta

realizeaza sincronizarea fisierelor si directoarelor locale cu cele de pe un alt calculator remote sau cu un

alt director local.

Sintaxa de baza este:

#rsync /sursa /destinatie

Page 88: Curs Linux Cma

Acesta comanda copiaza directorul numit /sursa in directorul numit /destinatie (cu crearea directorul

destinatie daca nu exista).

O varianta mai complexa poate fi:

# rsync -e ssh -av --delete /usr/local/backup/ [email protected]:/home/backups/

Acesta comanda face un backup incremental (doar diferentele dintre sursa si destinatie) pe un calculator

remote.

-e ssh : reprezinta modalitatea de transport a datelor folosind protocolul ssh. Se creaza un tunel criptat

prin care fisierele si directoarele sunt copiate. Pentru a folosi ssh ca protocol de comunicare trebuie sa

fie setat ssh sa realizeze autentificare fara parola folosind chei publice si private. Altfel procesul nu poate

fi automatizat fiindca trebuie introdusa parola de autentificare.

-a : archive mode, echivalent cu -rlptgoD ( r = recursive, l = copiaza si linkurile, p = pastreaza permisiunile

fisierelor intre sursa si destinatie, t = pastreaza ctime, atime, mtime, o=pastreaza owner, g=group pt

fisier sau director, D = preserve device (numai pt Root))

-v : verbose

--delete : sterge fisierele sau directoarele de la destinatie care sunt diferite fata de sursa

/usr/local/backup reprezinta sursa backup-ului

[email protected]:/home/backups -> username daniel pe calculatorul remote backup.host (poate fi

dat si ca IP) care are drept de scriere in directorul destinatie, iar /home/backups reprezinta destinatia

Rularea automata a script-ului de back-up

Pentru a executa un backup incremental automat in fiecare seara, se creeaza un cronjob.

Intr-un script (fisier cu drept de executie pt owner care trebuie sa fie root pentru a evita eventualele

probleme legate de drepturile de acces) scriem comanda de mai sus care realizeaza backup incremental

apoi ca root executam

# crontab -e : deschide fisierul cu cron joburile lui root pentru editare folosind editorul implicit (vi,

emacs, etc)

0 0 * * * /calea_catre_scriptul_creat_mai_sus: ruleaza scriptul cu numele

calea_catre_scriptul_creat_mai_sus la ora 0:0 in fiecare zi

Alta posibilitate ar fi sa copiem scriptul creat mai sus in /etc/cron.daily (redhat, fedora, slackware etc).

Fisierele aflate in /etc/cron.daily se executa automat la ora 22:00 (sau cea configurata in /etc/crontab) a

fiecarei zile.

rsync este o unealta cu foarte multe optiuni (vezi man rsync) simpla, dar foarte flexibila.

Exemplu

1. Pentru a realiza o sincronizare a doua directoare( /home si /backup/home) de pe acelasi

computer:

rsync -a --delete /home /backup/home

2. Daca vrem sa sincronizam/copiem un director recursiv, dar vrem sa omitem un anume director

sau fisier, putem folosi optiunea --exclude-from

rsync -e ssh -aq --delete --exclude-from=': /etc/.rsync-filter' /home/mihai/

Page 89: Curs Linux Cma

[email protected]:/home/mihai/

Aceasta comanda sincronizeaza /home/mihai/ de pe calculator local cu /home/mihai/ de pe

calculatorul 10.0.0.2 omitand directoarele si fisierele precizate in fisierul .rsync-filter din /etc.

Autentificarea la serverul ssh de pe 10.0.0.2 se realizeaza cu userul root.

Fisierul /etc/.rsync-filter trebuie creat si trebuie sa contina pe cate o linie numele directoarelor sau

fisierelor pe care vrem sa le excludem sau sa le includem in sincronizare/copiere (pot si folosite si

"regular expressions").

O linie este formata din action apoi spatiu si numele fisierelor/directoarelor (patternul) care vor fi

excluse sau incluse. Action este + in cazul in care includem pentru sincronizare, respectiv - daca

dorim sa expludem.

In acest exemplu in care dorim sa excludem directoarele samba si jeny precum si toate fisierule cu

extensie php, fisierul .rsync-filter contine:

- samba/

- jeny/

- *.php

Daca se termina numele in / este director.

Exemplu:

Se copiaza doar directorul task si fisierele py si odt.

+ task/

+ *.py

+ *.odt

- *

3. Pentru a realiza o arhiva gzip a lui /usr/local/backup si a o copia temporar in /tmp si apoi pe

host-ul remote 192.168.3.l ca username jeny cu stergerea ulterioara din /tmp

#!/bin/bash

DATE=`date +%F`

tar -czpf /tmp/backupfile-$DATE.gz /usr/local/backup

rsync -e ssh -a /tmp/backupfile-$DATE.gz [email protected]:/home/backups

rm /tmp/backupfile-$DATE.gz

4. rsync poate fi folosit si pentru o simpla copiere ( ca si cp) rsync /etc/named.conf

/home/omi/named.conf

Comanda este echivalenta cu:

cp /etc/named.conf /home/omi/named.conf

rsync poate functiona si client-server. Cu clientul de rsync ne conectam la serverul rsync de pe

calculatorul destinatie. Astfel nu mai este nevoie de ssh ca protocol de trasport.

Page 90: Curs Linux Cma

8 Backup si Cron » 8.1 Backup » 8.1.3 Servicii de backup

Servicii de backup

Deoarece importanta backup-ului este critica pentru companii dar si pentru persoane fizice, exista mai

multe servicii care ofera backup folosind cloud storage. Astfel fisierele importante pot fi usor

sincronizate intre mai multe dispozitive (smartphone, desktop, notebook, netbook etc), iar in cazul unei

defectiuni hardware sau stergere accidentala pot fi recuperate.

Aceste servicii ofera gratuit un anumit spatiu de stocare, iar daca se doreste spatiu mai mult se achita o

taxa lunara.

La alegerea unui serviciu de backup trebuie avuta in vedere si confidentialitatea respectiv "data at rest

protection" si anume daca fisierule sunt criptate, iar daca operatorul serviciului poate accesa

informatiile clientilor.

Dintre serviciile de cloud backup enumeram:

Ubuntu One Dropbox ADrive

Resurse:

Comparison of online backup services Data at Rest vs. Data in Motion

Page 91: Curs Linux Cma

8 Backup si Cron » 8.2 Cron jobs

Cron jobs

Cron

Reprezinta o modalitate in Linux/Unix cu ajutorul careia se pot programa executii de comenzi sau

programe la un moment dat in viitor (in mod repetat sau nu). Comanda sau programul se executa in

background de catre un proces numit cron daemon.

Cron daemon (crond sau cron in functie de distributie) cauta fisierele cu joburi (sarcini sau comenzi) de

executat in directorul numit cron spool directory si care este /var/spool/cron/crontabs si unde se

gaseste un fisier text pentru fiecare user din sistem avand numele acestuia (daca utilizatorul are joburi

de executat). Aceste fisiere sunt incarcate in memorie. Fiecare utilizator din sistem are propriile cron

job-uri independent de ceilalti useri.

Cron daemon verifica la fiecare minut daca mtime al spool directory s-a modificat, iar daca s-a modificat

reincarca job-urile in memorie.

Exista 2 fisiere ( /etc/cron.deny si /etc/cron.allow) care stabilesc userii care au dreptul sa foloseasca

crontab.

Daca fisierul cron.allow nu exista, dar cron.deny exista si este gol, fiecare user are dreptul sa foloseasca

crontab.

Daca nici cron.allow nici cron.deny nu exista utilizatorii nu au dreptul sa foloseasca crontab.

Daca ambele fisiere exista dar sunt goale, niciun utilizator nu are dreptul sa foloseasca crontab.

Aceste fisiere se editeaza cu username-ul celui la care ne referim (cel care are dreptul sau nu sa

foloseasca crontab), cate un username pe fiecare linie. Poate fi folosit cuvantul ALL sau NONE.

Accesul sau restrictia unui utilizator la crontab se refera la dreptul acestuia de a edita fisierul din

/var/spool/cron/crontabs folosind crontab sau direct folosind un editor text. Nu se refera la dreptul de a

avea si executa cron job-uri. Userul root va putea in continuare sa editeze cron-urile pentru utilizator.

Crontab are 2 semnificatii:

a) este programul care instaleaza, dezinstaleaza si editeaza lista de job-uri (fisierele din

/var/spool/cron/crontabs) pentru fiecare utilizator folosite de cron daemon. Acesta foloseste de fapt un

editor text si valideaza corectitudinea fisierului care se modifica;

b) este fisierul de configurare al lui cron daemon din /etc;

Exista 2 categorii de cron jobs:

1. Joburi pentru fiecare utilizator ( /var/spool/cron/crontabs)

2. Joburi globale

Structura unui fisier cu job-uri din /var/spool/cron/crontabs este urmatoarea:

Page 92: Curs Linux Cma

Pentru a evita erorile, nu se recomanda editarea in mod direct (cu editorul preferat precum VIM) a

fisierului care este folosit de cron daemon ci folosind comanda crontab.

In Ubuntu Cron Daemon pastreaza logurile in fisierul /var/log/syslog

Comentariile sunt permise dar trebuie sa fie unice pe linie. Se foloseste "#".

Exemplu

* 12 10-16/2 * * /root/scripts/backup.sh

identic cu

* 12 10,12,14,16 * * /root/scripts/backup.sh

Optiune:

-e = editare crontab sau creare daca nu exista - foloseste editorul default, cel definit in variabila globala

EDITOR sau VISUAL

-l = listare cron jobs

-r = remove user crontab

-i = interactiv la delete

La editarea crontab-ului se pot folosi intervale continue sau discrete folosit caracterul "-" (minus) sau ","

(virgula)

Exemplu: 1-5 * * 1,2 * script

In afara cronjob-urilor pentru fiecare utilizator care se gasesc in directorul /var/spool/con/crontabs,

cron daemon foloseste job-uri globale definite in fisierul de configurare numit /etc/crontab. Structura

acestuia este urmatoarea:

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

# run-parts

01 * * * * root run-parts /etc/cron.hourly

02 4 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.monthly

Dupa declararea variabilelor pe care le va folosi cron, pe fiecare linie se gaseste un job de rulat.

Dupa cele 5 coloane care reprezinta timpii folositi de cron se gaseste user-ul care va executa programul

si comanda de executat.

Page 93: Curs Linux Cma

run-parts este un concept original din Debian care are drept scop executarea tuturor scripturilor dintr-

un director.

Deci cron daemon va executa la fiecare ora, zi, saptamana si luna scripturile aflate in directoarele

/etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly si /etc/cron.monthly

Limitari: exista programe care nu pot fi rulate de catre cron ( Exemplu: ssh-agent) acest lucru in special

fiindca variabilele de environment nu sunt accesibile lui crond.

Important

La specificarea scripturilor care trebuie sa fie rulate in mod repetat este obligatoriu sa folosim cai

absolute fiindca crond nu are acces la variabilele globale ale sistemului si exista astfel posibilitatea sa nu

functioneze corect. Aceasta eroare este frecventa si greu de depistat.

Resurse:

man crontab man cron

Page 94: Curs Linux Cma

9 TCP/IP & Networking » 9.1 TCP/IP

TCP/IP

Orice calculator comunica in retea folosind stiva de protocoale TCP/IP. TCP/IP este "de facto" industry

standard.

TCP/IP este o colectie de protocoale cele mai cunoscute si importante fiind TCP (Transmission Control

Protocol) si IP (Internet Protocol) de unde si numele TCP/IP. Pe langa aceste protocoale exista multe

altele fiecare gasindu-se la un anumit layer si avand o anumita functionalitate. Stiva TCP/IP se instaleaza

automat la instalarea sistemului de operare (Windows sau Linux).

Aceasta stiva de protocoale a fost creata de DoD (Department of Defense, USA) la inceputul anilor '70,

avand drept scop crearea unei retele care sa supravietuiasca in orice conditii, chiar in cazul unui atac

nuclear.

Este impartit in 4 layere:

1. Application Layer

La acest layer se gasesc protocoale precum: DNS, HTTP, FTP, TFTP, SMTP, IMAP, POP3, SSL, SNMP etc. La

acest layer se gasesc serviciile oferite de retea cele mai apropiate de utilizatorul final. Programele

existente sunt client sau server care implementeaza protocoalele enumerate mai sus.

2. Transport Layer

La acest layer se gasesc protocoalele TCP si UDP.

Page 95: Curs Linux Cma

TCP (Transmission Control Protocol) este un protocol complex care garanteaza ajungerea datelor la

destinatie. Inainte de a se initializa transferul datelor are loc un schimb de mesaje intre sursa si

destinatie pentru se se sincroniza. Acest fapt il face sa fie "Connection-oriented"

UDP (User Datagram Protocol) este mai simplu decat TCP, nu garanteaza sosirea datelor la destinatie si

este "Connection-less"

Layerul Transport este responsabil cu prima impachetare a datelor. Informatia, pe care o primeste de la

nivelul aplicatie este impartita in segmente si ii sunt adaugate headere (informatie specifica nivelului

transport). La acest nivel are loc segmentarea datelor. Printre altele, headerul contine 2 numere, numite

PORTURI. Un port ocupa 16 biti si este intre 0 si 65535

Cele 2 numere (porturi) se numesc:

a) port sursa (identifica programul care a generat mesajul) - adresa aplicatiei sursa

b) port destinatie (identifica carui program ii este destinat mesajul pe hostul destinatie) - adresa

aplicatiei destinatie. Acesta este de obicei un server

Exemplu: daca unul dintre cele 2 porturi este 21, programul este FTP, daca este 25 este vorba despre un

e-mail, daca portul este 80 programul de la nivelul aplicatie este serverul web.

IANA este responsabila cu alocarea si inregistrarea porturilor.

IANA a definit 3 categorii de porturi:

1. Well Known ports (intre 0 si 1023)

Exemplu: 80 pt http, 110 pentru POP3, 993 pentru IMAPs (IMAP over SSL)

2. Registered Ports (intre 1024 si 49151)

Exemplu: 3036 pentru MySql, 3756 pentru canon

3. Dynamic / Private Ports (intre 49152 si 65535)

Un port se poate afla in urmatoarele 3 stari:

1) Deschis (open). Ne putem conecta (folosind 3-way handshake) la un port deschis, exista o aplicatie

(server) care accepta conexiuni folosind acel port. Se spune ca aplicatia destinatie (serverul) "asculta" pe

acel port.

Exemplu: un server web care ruleaza si care este configurat sa asculte pe portul 80.

2) Inchis (close). Nu exista nicio aplicatie care sa primeasca conexiuni pe acel port.

3) Filtrat (stealth). Portul este deschis, dar un firewall sau o lista de acces blocheaza conexiunile catre

acel port.

Scopurile nivelului transport:

a) segmenteaza informatia conform cu lungimea maxima admisa pe canalul de comunicatie

(segmentation)

b) numeroteaza aceste segmente pentru a-le pune cap-la-cap la destinatie si a forma mesajul initial

c) trimite confirmari (acknowledgment) celeilalte parti cum ca a primit pachetele. Se foloseste "positive

acknowledgment" - confirmarea se refera la urmatorul segment pe care asteapta sa-l primeasca.

Exemplu: daca trimite ca acknowledgment nr. 7, inseamna ca asteapta segmentul cu nr. 7, iar sursa stie

ca destinatia le-a primit cu succes pe primele 6

Page 96: Curs Linux Cma

d) identifica segmentele primite gresit (cu erori) si notifica destinatia sa le retransmita (error recovery)

e) regleaza fluxul datelor (viteza de transmisie) (flow control)

Important

Pentru vizualizarea porturile deschise pe Linux se foloseste comanda netstat -tupan.

3. Internet Layer

La acest layer se gasesc protocoale precum IP (protocol rutabil sau rutat), ICMP (protocol de detectare a

erorilor si de testare a legaturii), protocoale de rutare (routing protocols) precum RIP, OSPF, EIGRP,

IGRP, BGP, IS-IS

Scopul unui protocol rutabil este de a transporta informatia catre destinatie prin incapsulare pe calea pe

care protocoalele de rutare o gasesc.

Primeste segmentul de la nivelul transport si ii adauga headerele specifice. Segmentul primit de la Layer

Transport se numeste la Layer Internet pachet. La acest nivel are loc impachetarea datelor.

Scopurile nivelului Internet:

a) rutarea pachetelor folosind cea mai buna cale (drum) pe care pachetele o pot urma catre destinatie

(routing)

b) gasirea celei mai bune cai catre destinatie dintre mai multe cai posibile (best effort delivery)

c) avertizarea celor implicati in comunicatie printr-o serie de mesaje specifice, testarea liniei de

comunicatie etc (protocolul ICMP).

d) impachetarea datelor ( segmentelor primite de la layer4 li se adauga un Header si devin pachete)

Se folosesc 2 adrese, numite si logice (adrese IP):

a) adresa sursa (identifica calculatorul sursa)

b) adresa destinatie (calculatorul destinatie)

O adresa IP are 32 de biti si se reprezinta prin 4 numere intre 0 si 255 separate prin .(punct)

Exemplu: 10.0.0.1 sau 192.89.43.251

4. Network Access Layer

La acest Layer se gasesc protocoale care definesc tipul de retea: Ethernet, WLAN, PPP, ADSL, CaTV,

FrameRelay, ISDN etc

Acest layer primeste pachetul de la Layer Internet si ii face o noua impachetare (a 3-a) astfel: adauga in

fata pachetului un header si la finalul lui un trailer. Pachetul se va numi la acest layer Frame.

In Frame se vor gasi alte 2 adrese care identifica placa de retea a fiecarui calculator implicat in

comunicatie (adrese fizice sau MAC).

O adresa MAC are lungimea de 48 de biti reprezentati prin 12 cifre hexazecimale.

Exemplu: 00:01:AC:17:AB:C9

Scopurile nivelului Network Access:

a) stabileste topologia retelei (bus, star, extended star, mesh)

b) adresarea fizica a fiecarui calculator folosind adrese MAC

c) identificarea erorilor (nu si corectia sau recuperarea lor)

Page 97: Curs Linux Cma

Nota

Adresele de tip MAC exista doar in cadrul retelei locale de tip Ethernet. Acestea nu se transmit pe

Internet. Daca se folosesc alte tehnologii la Network Access Layer precum ISDN, PPP, Catv etc

adresele MAC nu se folosesc pe linkul respectiv.

Important

Protocoalele de layerele aplicatie, transport si internet sunt independente de protocoalele de la

Network Access. Protocolul DNS, IP sau TCP functioneaza identic, fara nicio modificare indiferent daca la

layer "Network Access" avem Ethernet, WLAN, ADSL sau ISDN. De fapt protocoalele superioare nu au

cunostinta despre protocoalele de la Network Access Layer.

Important

Procesul prin care datele (email-ul, pagina web etc) sunt transformate in segmente la Layer4 apoi in

pachete la Layer3 apoi in frame-uri la Layer2 si in biti la Layer1 se numeste incapsulare si are loc la sursa

care a generat mesajul. Procesul invers se numeste decapsulare si are loc la destinatie.

Incapsulare: data->segment->packet->frame->biti Decapsulare: biti->frame->packet->segment->data

Pentru o buna intelegere a modului in care retelele comunica este necesara o cunoastere aprofundata a

protocoalelor care fac parte din stiva TCP/IP.

Pentru vizualizarea tuturor pachetelor care parasesc interfata (placa de retea) calculatorului sau a celor

care sunt primite de interfata calculatorului se folosesc programe numite sniffere.

Cele mai cunoscute si folosite sunt: Wireshark si tcpdump. Acestea sunt cele mai utile programe pentru

troubleshooting in retea.

Wireshark functioneaza atat pe Linux cat si pe Windows iar modul in care pachetele sunt afisate este

grafic. Tcpdump ruleaza doar pe Linux in linie de comanda.

Resurse

OSI - Wikipedia TCP/IP - Wikipedia TCP/IP Protocol Suite and Architecture The Open System Interconnection (OSI) Reference Model

Page 98: Curs Linux Cma

9 TCP/IP & Networking » 9.2 Clasificarea adreselor IP

Clasificarea adreselor IP

O adresa IP se mai numeste si adresa logica si apartine L3 OSI.

Se foloseste pentru a identifica logic hosturile conectate la retea. Rutarea pachetelor (trimiterea

acestora de la sursa la destinatie pe calea cea mai buna) se bazeaza in primul rand pe IP-uri. Fiecare

calculator conectat la retea trebuie sa aiba o adresa IP unica pentru acea retea pentru a putea fi

identificat.

In comparatie cu adresa MAC care apartine L2 OSI si care nu se poate modifica(teoretic), adresele IP

sunt setate de catre user. Fiecare placa de retea poate avea una sau mai multe IP-uri.

O adresa IP este formata din 4 bytes (32 de biti in total).

Acesta se scrie in baza zece, trasformand fiecare byte din baza 2 in baza 10 si separandu-i prin punct.

O adresa IP este formata din 2 parti:

1) Network Address (adresa retelei sau adresa firului)

2) Host Address (adresa hostului din retea). Deci bitii componenti ai unei adrese IP se impart in biti de

retea si biti de host.

Toate hosturile din aceeasi retea trebuie sa aiba aceeasi Network Address.

Network Mask

Strans legata de IP este notiunea de masca de retea (Network Mask). Scopul acesteia este de a stabili

care biti din IP sunt biti de retea si care sunt de host. Adresa IP nu exista fara masca, intotdeauna se

configureaza doar impreuna.

Exemplu

1. 255.0.0.0 sau /8

Daca transformam aceasta masca in baza 2 observam ca primii 8 biti sunt 1. Rezulta ca primii 8 biti

din adresa IP sunt biti de network, iar ultimii 24 de host.

Page 99: Curs Linux Cma

2. 255.255.255.0 sau /24

Daca transformam aceasta masca in baza 2 observam ca primii 24 biti sunt 1. Rezulta ca primii 24

biti din IP sunt biti de network, iar ultimii 8 de host.

Important

Un Router realizeaza o operatie de AND LOGIC (si logic) intre IP si masca pentru a afla Network Address.

Varianta simplificata pentru a separa network address de host address este:

1) se transforma IP-ul si masca in baza 2

2) se aseaza IP si masca una sub cealalta, bit sub bit

3) bitii din IP care sunt in dreptul bitilor de "1" (unu) din masca se numesc biti de retea si formeaza

Network Address. Biti din IP care sunt in dreptul bitilor de zero ("0") se numesc biti de host.

Masca se mai poate scrie si sub forma slash ("/") urmat de nr. bitilor de 1. Network Prefix este sinonim

cu Network Address

Exemplu

255.0.0.0 sau /8

255.255.0.0 sau /16

255.255.255.0 sau /24

255.255.128.0 sau /17

Clasificarea adreselor IP

1. In functie de primii biti din primul octet exista 5 clase de IP-uri (definite de IANA in rfc1700)

bitii primului octet interval primul octet Masca default

clasa A 0xxxxxxx 0-127 255.0.0.0 sau /8

clasa B 10xxxxxx 128-191 255.255.0.0 sau /16

clasa C 110xxxxxx 192-223 255.255.255.0 sau /24

clasa D 1110xxxx 224-239 Nu exista

clasa E 1111xxxx 240-255 Nu exista

Page 100: Curs Linux Cma

Exemplu

10.0.0.1 - IP de clasa A

12.12.255.8 - IP de clasa A

189.189.189.189 - IP de clasa B

213.12.0.1 - IP de clasa C

135.9.9.1 - IP de clasa B

224.0.0.10 - IP de clasa D (clasa de multicast)

249.90.90.1 - IP de clasa E (clasa rezervata)

Nota

1. 127.0.0.1 este rezervata si folosita ca adresa de loopback. Se foloseste de hosturi pentru

redirecta traficul pentru ele insele. Cel mai folosit caz concret este atunci cand atat clientul cat si

serverul se afla pe acelasi host. Exemplu: instalam un server Apache si ne conectam la acesta de pe

acelasi calculator folosind un Browser

2. Clasa D este o clasa speciala folosita pentru multicast. Nu se configureaza interfete sau placi de

retea cu aceasta adresa.

Page 101: Curs Linux Cma

3. Clasa E este rezervata pentru studii sau cercetari. Nu este folosita in realitate.

Adrese IP speciale

1. Clasa E (adrese experimentale - rfc 3330) - 240.0.0.0 - 255.255.255.254

2. Clasa D (Multicast) - 224.0.0.0 - 239.255.255.255

3. Link-local address: 169.254.0.0 - 169.254.255.255 si se foloseste de hosturi pentru setarea automata a

unui IP cand nicio alta metoda nu este disponibila (DHCP, BootP, PPP, static etc). Se pot folosi doar in

reteaua locala, iar TTL este 1.

4. TEST-NET Address: 192.0.2.0 - 192.0.2.255 - teaching and learning purpose. Pot fi folosite in

documentatii si exemple. Device-urile le accepta in configuratie.

Se gasesc in multe ori in RFC pt. IP ale domeniilor example.com, example.net sau in documentatii ale

producatorilor

5. Loopback: 127.0.0.1

2. In functie de destinatia pachetelor, adresele IP pot fi:

a) Unicast - Identifica un sigur host intr-o retea.

b) Multicast - Identifica un grup de hosturi dintr-o retea. Un calculator sursa poate comunica simultan cu

un grup de calculatoare folosind adresa IP destinatie de tip multicast.

c) Broadcast - Identifica toate hosturile dintr-o retea.

Exista 2 categorii de Broadcast Address:

a. Directed Broadcast Address

Se calculeaza punand toti bitii din portiunea de host address pe "1"

Exemplu

1. Pentru IP-ul 192.168.0.1/24.

Masca este /24 sau 255.255.255.0 adica din cei 32 de biti ai mastii primii 24 sunt 1 iar restul 0.

Rezulta ca Network Address este reprezentata de primii 24 de biti din IP (atitia cati biti de 1 sunt in

componenta mastii). Restul bitilor se pun pe valoarea 0. Network Address = 192.168.0.0

Daca primii 24 biti din IP identifica Network Address, restul bitilor pana la 32 (8 biti) identifica bitii

de host.

Pentru a afla broadcast address se scrie adresa de retea (192.168.0.0) si se pun toti bitii din Host

Address pe 1. Rezulta Broadcast Address= 192.168.0.255

2. Pentru IP-ul 10.0.0.0/8 broadcast address este 10.255.255.255

3. Pentru IP-ul 190.190.0.17/16 broadcast address este 190.190.255.255.

4. Pentru IP-ul 210.210.210.67/27 broadcast address este 210.210.210.95

b. Limited Broadcast Address. Este invariabil 255.255.255.255

Page 102: Curs Linux Cma

3. In functie de modul de procurare si utilizare exista IP-uri

a) Publice

- se cumpara sau se inchiriaza de la un LIR (Local Internet Registry) sau de la un ISP Local.

- sunt publice, oricine poate afla informatiile despre proprietarul unui IP (adresa, nume, email de contact

etc).

- identifica in mod unic un host pe Internet. Fiecare calculator conectat DIRECT la Internet trebuie sa

aiba o adresa publica.

b) Private

- nu se cumpara, nu se inchiriaza, nu se platesc

- sunt folosite doar in cadrul unui LAN

- pachetele de date nu au voie sa contina pe Internet IP sursa sau destinatie de tip privat (vor fi blocate

la primul Router)

- un Router trebuie sa fie configurat pentru NAT (Network Address Translation) astfel incat un LAN care

foloseste IP-uri private sa poate comunica pe Internet - IETF (Internet Engineering Task Force) a definit

clasele de IP-uri private in RFC1918.

Acestea sunt:

a) de clasa A -> 10.0.0.0 - 10.255.255.255

b) de clasa B -> 172.16.0.0 - 172.31.255.255

c) de clasa C -> 192.168.0.0 - 192.168.255.255

4. In functie de modul de alocare IP-urile pot fi:

a) Statice - sunt configurate pentru fiecare interfata de catre administrator sau user

b) Dinamice - sunt configurate prin intermediul unor programe speciale fara interventia user-ului.

Exemplu: DHCP, BootP sau PPP pentru DialUp

Important

Cunoasterea in profunzime a protocoalelor din stiva TCP/IP precum si modul acestora de functionare

reprezinta un aspect extrem de important pentru o cariera perfomanta in domeniul Networking.

Detalii complete despre stiva TCP/IP sunt prezentate in cursul Cisco CCNA1 Exploration organizat in

varianta cu predare aprofundata de catre Crystal Mind Academy.

Resurse:

Adrese IP rezervate TCP/IP Overview

Page 103: Curs Linux Cma

9 TCP/IP & Networking » 9.3 Configurare retea

Configurare retea

Configurarea statica a interfetelor de retea

Pentru a comunica intr-o retea TCP/IP un host trebuie sa fie configurat cu:

1) IP (obligatoriu)

2) Network Mask (obligatoriu) - se configureaza impreuna cu IP

Exista 2 posibilitati de a configura IP-ul si masca:

a) Editand fisierul in care se salveaza configuratia placii de retea. Configuratia este permanenta, se

pastreaza dupa un eventual restart.

Acesta poate sa difere de la distributie la distributie. In Ubuntu exista un singur fisier pentru toate

interfetele si anume /etc/network/interfaces

Exemplu fisier:

auto lo

iface lo inet loopback

iface eth0 inet static

address 192.168.0.100

netmask 255.255.255.0

gateway 192.168.0.1

auto eth0

b) Folosind comanda ifconfig. Modificarea configuratiei nu se salveaza la reboot, iar sintaxa acesteia este

identica pe orice distributie de Linux.

Exemplu

1. Afiseaza configuratia interfetelor active

ifconfig

2. Afiseaza configuratia tuturor interfetelor instalate si recunoscute de sistem

ifconfig -a

3. Porneste/opreste o interfata (enable/disable)

ifconfig eth0 down | up

Page 104: Curs Linux Cma

4. Configureaza IP si Masca pentru o interfata

ifconfig eth0 10.0.0.1 netmask 255.255.255.0 broadcast 10.0.0.255

5. Schimba adresa MAC interfata

ifconfig eth0 hw ether 00:0B:33:34:35:36

6. Modificare MTU

ifconfig eth0 mtu 1412

7. Creare sub interfata si setare IP si Masca

ifconfig eth0:0 10.0.0.0 netmask 255.0.0.0 broadcast 10.255.255.255

3) Default Gateway (optional)

Se poate configura de asemenea in 2 moduri:

a) Editand fisierul in care se gaseste (modificare permanenta).

In Ubuntu se gaseste in acelasi fisier cu IP-ul si Masca ( /etc/network/interfaces)

b) Folosind comanda route (modificare temporara, pana la restart)

route add default gw 192.168.0.1

Comanda route fara optiuni listeaza tabela de rutare a hostului.

4) Servere DNS (optional)

Se configureaza in /etc/resolv.conf pentru ORICE distributie de Linux iar setarea este permanenta

Continut /etc/resolv.conf:

nameserver 193.231.236.3

nameserver 193.231.236.25

Pentru a crea o mapare statica IP/NUME se editeaza fisierul /etc/hosts

Continut /etc/hosts

192.168.0.1 gateway

192.168.0.18 server

82.34.1.9 home

Fisierul /etc/host.conf determina ordinea de translatare a domeniului in IP (default: /etc/hosts si apoi

query catre serverele DNS)

Dupa fiecare modificare a parametrilor interfetelor de retea, serviciul retea trebuie restartat:

/etc/init.d/networking restart

Nota

Daca se doreste pornirea clientului dhcp pe o interfata eth0 pentru configurare automata se

ruleaza comanda: sudo dhclient eth0

Page 105: Curs Linux Cma

9 TCP/IP & Networking » 9.4 Remote Management » 9.4.1 SSH

SSH

Protocolul SSH (Secure Shell) se foloseste pentru:

administrarea remote a unui alt calculator/server, a unui router, switch sau alt echipament de retea. In acest caz administratorul are acces intr-un mod securizat (criptat) la un shell de pe echipamentul remote unde poate rula comenzi de unde si numele de "Secure shell";

copierea in mod securizat de fisiere si directoare intre 2 calculatoare intre care exista o conexiune TCP/IP (comanda scp). Cele 2 calculatoare se pot afla in acelasi LAN sau pe Internet;

folosirea de catre alte protocoale precum rsync ca protocol de transport in mod securizat a datelor;

securizarea unui protocol care comunica in clar precum http, smtp, pop, imap etc. Acest lucru se numeste Tunneling;

evitarea regulilor unui firewall - Bypassing firewall rules; modificarea dinamica a unui firewall in functie de posibilitatea userului de a se autentifica la

serverul de ssh (metoda Lock & Key folosita de catre echipamentele Cisco);

Protocolul SSH ruleaza client server. Pe Linux serverul de ssh este sshd (ssh daemon), iar clientul ssh este

comanda ssh sau Putty (sudo apt-get install putty). Pe Windows cel mai folosit client ssh este Putty.

Nota

Pe Ubuntu serverul ssh nu este instalat by default.

Se instaleaza executand: sudo apt-get install ssh

Va porni de asemenea automat la butare.

Nota

Serveru ssh (sshd) asculta in mod default pe portul tcp/22. Fisierul de configurare al serverul ssh

(sshd) este /etc/sshd/sshd_config, iar al clientului (comanda ssh) este /etc/sshd/ssh_config).

Fisierul cu logurile serverului in care se pot observa incercarile de autentificare prin ssh precum si

posibilele erori este /var/log/auth.log

Exemplu

Exemple de conectare la un server ssh folosind clientul standard ssh (comanda ssh).

1. Conectare la serverul ssh cu ip-ul 192.168.0.1 care asculta pe portul standard 22. Autentificarea

clientului se realizeaza de catre server folosind username-ul care ruleaza comanda pe client.

Acelasi username trebuie sa existe si pe client si pe server.

ssh 192.168.0.1

2. Conectare la serverul ssh cu ip-ul 192.168.0.1 care asculta pe portul 2222 (portul standard a fost

modificat).

Page 106: Curs Linux Cma

ssh -p 2222 192.168.0.1

3. Conectarea la serverul ssh cu ip-ul 192.168.0.1 care asculta pe portul 2222. Se autentifica userul

cmastud care trebuie sa existe pe server (nu si pe client, optional).

ssh -l cmastud -p 2222 192.168.0.1

scp (secure copy sau copy over ssh)

Se foloseste pentru copierea de fisiere in retea (LAN sau Internet). Fisierele se copiaza in mod securizat

folosind ssh. Intre cele 2 calculatoare (sursa si destinatie) trebuie sa existe o conexiune de retea tcp/ip

iar autentificarea prin ssh sa fie functionala.

Exemplu

1. Copiere fisier project.doc de pe calculatorul curent (cel de pe care se ruleaza comanda scp si

care este client ssh) pe calculatorul cu ip-ul 88.0.0.1 si care este server ssh si asculta pe portul

standard 22. Fisierul se copiaza in directorul remote de pe server /root

cmastud este userul cu care ne autentificam la serverul ssh (88.0.0.1).

scp project.doc [email protected]:/root

2. In cazul copierii de directoare se adauga optiunea -r.

scp -r /home/documente/ [email protected]:/home/documente_retea/

3. Optiunea -P se foloseste daca serverul asculta pe un alt port

scp -r -P 2288 /etc/ [email protected]:/home/backup/

Page 107: Curs Linux Cma

10 Diverse » 10.1 Managementul serviciilor si Procesul de Butare

Managementul serviciilor si Procesul de Butare

Linux Boot Process

Page 108: Curs Linux Cma

O sarcina importanta a oricarui administrator de sistem este de a stabili ce servicii pornesc automat la

butare, ce servicii trebuie oprite etc.

Etapele butarii unui calculator care ruleaza Linux sunt urmatoarele:

Page 109: Curs Linux Cma

1) BIOS executa POST (Power on Self Test) si conform cu configuratia sa (de unde este configurat sa

buteze: Hard Disk, CD-ROM, DVD-ROM etc) citeste MBR-ul care reprezinta primul sector al hard diskului

(primii 512 bytes).

2) In MBR (Master Boot Record - primul sector al Hard diskului) se gaseste un boot loader (GRUB sau

LILO) care incarca in memorie de pe disk, kernelul si initrd inainte sa monteze root file system.

Functionalitatea interna a lui GRUB permite sa citeasca de pe disk kernelul si initrd si sa le incarce in

memorie inainte sa monteze partitia pe care acestea se gasesc. Kernelul se decomprima si foloseste

modulele din initrd (monteaza initrd) pentru a buta de pe disk. Daca nu exista initrd functionalitatea pt.

a buta de pe hard disk trebuie sa fie compilata in kernel.

Nota

initrd reprezinta un RAMDISK

Fizic acesta este un fisier. Exemplu: /boot/initrd.img-2.6.22-14-server

initrd contine module necesare kernelului in prima faza a procesului de butare inainte sa monteze

root file system.

Exemplu: initrd ar putea contine un modul care reprezinta driver pentru SATA si care nu a fost

compilat in kernel. Kernelul are nevoie de acest driver pentru a putea monta hard diskul.

3) Primul program pe care kernelul il executa de pe disk este init (parintele tuturor proceselor).

Nota

Ubuntu nu mai foloseste initializarea clasica a sistemului folosind doar init ci foloseste si Upstart.

Detalii.

4) Se executa /etc/rc.d/rcS precum si toate scripturile din directorul /etc/rcS.d/

5) In functie de runlevelul in care intra sistemul (Ubuntu ruleaza in runlevelul 2) se executa /etc/rc*.d/*

* (asterix) reprezinta runlevelul in care intra sistemul. Poate fi 0,1,2,3,4,5 sau 6.

Exemplu:

Daca se intra in runlevel 2 (Ubuntu) se executa scripturile din /etc/rc2.d/

Daca se intra in runlevelul 5 (alte distributii precum Fedora) se executa scripturile din /etc/rc5.d/

Pentru fiecare serviciu exista in /etc/rc[0-6].d/ un fisier de forma SnrNumeServiciu si KnrNumeserviciu.

Exemplu: S10network si K10network (optional).

Fisierele care incep cu litera S se executa la intrarea in runlevelul respectiv iar cele care incep cu litera K

se executa la iesirea din runlevelul respectiv.

Ordinea de executie a fiecarui serviciu este importanta si se stabileste in functie de numarul care

urmeaza dupa litera S sau K.

Fisierele din /etc/rc[0-6].d/ sunt de fapt symlinkuri catre fisierele din /etc/init.d/ - directorul global cu

startup files. Fiecare fisier din /etc/init.d/ trebuie sa poata primi ca parametru start|stop|reload|restart.

Exemplu: executia fisierului /etc/rc3.d/S10network este echivalenta cu executia scriptului

/etc/init.d/network start.

Page 110: Curs Linux Cma

Nota

rc = Runlevel Script / resource control

Managementul serviciilor

Pentru a stabili ce servicii pornesc la butare avem mai multe optiuni:

1) Varianta 1 (manuala)

a) se creaza un script in /etc/init.d/ care sa porneasca serviciul atunci cand primeste parametrul start si

sa-l opreasca atunci cand primeste parametrul stop.

b) se creaza un symlin in /etc/rc2.d/ catre /etc/init.d/nume_script. Acesta trebuie sa fie de forma

SnrNume. Exemplu: S99firewall

2) Varianta 2

Se foloseste comanda update-rc.d

Exemplu

1. Pornire serviciu ssh in mod default (cuvantul cheie default porneste serviciul in runlevel 2,3,4 si 5

si-l opreste in 0,1 si 6)

update-rc.d ssh defaults

2. Remove the symlink from /etc/rc[0-6]d/. Serviciul nu va mai porni in runlevelul specificat.

update-rc.d ssh remove

3. Stabilire runlevel explicit in care se porneste/opreste serviciul

update-rc.d ssh start 0123 stop 456

Nota: ssh este numele scriptului din /etc/init.d catre care se vor vrea symlink-urile

corespunzatoare.

Oprire/Pornire de servicii:

Pentru a opri/porni un serviciu exista in principiu 2 modalitati.

1. Folosind startup scripts si pasand argumentul start, stop sau restart.

Exemplu:

/etc/init.d/ssh start

/etc/init.d/network restart

2. Folosind comanda service

Exemplu:

service sendmail start

service apache2 stop

service ssh restart

Page 111: Curs Linux Cma

Comanda service ruleaza scriptul pe care il primeste ca parametru ( Exemplu: sendmail) cu optiunile

aferente (start, stop etc). Scriptul trebuie sa se gaseasca in /etc/init.d/

Nota

/sbin/service este un script de shell

Daca nu dorim sa cream cate un script pentru fiecare serviciu putem adauga comenzi in fisierul

/etc/rc.local care este executat dupa terminarea tuturor celorlalte scripturi de initializare.

Trebuie sa existe un symlink catre el in /etc/rc[0-6].d/

Page 112: Curs Linux Cma

10 Diverse » 10.2 Administrarea pachetelor software

Administrarea pachetelor software

10.2.1 deb & apt-get

10.2.2 rpm

Exista 2 posibilitati principale pentru managementul noilor programe (instalare/dezinstalare/update

etc).

1.Instalarea de programe folosind fisiere binare, care au fost deja compilate pentru o anumita distributie

si platforma hardware

2. Compilarea surselor respectivelor programe. Marea majoritate a programelor din Linux sunt

programate in C ( Exemplu: Kernelul, aproape toate serverele etc) si se compileaza folosind gcc (GNU C

Compiler)

Instalarea/dezinstalarea/update-ul de programe direct prin compilare este in general greoi fiindca nu

exista un management centralizat care sa tina evidenta fiecarui fisier cu care a venit programul, locatia

lui pe hard disk etc. Avantajele compilarii sunt in principal cresterea flexibilitatii (optiunile de instalare) si

performantei. Administratorul poate compila un server doar cu optiunile necesare task-ului sau si-l

poate optimiza pentru o anumita platforma.

Exista distributii de linux bazate pe compilare ( Exemplu: Gentoo, Slackware, LFS) precum si distributii

bazate integral pe fisiere binare deja compilate ( Exemplu: SuSE, RedHat, Fedora, CentOS, Debian,

Ubuntu/Kubuntu, Knoppix, Mandriva).

Nota

Compilarea de programe se poate realiza inclusiv pentru distributiile bazate pe fisiere binare, iar

cunoasterea modului de compilare a programelor pe Linux este OBLIGATORIE pentru orice Admin

chiar si daca se foloseste o distributie precum SuSe, RedHat sau Ubuntu.

Important

In Linux notiunea de instalare a unui program este echivalenta cu copierea fisierelor componente in

anumite locatii. Dezinstalarea unui program este echivalenta cu stergerea fisierelor care fac obiectul

programului respectiv.

Principalele formate binare sunt: RPM si DEB.

Page 113: Curs Linux Cma

10 Diverse » 10.2 Administrarea pachetelor software » 10.2.1 deb & apt-get

deb & apt-get

Un format binar foarte des intalnit si folosit este deb. Acesta isi are originea in Debian si se foloseste

acum pe orice distributie Debian Based (Debian, Ubuntu, Kubuntu, Knoppix, Damm Small Linux, Mepis,

Linex, Xandros etc).

Nota

Numele Debian a fost dat de creatorul acestei distributii Ian Murdock si reprezinta o combinatie

intre numele sotiei sale Debra si numele sau Ian.

Un fisier deb este de fapt o arhiva Unix de tip ar care contine 2 alte arhive gzip sau bzip. Intr-una se

gasesc informatii metadata (versiune, release, dependinte etc) iar in cealalta binarele efective ale

programului care se gasesc in deb.

Nota

root este singurul user care poate instala/dezinstala/actualiza aplicatii. Comenzile specifice se

ruleaza de catre root (anterior s-a executat su) sau se ruleaza de catre un user neprivilegiat si sunt

prefixate cu sudo.

Programul folosit pentru instalarea, stergerea sau modificarea programelor instalate din deb-uri se

numeste dpkg. De multe ori acesta se foloseste cu ajutorul unui alt program numit apt. Synaptic este o

interfata grafica pentru apt. Pentru a instala synaptic (in cazul in care nu exista) se ruleaza: sudo apt-get

install synaptic

Page 114: Curs Linux Cma

apt-get

apt-get este o aplicatie in linie de comanda folosita pentru managementul pachetelor deb si este

considerat user back-end tool pentru apt

Mod folosire:

apt-get [options] [command] [package ...]

Comenzi:

update = se foloseste pentru sincronizarea caracteristicilor pachetelor software instalate in sistem cum

Page 115: Curs Linux Cma

ar fi versiunea acestora cu sursele acestora din repositoarele specificate in /etc/apt/sources.list . Se

recomanda rularea comenzii apt-get update inainte de rularea lui apt-get folosind optiunea upgrade. Cu

ajutorul acestei comenzi apt-get ia la cunostinta despre ultimele versiuni existente in repozitoare.

upgrade = se foloseste pentru instalarea automata a ultimei versiuni a tuturor pachetelor instalate in

sistem din repositoarele specificate in /etc/apt/sources.list. Pachetele sunt automat downloadate din

repositoare si upgradate la ultima versiune. NU se instaleaza pachete noi si nu se dezinstaleaza pachete

deja instalate.

dist-upgrade = pe langa procesul de upgrade, optiunea dist-upgrade are grija in mod inteligent si de

dependintele pachetelor care se upgradeaza.

install nume-pachet1 nume-pachet2 etc = se foloseste pentru instalarea de noi programe din

repozitoare impreuna cu dependintele necesare.

remove nume-pachet1 nume-pachet2 etc = se foloseste pentru dezinstalarea respectivelor pachete fara

a sterge si fisierele de configurare. Daca se doreste stergerea inclusiv a fisierelor de configurare se

foloseste optiunea purge.

check = reprezinta un tool de diagnostic folosit pentru update-ul cache-ului pachetelor precum si

verificarea dependintelor cu probleme

clean = sterge pachetele downloadate din repositor (cache-ul pachetelor) si care au fost sau nu deja

instalate.

Optiuni:

-m = ignora pachetele lipsa

-d = doar downloadeaza pachetele, dar nu le si instaleaza

-f = repara "broken dependencies"

Exemplu: apt-get -f install bind9

-y = se asuma raspunsul yes la orice intrebare. Folositor pentru upgrade automat.

-h = printeaza help-ul comenzii

-V = printeaza versiunile pachetelor care se instaleaza

Exemplu: apt-get -V install bind9

Nota

1. Daca se doreste generarea unei liste cu toate pachetele instalate in sistem se poate rula: dpkg --

get-selections > installed-software

2. Daca se doreste afisarea tuturor fisierelor continute intr-un pachet se ruleaza dpkg -L

NUME_PACHET.

Exemplu: dpkg -L coreutils

3. Daca dorim sa aflam din ce pachet face parte un fisier se foloseste optiunea -S a lui dpkg.

Exemplu: dpkg -S /bin/ls

Page 116: Curs Linux Cma

4. Daca dorim sa instalam un pachet deb pe care-l avem local pe disk se ruleaza dpgk -i

NUME_PACKET.

Page 117: Curs Linux Cma

10 Diverse » 10.2 Administrarea pachetelor software » 10.2.2 rpm

rpm

Nota

Toate exemplele si conceptele acestui curs au fost realizate si explicate pentru Ubuntu sau alte

distributii derivate din Debian. Informatiile din acest sub-capitol sunt folositoare persoanelor care

folosesc distributii bazate pe rpm-uri.

RPM reprezinta un acronim recursiv de la RPM Package Manager. Initial s-a numit Red Hat Package

Manager si a fost dezvoltat de firma RedHat.

RPM se refera la 2 aspecte:

1. Un format de fisier binar care reprezinta un program/aplicatie

2. O aplicatie care ruleaza in consola in modul text folosita pentru instalare, dezinstalare, update si

interogare a bazei de date cu toate programele RPM instalate.

RPM foloseste o baza de date care se gaseste in /var/lib/rpm. Este formata din fisierul Packages care

contine informatii de tip metadata despre rpm-urile instalate precum si alte fisiere folosite cu scop de

indexare.

Numele unui packet RPM este de cele mai multe ori conform unui "standard" si contine urmatoarele

informatii:

a) numele programului

b) versiunea programului

c) package release: identifica distributia pentru care a fost compilat (fc6, mdv, rhel4, suse100 etc)

d) arhitectura pentru care a fost compilat (i386, i686, athlon, noarch). noarch se refera la pachete care

nu sunt compilate pentru o arhitectura anume ( Exemplu: fonturi, sau alte elemente folosite de alte

aplicatii).

Exemplu: apache-1.3.33-6mdk.x86_64.rpm

lyx-1.4.3-3.fc4.i386.rpm

Un fisier rpm este format din urmatoarele componente:

1) Lead (identifica fisierul ca fiind rpm si contine headere absolute)

2) Semnatura digitala

3) Header (meta information - package name, version, file list, arhitecture)

4) arhiva gzip cu binarele programului

Distributiile de Linux care folosesc RPM sunt urmatoarele (lista incompleta):

RedHat Enterprise Linux

Fedora Core

Page 118: Curs Linux Cma

Mandriva

CentOS

OpenSuSE

Yellow Dog (Fedora pentru PowerPC)

Turbo Linux

Comanda rpm

rpm OPTIONS package_name

Optiuni:

-i = install

-q =query

-e = erase

-F = freshen (upgrade doar daca o versiune mai veche exista deja)

-U = upgrade (instaleaza pachet daca pachetul nu exista sau upgrade pachet daca exista. Daca exista

versiunea mai veche este stearsa)

-v = verbose

-f file_name = query package owning file

-l = list files in package

--force = forteaza instalarea chiar daca nu sunt satisfacute dependintele

Exemplu

1. Afiseaza toate fisierele documentatie ale pachetului samba

rpm -qd samba

2. Afiseaza numele pachetului din care face parte un fisier din sistem

rpm -qf /usr/bin/clamav

3. Afiseaza toate fisierele care fac parte dintr-un pachet

rpm -ql tightvnc

4. Reinitializeaza baza de date daca aceasta se corupe

rpm --rebuilddb

5. Afiseaza toate RPM-urile instalate in sistem

rpm -qa

6. Instalare programe din rpm-uri locale sau direct de pe Internet

rpm -ivh httpd-1.3.3.fc4.rpm

rpm -ivh ftp://rpmfind.net/linux/fedora/core/4/i386/os/Fedora/RPMS/gftp-2.0.18-2.i386.rpm