207
Linux Basic Administration Capitolul 1 - Introducere & Instalare 1.1 Istorie Unix/Linux Anii 60 Bell Laboratories (devizie 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. ă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

Curs Linux

Embed Size (px)

DESCRIPTION

Linux Basic Administration

Citation preview

  • Linux Basic Administration

    Capitolul 1 - Introducere & Instalare

    1.1 Istorie Unix/Linux

    Anii 60Bell Laboratories (devizie 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. 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).

    NotaXenix a fost versiunea Microsoft de Unix pentru PC cu procesoare Intel cumparata de la 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: NotaHello 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 si a programelor si utilitarelor GNU poata numele de GNU/Linux.

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

    GNU/Linux este un sisteme 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 Hewlard Packard (SVR4). Versiunea actuala este 11.i-AIX - Unix-ul celor de la IBM bazat pe SVR-BSD - Unix-ul celor de la universitatea din California.

    In prezent exista FreeBSD, OpenBSD, NetBSD. Prima distributie de Linux a fost Slackwarelansata in 1993. Ulterior au aparut multe alte distributii fiecare avand specificul sau:

    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

    1.2 Cosideratii Hardware

    1.2.1 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 Octombrie 2006.

    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 ale 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 etcb)G1 - Sleeping - are 4 substari ( Standby, Hybernation etc)c) G2 - Soft off - Aproximativ asemantor cu G3 (mechanical off) doar ca anumitecomponente 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

    NotaDaca se doreste pornirea calculatorului dintr-o alta retea de exemplu Internet, Routerul trebuie configurat pentru redirectarea pachetelor "Directed Broadcast"

    1.2.2 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

    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.

    NotaIn cazul hard disk-urilor SATA sau SCSI acestea sunt reprezentate prin fisierele/dev/sda, /dev/sdb, /dev/sdc si /dev/sdd

  • 1.2.3 RAID

    RAID (Redundant Array of Inexpensive/Independent Disks)

    DefinitieRAID 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 ansambl - JBOD (Just a Bunch Of Disks).

    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 performata a datelor dar este mai scump.

    Nivele RAID a) 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 singura unitate logica). Se poate scrie/citi in paralel. Daca un singur disk se defecteaza intreg sistemul devine inutilizabil.

    b) 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.

    c) RAID 2 - Nu se foloseste. d) RAID 3 si RAID 4 (Striped Set with dedicated parity) - minimum 3 discuri. e) 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.

    f) 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 diverite. RAID 5 necesita 3 partitii. Se recomanda folosirea partitiilor de aceeasi marime.

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

  • 1.2.4 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 RAIDAvantaje LVM:

    o se pot combina mai multe partitii sau hdd intr-un singur "volume group"o un "logical volume" poate fi largit cand este nevoie de mai mult spatiu intr-un mod

    foarte simplu. o se pot adauga noi "logical volumes" la "volume group" fara a fi nevoie de oprirea

    sistemului sau demontarea partitiilor.o se pot adauga noi hdd la "volume group" intr-un "running system"

    1.3 Boot Loader/Boot Manger

    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).

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

    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.

    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 grubului de la inceput, stergerea unui sistem de operare in care sa butam, modificare timeout etc trebuie sa modificam fisierul precizat mai sus.

    Structura acestuia este:

    default 0timeout 8title Windows XP rootnoverify (hd0,0)chainloader +1title Fedora Coreroot (hd0,1)kernel /boot/vmlinuz root=/dev/sda2 initrd /boot/initrdtitle Solarisrootnoverify (hd0,2)chainloader +1

    1.4 Instalare

    Instalarea unui sistem de operare Linux modern decurge asemanator cu instalarea sistemului Windows. Installer-ul recunoaste componentele hardware, instaleaza drivere

  • pentru acestea, partitioneza hard disk-ul, creaza utilizatori, configureaza reteaua etc. La sfarsit avem un sistem de operare Linux perfect functional.

    NotaIn 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 la majoritatea programele 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 circa 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 precum ext3 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.

    1.5 Linux rescue

    1.5.1 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.

    NotaCD-ul de rescue poate sa fie primul CD dintre CD-urile de instalare, un CD special in cazul Fedora sau DVD-ul de instalare. La butare folosind CD-ul de rescue trebuie aleasa butarea in modul rescue sau la anumite distributii precum Slackware sau Fedora Core 2,3,4,5 sau 6 se scrie linux rescue in linie de comanda din prima fereastra care apare.

    Etapele sunt urmatoarele (in cazul in care folosim primul CD Fedora, similar pentru alte distributii):

    1. Butam folosind CD-ul de rescue2. Scriem in linia de comanda din prima fereastra: linux rescue

  • 3. Sistemul va intra in modul rescue, iar dupa o serie de intrebari (daca pornim interfata de retea, alegerea limbii) va incerca sa identifice daca exista un sistem de operare Linux deja instalat. In acest caz acesta este montat automat in /mnt/sysimage

    4. Daca sistemul de operare anterior a fost gasit si montat in /mnt/sysimage trebuie sa executam comanda chroot /mnt/sysimage.

    Comanda chroot are urmatoarea sintaxa: chroot NEWROOT [COMMAND [ARGS]...] In mod normal comenzile si fisierele sunt cautate incepand cu root directory care este

    "/". chroot schimba "/" cu un nou director NEWROOT si executa comanda COMMAND cu argumentele ARGS. Daca comanda nu este specificata este pornit shellul default sau Bourne ( /bin/sh) daca acesta nu este definit. Comanda chroot permite executarea urmatoarelor comenzi in sistemul de fisiere avand root directory /mnt/sysimage (unde se gaseste sistemul de operare Linux care este deja instalat) in loc de "/"care contine sistemul de fisiere generat automat de modul rescue.

    5. Se instaleaza Grub cu vechea configuratie pe MBR prin comanda grub-install /dev/hda.

    Nota/dev/hda se inlocuieste cu fisierul care reprezinta Hard Disk-ul pe care se instaleazaGrub. In cazul hard disk-urilor SATA sau SCSI acestea sunt reprezentate prin sda, sdb,sdc si sdd.

    1.5.2 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. ImportantOrice sarcina administrativa din Linux poate fi realizata DOAR de userul root deci accesul la contul root este obgligatoriu. 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.

    Exista in general 2 posibilitati de recuperare a parolei de root: 1) Butarea sistemului folosind CD-ul de rescue. In cazul in care exista acces fizic la

    calculator se buteaza folosind CD-ul de rescue dupa care 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).

    In continuare exista 3 posibilitati:

  • a) Se editeaza folosind editorul preferat (Exemplu VI) fisierul /etc/shadow si se sterge hash-ul parolei lui root. Dupa restartarea calculatorul se poate loga ca root fara a mai cere parola

    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) mount /dev/sda1 /mntchroot /mntpasswd root

    2. Modificarea boot loader (GRUB). Scopul acestei metode este de a instrui Grub-ul sa buteze in run-level 1 (single mode) caz in care exista un singur utilizator si anume root caruia nu i se mai cere parola pentru logare. Ulterior se schimba parola folosind comanda passwd root.

    Capitolul 2 - Structura Linux

    2.1 Structura Linux

    Un sistem de operare este format din urmatoarele componente:

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

    mai apropriata de Hardware. Fizic kernelul se regaseste intr-un fisier iar de cele mai multe ori acesta este /boot/vmlinuz-version_no Functii:

    o I/O Managemento managementul memoriei RAM si SWAPo apelarea functiilor de sistem o lucrul cu echipamentele periferice prin drivereo managementul sistemului de fisiere, a proceselor care ruleaza

    Ultima versiune de Kernel este 2.6.24.2 (11.02.2008)

    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 de doua ori mai mare decat RAM. Pe Linux se foloseste o partitie speciala pentru memoria de tip Swap.

    ShellUtilizatorul 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. Sistemul de fisiere . Pentru detalii cititi subcapitolul "Sistemul de fisiere" a acestui curs.

    2.2 Structura unei comenzi

    Pentru managementul sistemului Linux (copiere de fisiere sau directoare, stergere,redenumire, afisare continut, listare, editare etc) se folosesc comenzi. Exista peste 400comenzi 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. Directorulin care se gaseste comanda trebuie sa fie in variabila PATH (la fel ca si in WINDOWS).

    NotaIn 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.

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

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

    ARGUMENTEo reprezinta scopul comenzii. Pot fi fisiere sau directoare, adrese IP, nume de

    domenii DNS etc

    2.3 Comenzile ls si less

    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

    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

    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

    2.4 Console/terminale virtuale

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

    Considerente istoriceInitial 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. Terminal windows, terminal emulator sau terminal virtual reprezinta o consola pornita din modul grafic.

    NotaFizic, 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

    2.5 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 opereare 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

    Exemplu1.Restartare calculator /sbin/init 6 2. Oprire calculator /sbin/init 03. Intrare in single-user mode /sbin/init 1 4. Revenire in runlevel 5 /sbin/init 5

    2.6 Sistemul de fisiere

    2.6.1 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 particularitarilor 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 ext3 - Third Extended File System (default pt. RedHat, Fedora, Ubuntu) sau ReiserFS (default pt. 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 dizpozitiv 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/hda1 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 sigur arbore chiar daca avem mai multe partitii sau hard disk-uri. Radacina sistemului de fisiere se numeste ROOT si se noteaza cu "/".

    2.6.2 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.

    NotaFisierele 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

    Mount Point - reprezinta locul din sistemul de fisiere UNIC in care se alipesc sisteme dfisiere de pe alte partitii locale sau externe, de pe CD-ROM/DVD-ROM, USB Stick etc.

    2.6.3 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 (BootLoder) 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

  • 2.6.4 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 aceiasi 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

    NotaAtentie !!! 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 lsl

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

  • 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

    fara optiuni modifica atime, mtime si ctime cu timpul curent

    -t DATE_TIMESTAMPmotifica atime si mtime cu DATE_TIMESTAMP in loc de data curentaex: touch -t 200301231230 a.txt

    -d DATE_STRING modifica atime si mtime cu DATE_STRINGex: touch -d '1 May 2006 10:22' /etc/group

    -amodifica doar atime cu data curenta sau cu o alta data daca este specificataex: #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_FILEex: touch -r b.txt a.txt

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

    2.6.5 Tipuri de fisiere

    In Unix si Linux fisierele se impart in urmatoarele categorii:1. fisiere standard (regular files). Acestea pot fi text, executabile, binare etc2. 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 aceiasi 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

    2.6.6 Links

    In Linux, comparativ cu Windows exista 2 categorii de linkuri:1) hard links

    o 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 aceiasi structura de tip inode;

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

    o 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;

    o nu se pot crea MANUAL hard linkuri catre directoare. Un director nou creat are default 2 hard linkuri. 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 16 subdirectoare. Al 17-lea este "." care se gaseste in orice director.

    o nu se pot crea hard linkuri intre fisiere de pe partitii diferite;o daca fisierul initial este sters, redenumit sau mutat hard linkul nu este influentat;o un hard link se creaza folosind comanda ln

  • 2) soft links / sym links o echivalentul shortcuts din Windows;o daca fisierul sau directorul initial este sters, mutat sau redenumit soft linkul nu mai

    functioneaza;o listarea continutului folosind comanda ls -F identifica un symlink dupa caracterul

    "@" de la sfarsitul numelui;o se pot crea symlinkuri catre directoare sau fisiere de pe alte partitii;o un symlink se creaza folosind comanda ln cu optiunea -s

    Exemplu1. 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

    2.6.7 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 "|".

    Exempluls -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

    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 ">>" Exempluls -l /bin > /home/student/binaries.txt - creaza fisierul /home/student/binaries.txt (daca acesta exista il suprascrie) care va contine outputul comenzii ls -l /binls -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 "&>"

    Exemplugcc 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.

    Capitolul 3 - Comenzi si Editoare

    3.1 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.

    Se caracterizeaza prin 3 modalitati de operare: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: 1. r - replace a char2. x - sterge caracterul de sub cursor.3. cw - change word - sterge cuvantul incepand cu litera de unde este pozitionat

    cursorul si ne introduce in Insert Mode.4. dd - sterge o linie5. 7dd - sterge 7 linii6. dw - sterge cuvantul de sub cursor incepand cu caracterul care se gaseste sub

    cursor.7. u undo8. G - se duce la sfarsitul fisierului9. $ - muta cursorul la sfarsitul liniei10. 0(zero) sau ^(carret) - muta cursorul la inceputul unei linii11. :x - muta cursorul pe linia nr. x. Exemplu: :37 - muta pe linia 3712. 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).13. y(yank) - echivalentul lui copy din Windows14. p(paste) 15. /(slash) - search forward.16. ? - search backward17. n - urmatoarea aparitie 18. N - aparitia anterioara19. ZZ (z mare, z mare) - salvare cu iesiere din fisier

    Insert ModeEste 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 cursorI - insereaza la inceputul unui randa - insereaza dupa caracterul de sub cursorA - insereaza la sfarsitul randului

  • o - insereaza pe randul urmator.

    Last Line ModeSe 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 quitq! - quit fara salvarew! - salvare fara quite! undoet nu - numeroteaza lini

    Editorul VI foloseste fisierul de configurare ~/.exrc. Acesta poate fi modificat pentru customizarea editorului.

    NotaVIM (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

    3.2 Comenzi de baza

    In Linux exista peste 300 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.

    ImportantCunoasterea 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

    Exemplu1. 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

    mkdir OPTIONS DIRECTORY

    Optiuni:-p = creaza atat directorul sau directoarele parinte daca acestea nu exista. Daca directorulparinte nu exista comanda mkdir returneaza eroare daca se foloseste fara optiunea -p-v = verboseExemplu: mkdir /home/stud/documents/privat

    ls - List

    Listeaza continut director sau listare informatii despre fisier.

    ls OPTIONS FILE/DIRECTORY

    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

  • Exemplu1. 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)

    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 intentional sunt The Sleuth Kit, Autopsy Browser si The Coroner's Toolkit (TCT).

    ImportantUn 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 din consola cu cumanda rm nu exista Recycle Bin.

    touch

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

    touch OPTIONS FILEcat

    Concateneaza si/sau afiseaza continutul unui fisier

    cat OPTIONS FILES

    Optiuni:-b = no. of nonblank lines-n = no. of output lines

    Exemplu1. 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 FILEless FILE

    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 importantacomanda pentru urmarirea modificarii in timp real a logurilor.

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

    tail -n +5 /etc/passwd tail -n 5 /var/log/messages Afiseaza in timp real ultimele 10 linii din fisierul cu loguri var/log/messages tail -f /var/log/messages

    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

    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 formatExemplu: du -ksh /etc/ df - disk free

    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

    whereis

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

    uptime

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

    date

    Afiseaza/modifica data 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. 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). NotaMulte 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.

    3.3 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 sine2. O expresie paranteza patrata (bracket expression) reprezinta o lista de caracterecuprinsa intre "[" si "]" si descrie un sigur 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 2caractere separate prin -(minus) si selecteaza(identifica) orice caracter care se gasesteintre cele 2 caractere din range expression.5. ^ (caret) in afara parantezelor drepte reprezinta un metacaracter care identificainceputul unei linii (daca este primul caracter din regex).6. $ reprezinta un metacaracter care identifica sfarsitul unei linii (daca este ultimulcaracter 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 ("\")

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

    grep '[01][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 '^[01][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

    3.4 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 nn for exactly n

    -type f = tipul este fisier -type d = tipul este director -user uname = userul este uname-group gname = grupul owner este gname-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 laregular expressions)

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

    find / -size +2M -user root -type f 2. Cauta fisiere din /etc care nu-l au owner pe root find /etc -not -user root

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

    2. grep

    grep [options] PATTERN [FILE...] - cauta sabloane de text (string patterns) in FILE sauin 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

    Exemplu1.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/passwd3. Cautarea tuturor proceselor numite httpd care ruleaza ps -ef | grep httpd

    Capitolul 4 - Useri

    4.1 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.

    DefinitieUn 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.

    ImportantIn 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.

    4.2 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/bashuser1:x:501:501:user folosit pentru teste:/home/user1:/bin/bashsshd: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 acesteialast_change: nr. de zile de la 1 Ian 1970 pana in ziua in care a avut loc ultima schimbare a paroleimin: nr minim de zile intre doua schimbari succesivemax: nr maxim de zile intre doua schimbari succesivewarn: nr. de zile dinaintea expirarii parolei in care userul este avertizatinactive: nr de zile de la expirarea parolei si pana cand contul este dezactivatexpire: nr. de zile de la 1 Ian 1970 de cand contul este dezactivat

    In fisierul /etc/login.defs se gasesc informatii care vor fi foloste 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

    Exempluprogramatori:x:100:dan,vali,georgeroot:x:0:root4.3 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 graficeFiecare 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 directoareledin scheleton_dir vor fi copiate in home, daca nu vor fi copiate cele din /etc/skel-k skeleton dir (doar impreuna cu -m)

    Exempluuseradd -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 existauseri in acel grup). Optiunea -r se refera la faptul ca va fi sters si home directory.

    passwd USER -> modifica parola utilizatorului user

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

    Exempluusermod -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

    Exemplugroupadd programatorigroupdel programatorigroupmod -n profesori programatori - schimba denumirea grupului programatori inprofesori.

    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 devinaparte a unui grup pentru a avea permisiunile grupului respectiv) cu un alt GUID folosindcomanda: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 aschimba 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 pentrufisiere si directoare.

    Exemplu1. Schimba ownerul fisierului a.txt in dan

    chown paul a.txt

    2. Schimba grupul owner al directorului /home/programe in programatorichgroup 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 schimbareaownerului si grupului atat pentru director cat si pentru toate subdirectoarele si fisierelecontinute de acesta. Acest mod de folosire al comenzii chown face ca comanda chgrp safie folosita extrem de rar in practica. chown -R paul.programatori /home/programe

    ImportantAtentie! 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 programatori4.4 su & sudo

    Odata logat in sistem un user poate "deveni" un alt user folosind comanda su (substitute user) care ruleaza un nou shell cu UID si GID noului user. Urmatoarele comenzi vor fi executate cu UID si GUID userului nou. su [-] [username] caracterul "-" are ca efect imprumutarea mediului de lucru (environmet) 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).

    ExempluSe editeaza fisierul /etc/pam.d/su astfel (pentru Fedora): auth sufficient /lib/security//pam_wheel.so trust use_uidauth required /lib/security//pam_wheel.so use_uid

    Prima linie specifica faptul ca este suficient ca un user sa faca parte din grupul wheelpentru 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 puteadeveni root. Alti useri chiar daca cunosc parola de root nu pot deveni root prin folosireacomenzii su.Numai una dintre cele 2 linii poate sa apara in fisier. Pentru a comenta o linie sefoloseste caracterul # (diez).

    ImportantUn 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 comenzi sudo este: sudo command. Commanda command este executata cu drepturi de root.

    ExempluToate exemplele de mai jos sunt rulate de useri neprivilegiati dar cu drepturi de root1. Instalarea unui program pe Ubuntu folosind apt-getsudo apt-get install k3b 2. Configurarea parametrilor placii de retea precum IP si Network Masksudo 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

  • intensivpe anumite distributii de Linux si mai putin pe altele. Distributiile bazate in mod intensivpe 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

    4.5 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# whostud :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)

    ImportantComanda 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.

  • Logurile se rotesc periodic. Pentru a vizualiza inregistrariile 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 afisatenume_terminal = logarile de la terminalul specificatExemplu: last pts/2

    4) lastlog - afiseaza inregistrarile din /var/log/lastlog (ultimile logari in sistem pentrufiecare user)

    Optiuni:-u user = lastlog doar pentru userul user

    Capitolul 5 - Sistemul de permisiuni

    5.1 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 danb) group (grupul proprietar al fisierului). Folosind grupul care detine fisierul se pot setadrepturi pentru un nr. mai mare de utilizatori. By default un fisier nou creat primeste cagrup owner, grupul principal al userului care-l creaza.Exemplu: Daca userul dan are ca grupul principal numit contabili, fisierele create deacesta 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.

    NotaConceptele 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 citireb) w (write) - dreptul de scrierec) x (execute) - dreptul de executie

    Aceste drepturi au efect diferit in functie tipul fisierului (fisier normal sau director).

    Permisiune Fisier Director

    read dreptul de citire alcontinutului fisierului dreptul de a afisa continutul directorului

    write dreptul de modificare al continutuluifisierului

    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.

    NotaDaca 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 fisiere NU si directoare) chiar daca pentru acele fisiere nu exista drepturi.

    Pentru a sterge/modifica continutul directorului trebuie sa avem atat w cat si x.

    Exemplu1. 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.

    5.2 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.

    Exemplu1. 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.

    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 NotaRoot 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 creare 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.

    5.4 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)Exemplu1. 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/tmpchmod +t /home/stud/tmp Totul este relativ la permisiuniele 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 marcheza su semnul "-" (minus). Exemplu

    r w - r - x r - -

    4 2 0 4 0 1 4 0 0Permisiune 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 bit2 pentru SGID4 pentru SUIDExempluEchivalenta dintre modul relativ si obsolut: rwx rwx rwx = 0777

    Exemplu: chmod 0777 /home/stud/a.txtr-- --- --- = 0400

    Exemplu: chmod 0400 /home/stud/b.txtrwS rw- r-x = 4664

    Exemplu: chmod 4664 /home/stud/c.txtrw- r-s rwx = 2657

    Exemplu: chmod 2657 /home/stud/d.txt

    5.5 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 ficreate fisierele in ceea ce priveste permisiunile.

    Exempludaca umask este 0002 noile fisiere create vor avea permisiunile 0664 iar directoarele 0775daca umask este 0022 noile fisiere create vor avea permisiunile 0644 iar directoarele 0755

    Exista o singura valoare umask pentru fiecare 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. NotaUmask nu trebuie schimbata decat in situatii deosebite. Modificarea umask poate duce la caderea intregului sistem.

    NotaOdata 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 initializarea al environment-ului utilizatorului precum ~/.bashrc.

    5.5 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.txtchattr -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 ascunseExemplu: lsattr a.txt

    Capitolul 6 - Procese

    6.1 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 acomenzii ls.

  • NotaProcesoarele (exceptie cele dual-core) 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.

    ImportantFiecare 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.

    6.2 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 astepta 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 seelibereaza 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 dacaeste 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 waitingReprezinta procesele care au fost indepartate din memoria principala si duse in memoria de tip swap. g) suspended and blockedReprezinta procesele care se gasesc in memoria de tip swap in starea de suspendare.

    Atributele unui proces

    Un proces detine urmatoarele atribute: a) PID -> Process ID - identificatorul unic al unui procesb) 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 procesule) Prioritate6.3 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 tabele de procese. Nu pot fi terminate in modul conventional (folosind comanda kill) ci doar de catre procesul parinte sau init daca procesul parinte termina executi