Table of Contents

17. Bune practici

Slide-uri

Slide-uri capitol 17

Exerciții

[1] Structură de directoare

Creați următoarea structură de directoare și de fișiere, denumite exact ca mai jos (în /home/training):

În listing-ul de mai jos numele care se încheie cu / (slash) sunt nume de directoare. Numele care nu se încheie cu / (slash) sunt nume de fișiere obișnuite.

Verificarea la acest exercițiu se face arătând trainerului o singură comandă, pentru directoarele seriale și carti.

[2] Utilizatori și permisiuni

[3] Utilizatori și procese

Scrieți un script care pentru un anumit nume de utilizator (exemplificați pe training) afișează următoarele informații:

Încercați să prelucrați conținutul fișierului /etc/passwd pentru primele 2 subpuncte. Apoi înlănțuiți rezultatul prelucrării, folosind un anumit operator Bash cu o comandă ps. Pentru primele 2 bullet-uri puteți folosi și separat comenzile id, respectiv finger.

Deși htop este tool-ul cel mai potrivit pentru ultimele 2 bullet-uri, nu îl putem folosi decât în mod interactiv. Așa că avem nevoie de ps și să filtrăm output-ul comenzii, să folosim opțiunea --sort pentru sortare după coloanei de MEM load pentru a determina PID-ul procesului care consumă cele mai multe resurse.

[4] Servicii de rețea

Când nu știți cum se numește un pachet, dar știți aproximativ ce cuvinte cheie conține numele pachetului sau descrierea lui folosiți comanda apt-cache search <pattern>

Orice daemon/serviciu se pornește folosind fie comanda service:

service <nume_serviciu> start
service <nume_serviciu> restart
service <nume_serviciu> stop

sau folosind scriptul său aferent din /etc/init.d:

/etc/init.d/<nume_serviciu> {start|stop|restart}

Aveți nevoie de drepturi privilegiate pentru a rula comanda.

Pentru a afișa informații despre serviciile locale (inclusiv porturile pe care acestea ascultă conexiuni). Folosiți opțiunile pentru afișarea PID-ului și a numelui procesului și pentru afișarea doar serviciilor care ascultă (listen) conexiuni în rețea.

Pentru a scana porturile deschise de un server la distanță folosiți comanda nmap cu opțiunile aferente.

[5] Montare de sisteme de fișiere

Pentru montarea unui sistem de fișiere aflat pe un fișier (în cazul de față zero100M.dat) folosiți opțiunea -o loop la comanda mount.

[6] Logging

în /etc/rsyslog.conf e nevoie de o intrare. Apoi serviciul/daemonul syslog trebuie repornit. Pentru a verifica faptul că mesajele se salvează în /var/log/all_logs puteți genera mesaje folosing comanda logger.

[7] System info at startup

Realizați configurațiile necesare astfel încât de fiecare dată când deschide terminalul, utilizatorul training să fie întâmpinat de mesajul:Hello, training! Here are some statistics: data, our IP is $IP_ADDR, sysuptime, disk load. Adresa IP va fi cea a interfeței eth0.

În loc de data veți afișa data și ora sub forma: 12-01-2015,21:17:59.

În loc de sysuptime veți afișa informații despre când a avut loc ultimul boot (de cât timp este sistemul up), load average și câți useri sunt în prezent (si care) logați în sistem. Variabila $IP_ADDR va fi reținută în variabilă de mediu accesibilă oricărui proces și oricărui terminal!

În loc de diskload veți afișa informații despre primele 3 partiții care sunt cele mai încărcate, plus tipul sistemului de fișiere, ca spațiu ocupat.

Configurațiile se fac în fișierul /etc/bash.bashrc

training@uso:~$ cat /etc/bash.bashrc
(...)
export IP_ADDR=$(ifconfig eth0 | grep inet | tr -s ' ' | head -n 1 | awk -F '[ :]+' ' { print $4 }')
date +%d-%m-%Y,%H:%M:%S
echo $(uptime)
echo $(who)
df -hT | tr -s ' ' | sort -t ' ' -k 3n -r | tail -n +2 | head -n 3
(...)

[8] Configurații de rețea (cont.)

[9] Mass user add script

Descărcați spreasheet-ul de aici în format CSV. Folosiți , ca separator. Pe baza CSV-ului realizați un script care: