Administrare, configurare şi intreţinere servere
From linux360
Contents
Introducere
Acest articol descrie CAF-ul (Common Access Framework) pentru administrarea, configurarea şi intreţinerea server-elor rulând Linux şi configurate de mine (@Dexter) pentru terţi.
Eu folosesc pentru instalari una din urmatoarele distributii:
- RedHat Linux (Hedwig, Zoot, Guiness, Cartman, Enigma, Valhalla, Psyche, Shrike)
- RedHat Enterprise Linux (Pensacola, Taroon, Nahant)
- CentOS (3.x, 4.x)
drept pentru care articolul prezent ar putea fi partial inutil/incomplet/gresit in cazul folosirii sale pentru alte distributii.
Distributiile pentru care acest aspect ar putea fi minim sau chiar inexistent sunt:
- Fedora Core (Yarrow, Heidelberg)
- Mandrake
- Mandriva
- Turbo Linux.
Managementul conturilor de utilizator
Teorie
Conturile de utilizator se impart din punct de vedere al destinatiei (utilizarii) in trei categorii:
- Conturi pentru conectare si acces/lucru interactiv la consola sistemului (conturi de shell)
- Conturi pentru conectare si acces la unul sau mai multe servicii (conturi de login)
- Conturi fara drept de conectare si acces, folosite doar pentru asigurarea paternitatii unor structuri de date (conturi de owner)
In mod evident, un cont de shell este si de login iar un cont de login este in acelasi timp si de owner.
Exemplu de cont de shell: root. Exemplu de cont de login: gigi, unde gigi are casuta de posta pe server-ul in cauza. Exemplu de cont de owner: apache, contul sub care ruleaza server-ul de web.
- Un cont de shell are ca $SHELL (si prin aceasta intelegem campul corespunzator interpretorului de comenzi din /etc/passwd sau din mecanismul de getpwent(); activ) unul dintre interpretoarele de comenzi trecute in /etc/shells (mai putin /sbin/nologin). De asemenea, un astfel de cont are, in cele mai multe cazuri si accesul permis prin SSH.
- Un cont de login are ca $SHELL pe /sbin/nologin sau executabilul server al protocolului la care i se da acces (e.g. /usr/sbin/pppd).
- Un cont de owner are ca $SHELL pe /sbin/nologin. De asemenea, de cele mai multe ori, un cont de owner are UID/GID sub 500 (fiind denumit cont de sistem in acest caz).
Adaugare si stergere
Pentru adaugarea si/sau stergerea conturilor de utilizator, se folosesc exclusiv programele standard useradd si, respectiv, userdel (prezente fie in /sbin, fie in /usr/sbin in functie de versiunea sistemului de operare -- lucru oricum transparent deoarece ambele directoare se afla in $PATH-ul lui root, singurul cont prin care avem acces la programele amintite).
- Sintaxa generala a lui useradd este:
<sh/>useradd -C"$NUME" [-r] [-s $SHELL] [-d $HOME] $USERNAME
- Sintaxa generala a lui userdel este:
<sh/>userdel [-r] $USERNAME
Unde parametrii si argumentele au semnificatia urmatoare:
- -C"$NUME" se foloseste pentru a seta numele complet al persoanei fizice/entitatii administrative careia ii corespunde contul, de asemenea cunoscut ca atributul GECOS asociat contului in cauza
- -r se adauga la useradd pentru a creea un cont de sistem (avand UID<500) si la userdel pentru a sterge directorul $HOME asociat contului in cauza
- -s $SHELL se foloseste pentru a specifica interpretorul de comenzi asociat contului in cauza. Pentru crearea unui cont de shell, acest parametru poate lipsi, sistemul completand automat cu /bin/bash.
- -d $HOME se foloseste la useradd pentru a specifica crearea unui alt director $HOME decat cel implicit (i.e. /home/$USERNAME)
- $USERNAME este numele de cont.
Atentie: comenzile date acopera exclusiv adaugarea (stergerea) contului in cauza in (din) sistem si cel mult a directorului sau $HOME (implicit prin copierea lui /etc/skel). Orice alta structura de date sau fisier de configurare va trebui tratata separat prin mecanismele specifice fiecarui caz.
Parole
Fiecare cont de utilizator are asociata o parola in sistem. Aceasta parola poate fi sau nu identica cu cea folosita pentru accesul la serviciile la care contul in cauza acorda acces.
Pentru modificarea parolelor asociate conturilor se va folosi exclusiv programul standard passwd.
Sintaxa lui passwd este:<sh/>passwd [-l|-u] $USERNAME
unde parametrii si argumentele au semnificatia urmatoare:
- $USERNAME este numele de cont ce se doreste modificat
- -l se foloseste pentru a bloca parola unui cont -- in majoritatea cazurilor duce la interzicerea oricarei tranzactii de login prin contul in cauza
- -u se foloseste pentru a debloca parola unui cont.
Modificare
De-a lungul existentei unui cont de utilizator, diverse componente ale sale pot fi modificate pentru a-l adapta la noile cerinte aparute in functionare.
Pentru modificarea componentelor unui cont de utilizator, se vor folosi exclusiv programele standard usermod, chfn si chsh.
Sintaxa lui usermod este<sh/>usermod [-C"$NUME"] [-d $HOME] [-s $SHELL] [-G$GRUP[,$GRUP[,...]]] [-l $USERNAME] $USERNAME
unde parametrii si argumentele au semnificatia urmatoare:
- -C, -d, -s au aceleasi semnificatii ca la useradd
- -G ia ca argument o lista de grupuri suplimentare (in afara grupului primar) in care va fi inscris contul in cauza. Atentie la lipsa spatiului dintre parametru si argumentul sau, precum si la lipsa spatiilor dintre subargumente si virgulele ce le separa; in fine, atentie la faptul ca lista de subargumente este interpretata absolut si nu cumulativ
- -l se foloseste pentru a schimba numele de cont.
Sintaxa lui chfn si chsh este<sh/>ch(fn|sh) $USERNAME
unde $USERNAME este numele de cont.
Verificare
Pentru a afla informatii detaliate despre un cont de utilizator, se va folosi programul standard finger care are sintaxa<sh/>finger $NAME
unde $NAME este fie numele de cont, fie unul dintre numele reale ale entitatii careia ii corespunde contul.
Pentru a afla din ce grupuri face parte un cont de utilizator, se va folosi programul standard id care are sintaxa<sh/>id $USERNAME
unde $USERNAME este numele de cont interogat.
Configurarea subsistemului de retea
Configurarea nodului
Orice masina UNIX are un nume (hostname) si Linux-ul nu face exceptie. Pentru evitarea oricaror probleme, este esential ca:
- acest nume sa fie calificat (i.e. de forma <numenod>.<numedomeniu>[,...].<numetld>)
- acest nume sa nu se schimbe pe toata durata vietii masinii.
Numele este configurat in fisierul /etc/sysconfig/network fiind valoarea variabilei HOSTNAME.
Orice nod TCP/IP are un default gateway. Acest gateway este configurat in acelasi fisier fiind valoarea variabilei GATEWAY.
Configurarea interfetelor de retea
Interfetele de retea se configureaza prin intermediul a doua fisiere:
- /etc/(modules|modproble).conf care contine corespondenta intre numele logic si dispozitivul fizic asociat prin linii de forma
alias eth$NR $DRIVER
unde $NR este numarul interfetei iar $DRIVER este numele modulului ce o deserveste - /etc/sysconfig/network-scripts/ifcfg-eth$NR care contine informatia de configurare efectiva pentru interfata in cauza ca si valori ale variabilelor IPADDR, NETMASK si altele ($NR are aceeasi semnificatie ca mai sus).
Prin traditie, in cazul unui nod cu mai mult de o interfata de retea legata cu exteriorul (i.e. fara lo), se asigneaza indexul 0 interfetei ce leaga nodul de reteaua parinte (e.g. Internet-ul) si apoi, incepand cu 1, se asigneaza cate un numar, in ordinea descrescatoare a importantei, fiecarei interfete ramase.
Atentie: interfetele de tip tunel beneficiaza de alta schema de numerotare, de cele mai multe ori dinamica.
Activarea schimbarilor
Dupa ce au fost aduse modificari configurarii subsistemului de retea, este necesara propagarea acestor schimbari prin comanda<sh/>service network reload
.
Configurarea subsistemului de nomenclatura
Teorie
Orice nod TCP/IP trebuie sa fie capabil a folosi un serviciu de nomenclatura (DNS) pentru a rezolva adrese simbolice la echivalentul lor numeric si vice-versa.
Acest mecanism imbraca, prin traditie, doua forme si anume cautarea intr-o baza de date locala nodului sau folosirea unui serviciu de nomenclatura. Pe Linux, prin traditie, baza de date locala are prioritate (i.e. este consultata prima) in fata oricarui alt mecanism extern.
Mai mult, in majoritatea cazurilor, aceste doua mecanisme sunt combinate printr-un API care ofera aplicatiilor o interfata unitara catre orice serviciu de nomenclatura activ pe nodul in cauza.
Editarea fisierului cu nume de noduri
Acest fisier se regaseste pe Linux ca /etc/hosts si are formatul standard (i.e. cate o intregistrare pe linie cu formatul$IP $NUME [$ALIAS [,...]]unde $IP este adresa numerica, $NUME este adresa simbolica iar $ALIAS pot fi zero sau mai multe sinonime simbolice pentru $NUME). Dupa modificarea acestui fisier, nu este necesara nici o alta manevra suplimentara, sistemul detectand automat schimbarea si aplicand modificarile.
Folosirea unui serviciu de nomenclatura extern
Aceasta functionalitate se controleaza prin intermediul fisierului /etc/resolv.conf care contine perechi de formanameserver $IPce reprezinta adresele numerice ale server(elor) de nomenclatura ce se intentioneaza a fi folosite.
Folosirea unui serviciu de nomenclatura local
Aceasta functionalitate se activeaza prin patru manevre:
- adaugarea pe prima linie a lui /etc/resolv.conf a liniei
nameserver 127.0.0.1
- activarea server-ului BIND (serviciul named)
- configurarea corespunzatoare a lui BIND (in fisierul /etc/named.conf)
- pornirea serviciului named