User Tools

Site Tools


linux-admin:capitole:capitol-17

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
linux-admin:capitole:capitol-17 [2016/10/13 18:18]
mihaic
linux-admin:capitole:capitol-17 [2016/10/13 18:38] (current)
mihaic [[8] Configurații de rețea (cont.) (1.5p)]
Line 1: Line 1:
 ====== 17. Bune practici ====== ====== 17. Bune practici ======
  
-TODO+==== Slide-uri ====
  
-===== Subiecte abordate =====+[[http://​koala.cs.pub.ro/​training/​res/​linux-admin/​slides/​cap-17.pdf|Slide-uri capitol 17]]
  
-  * TODO +<​html>​ 
-  ​* TODO +  ​<​center>​ 
-  ​* TODO+    <iframe src="​http://​docs.google.com/​viewer?​url=http://​koala.cs.pub.ro/​training/​res/​linux-admin/​slides/​cap-17.pdf&​embedded=true"​ width="​600"​ height="​470" ​  ​style="​border:​ none;"></​iframe>​ 
 +  ​</​center>​ 
 +</​html>​
  
-==== Utilitare folosite ​====+===== Exerciții =====
  
-  * TODO +===== [1] Structură de directoare =====
-  * TODO +
-  * TODO+
  
-==== Bune practici ====+Creați următoarea structură de directoare și de fișiere, denumite exact ca mai jos (în ''/​home/​training''​):​
  
-  * TODO +<​note>​ 
-  TODO +Î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. 
-  ​TODO+</​note>​
  
-===== Resurse utile =====+  * ''​seriale/''​ (director). Acesta va conține fișierele:​ 
 +      * ''​suits''​ 
 +      * ''​grey'​s anatomy''​ 
 +      * ''​dr. who''​ 
 +      * ''​downton abbey''​ 
 +      * ''​house md''​ 
 +  * ''​carti/''​ (director). Acesta va conține următoarele directoare:​ 
 +      * ''​rusia/''​ 
 +         * ''​dostoievski''​ 
 +         * ''​tolstoi''​ 
 +      * ''​marea britanie/''​  
 +          * ''​shakespeare''​ 
 +          * ''​charles dickens''​ 
 +          * ''​joanne k rowling/''​ 
 +          * ''​john ronald reuel tolkien''​ 
 +      * ''​franta/''​ 
 +          * ''​balzac''​ 
 +          * ''​jean de la fontaine''​
  
-  ​TODO +<note warning>​Verificarea la acest exercițiu se face arătând trainerului ​**o singură comandă**, pentru directoarele ''​seriale''​ și ''​carti''​.</​note>​
-  ​TODO+
  
-==== Slide-uri ​====+===== [2] Utilizatori și permisiuni =====
  
-[[http://koala.cs.pub.ro/​training/​res/​linux-admin/​slides/​cap-17.pdf|Slide-uri capitol 17]]+  * Adăugați în sistem utilizatorii''​harry'',​ ''​meredith'',​ ''​wilson'',​ ''​gandalf'',​ ''​vladimir''​Toți utilizatorii vor avea parola ''​training''​. 
 +  * Configurați permisiunile asupra directorului ''​rusia''​ astfel încât utilizatorul ''​vladimir''​ are drepturi depline și restul utilizatorilor (inclusiv grupul ce deține fișierul) nu au niciun drept 
 +  * Configurați permisiunile astfel încât utilizatorul ''​harry''​ are drepturi depline asupra directorului ''​joanne k rowling''​ și ''​gandalf''​ are doar drepturi de citire (și de navigare în interiorul directorului,​ adică drept de execuție). Ceilalți nu au nici un drept asupra directorului.
  
-<​html>​ 
-  <​center>​ 
-    <iframe src="​http://​docs.google.com/​viewer?​url=http://​koala.cs.pub.ro/​training/​res/​linux-admin/​slides/​cap-17.pdf&​embedded=true"​ width="​600"​ height="​470" ​  ​style="​border:​ none;"></​iframe>​ 
-  </​center>​ 
-</​html>​ 
  
-===== Exerciții =====+===== [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:  
 +  *  home directory-ul lui 
 +  * identificatorul utilizatorului (UID) 
 +  * Dacă utilizatorul există în sistem: afișează procesele deținute de acesta și următoarele informații despre acestea: PID, PPID, CPU load, MEM load și comanda care a pornit procesul respectiv.  
 +  * Sortează procesele după câtă memorie au ocupat. 
 +  * Trimite semnalul ''​SIGINT''​ procesului care consumă cea mai multă memorie. 
 + 
 +<note Indicaț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. 
 +</​note>​ 
 + 
 +===== [4] Servicii de rețea ===== 
 + 
 +  * Instalați în sistem serverul web ''​apache2'',​ apoi porniți daemon-ul aferent serviciului web ''​apache2''​. După ce serviciul e pornit, determinați pe ce port ascultă conexiuni serviciul web ''​apache2''​.  
 +  * Scanați ce porturi sunt deschise pe serverul ''​rosedu.org''​. 
 + 
 +<note Indicații generale>​ 
 +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'':<​code>​ 
 +service <​nume_serviciu>​ start 
 +service <​nume_serviciu>​ restart 
 +service <​nume_serviciu>​ stop 
 +</​code>​ sau folosind scriptul său aferent din ''/​etc/​init.d'':<​code>​ 
 +/​etc/​init.d/<​nume_serviciu>​ {start|stop|restart} 
 +</​code>​ 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. 
 +</​note>​ 
 + 
 +===== [5] Montare de sisteme de fișiere ===== 
 + 
 +  * Creați un folder ''/​mnt/​dummy''​  
 +  * Creați un fișier care are doar octeți de zero de 100 MB numit ''​zero100M.dat''​. Creați un sistem de fișiere ''​ext3''​ peste fișierul ''​zero100M.dat''​ folosind comanda ''​mkfs.ext3''​.  
 +  * Montați un sistem de fișiere de tip ''​ext3''​ în ''/​mnt/​dummy''​ 
 + 
 +<​note>​ 
 +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''​. 
 +</​note>​ 
 + 
 + 
 +===== [6] Logging ===== 
 + 
 +  * Verificați dacă daemonul de ''​syslog''​ este instalat 
 +  * Configurați sistemul astfel încât TOATE mesajele din sistem sa fie înregistrate în ''/​var/​log/​all_logs''​. Verificați acest lucru. 
 + 
 +<note Indicație>​ 
 +î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''​.  
 +</​note>​ 
 +  * Configurați sistemul astfel încât fisierul ''/​var/​log/​all_logs''​ să fie rotit zilnic, folosind până la maxim 20 de fișiere, care ulterior să fie comprimate. 
 +<note Indicație>​ 
 +Configurația se face în ''/​etc/​logrotate.conf'',​ ''​man logrotate''​ pentru exemple 
 +</​note>​  
 + 
 + 
 +===== [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!
  
-==== Demo-uri ====+Î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.
  
-TODO+<​note>​ 
 +Configurațiile se fac în fișierul ''/​etc/​bash.bashrc''​
  
-TODO+<code bash> 
 +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 
 +(...) 
 +</​code>​ 
 +</​note>​
  
-==== TODO: Exercițiu 1 ====+===== [8] Configurații de rețea (cont.) =====
  
-TODO+  * **(1p)** Configurați static lookup table astfel încât să nu fie necesară interogarea DNS pentru adresele: ''​swarm.cs.pub.ro'',​ ''​elf.cs.pub.ro'',​ ''​ocw.cs.pub.ro''​ 
 +       * Primul pas este să determinați adresa IP pentru cele trei servere
  
-==== TODO: Exercițiu 2 ====+===== [9] Mass user add script =====
  
-TODO+Descărcați spreasheet-ul [[https://​docs.google.com/​spreadsheets/​d/​1z448_KQaH1h-Yqp0thEYKTnuCywPEhJGk0I649UWJLU/​edit?​usp=sharing|de aici]] în format CSV. Folosiți '',''​ ca separator. Pe baza CSV-ului realizați un script care: 
  
 +  * afișează studenții sortați alfabetic
 +  * adaugă în sistem grupurile ce poartă numele facultății din care fac parte studenții
 +  * adaugă în sistem utilizatorii sub forma ''​prenume.nume''​ și îi adaugă în grup conform facultății la care sunt studenți
 +  * adaugă (neinteractiv) parola ''​training''​ pentru toți utilizatorii.
 +  * Nu puteți folosi ''​adduser''​ în script
linux-admin/capitole/capitol-17.1476371923.txt.gz · Last modified: 2016/10/13 18:18 by mihaic