User Tools

Site Tools


linux-admin:capitole:capitol-14

Differences

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

Link to this comparison view

Next revision
Previous revision
linux-admin:capitole:capitol-14 [2016/06/06 18:24]
127.0.0.1 external edit
linux-admin:capitole:capitol-14 [2016/10/12 19:52] (current)
mihaic
Line 1: Line 1:
 ====== 14. Gestiunea serviciilor ====== ====== 14. Gestiunea serviciilor ======
  
-TODO+Serviciile sunt acele procese pornite la inițializarea sistemului ce nu au un terminal de intrare/​ieșire. De obicei parintele lor este ''​init''​. Este important să știm cum să le controlăm și modul în care vedem erorile generate de acestea.
  
 ===== Subiecte abordate ===== ===== Subiecte abordate =====
  
-  * TODO +  * Managementul serviciilor 
-  * TODO +  * Menținerea timpului sistemului 
-  * TODO+  * Menținearea jurnalelor sistemului
  
 ==== Utilitare folosite ==== ==== Utilitare folosite ====
  
-  * TODO +  * /​etc/​init.d/​ 
-  * TODO +  * update-rc.d 
-  * TODO+  * sysv-rc-conf 
 +  * /​etc/​xinet.d/​* 
 +  * netstat 
 +  * syslog.conf 
 +  * syslogd 
 +  * klogd 
 +  * logger 
 +  * journalctl 
 +  * /​etc/​systemd/​journald.conf 
 +  * /​var/​log/​journal 
 +  * rsyslog and syslog-ng
  
-==== Bune practici ==== 
  
-  * TODO +===== Exerciții =====
-  * TODO +
-  * TODO+
  
-===== Resurse utile =====+==== Demo-uri Servicii ​====
  
-  ​TODO +Folosiți comanda {{{netstat}}} pentru afișarea serviciilor de rețea ale sistemului <​code>​ netstat -tlpn </​code>​ 
-  TODO+** Verificati in manual functionalitatea fiecarui argument. 
 +* Opriți, porniți și reporniți serviciul SSH, folosind {{{/​etc/​init.d/​cups}}} și argumentele respectiv, {{{start}}},​ {{{stop}}}, {{{restart}}}. 
 +* Instalați serverul web Apache2, folosind <​code>​ apt-get install apache2 </​code>​ 
 +** Folosiți {{{netstat -tlpn}}} pentru a afla pe ce port ascultă conexiuni serverul ''​apache2''​.
  
-==== Slide-uri ​====+==== Exercițiu Servicii ​====
  
-[[http://koala.cs.pub.ro/training/res/medium-unix/slides/cap-14.pdf|Slide-uri capitol 14]]+# Instalați și configurați {{{sysv-rc-conf}}} pentru a configura runlevel-urile în care rulează serviciul Apache2. 
 +#* Pentru testare rulați comanda<​code>​ 
 +ls -l /etc/rcX.d/ | grep '​apache2'​ 
 +</​code>​ unde ''​X''​ este indicele runlevel-ului configurat folosind ''​sysv-rc-conf''​ (adică una dintre valorile 1, 2, 3, 4, 5, 6). 
 +# Instalați {{{xinetd}}}. 
 +# Activați în cadrul {{{xinetd}}} suportul pentru serviciul de {{{echo}}} (Hint: {{{/​etc/​xinetd.d/​echo}}}) 
 +#* Pentru verificare reporniți serviciul ''​xinetd''​ folosind comanda:<​code>​ 
 +sudo service xinetd restart 
 +</​code>​ 
 +#* Dacă ați configurat totul cum trebuie, ar trebui ca serviciul local ''​echo''​ să ruleze și să asculte conexiuni. Puteți verifica folosind comenzi de forma:<​code>​ 
 +pgrep -f xinetd 
 +sudo netstat -tlpn 
 +</​code>​ 
 +#* Comanda ''​netstat''​ vă va afișa că serviciul ''​xinetd''​ ascultă conexiuni pe portul 7, portul aferent serviciului ''​echo''​. Puteți verifica maparea portului ''​7''​ la serviciul ''​echo''​ în următoarele moduri: 
 +#** rulând comenzile<​code>​ 
 +sudo netstat -tlp 
 +sudo netstat -tlpn 
 +</​code>​ și văzând ca una folosește portul ''​7''​ cealaltă numele ''​echo''​ pentru serviciu. 
 +#** rulând comanda<​code>​ 
 +cat /​etc/​services | grep -w echo 
 +</​code>​ 
 +#** rulând comanda<​code>​ 
 +getent services echo 
 +</​code>​ 
 +#* Ca să testați că serviciul merge, vă conectați la serviciu folosind clientul TCP ''​netcat''​ în forma de mai jos:<​code>​ 
 +nc localhost 7 
 +</​code>​ adică vă conectați pe sistemul local pe portul ''​7''​. 
 +#** În continuare orice șir veți da va fi retransmis identic (''​echo''​ -- ecou) de server. 
 +#** Ca să închideți conexiunea ''​netcat''​ dată de comanda de mai sus folosiți combinația de taste ''​Ctrl+c''​. 
 +# Activați în cadrul {{{xinetd}}} suportul pentru serviciul de {{{telnet}}}. 
 +#* Instalați pachetul {{{telnetd}}}. 
 +#* Folosiți {{{dpkg -L telnetd}}} pentru a localiza calea către executabilul aferent serviciului. 
 +#* Creați fișierul {{{/​etc/​xinetd.d/​telnet}}} dacă nu există. 
 +#* Urmăriți ​[[http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-en-4/s1-tcpwrappers-xinetd-config.html exemplul de configurație de aici]]
 +#* După configurare reporniți serviciul ''​xinited''​ folosind comanda<​code>​ 
 +sudo service xinetd restart 
 +</​code>​ 
 +#* Dacă ați configurat totul cum trebuie, ar trebui ca serviciul local ''​telnet''​ să ruleze și să asculte conexiuni. Puteți verifica folosind comenzi de forma:<​code>​ 
 +pgrep -f xinetd 
 +sudo netstat -tlpn 
 +</​code>​ 
 +#* Comanda ''​netstat''​ vă va afișa că serviciul ''​xinetd''​ ascultă conexiuni pe portul 23, portul aferent serviciului ''​telnet''​. Puteți verifica maparea portului ''​7''​ la serviciul ''​echo''​ în următoarele moduri: 
 +#** rulând comenzile<​code>​ 
 +sudo netstat -tlp 
 +sudo netstat -tlpn 
 +</​code>​ și văzând ca una folosește portul ''​23''​ cealaltă numele ''​telnet''​ pentru serviciu. 
 +#** rulând comanda<​code>​ 
 +cat /​etc/​services | grep -w telnet 
 +</​code>​ 
 +#** rulând comanda<​code>​ 
 +getent services telnet 
 +</​code>​ 
 +#* Serviciul ''​telnet''​ este un serviciu de conexiune la distanță **necriptat**. Nu este recomandat pentru conexiuni în afara rețelei locale, și poate nici atunci. Pentru a testa serviciul ''​telnet'',​ folosiți clientul ''​telnet'':<​code>​ 
 +telnet localhost 
 +</​code>​ În caz de succes veți primi un prompt de autentificare unde vă veți autentifica folosind username ''​student''​ și parolă ''​student''​ și apoi veți obține un prompt. 
 +#** De la prompt și de la conexiunea ''​telnet''​ vă puteți deconecta folosind comanda ''​exit''​ sau combinația de taste ''​Ctrl+d''​. 
 +#** În caz de probleme cu conexiunea ''​telnet''​ puteți folosi combinația de taster ''​Ctrl+]''​ urmată de apăsarea tastei ''​q''​ și apoi de ''​ENTER''​ pentru a închide conexiunea. 
 +#* În caz de probleme consultați fișierele de jurnalizare ({{{/​var/​log/​syslog}}}).
  
-<​html>​ +==== Demo Logging ​====
-  <​center>​ +
-    <iframe src="​http://​docs.google.com/​viewer?​url=http://​koala.cs.pub.ro/​training/​res/​linux-admin/​slides/​cap-14.pdf&​embedded=true" width="​600"​ height="​470" ​  ​style="​border:​ none;"></​iframe>​ +
-  </​center>​ +
-</​html>​ +
- +
-===== Exerciții ​=====+
  
-==== Demo-uri ====+* Instalati daemonul {{{rsyslog}}}:​ <​code>​ apt-get install rsyslog </​code>​ 
 +* Instalati pachetul de documentație aferent: <​code>​ apt-get install rsyslog-doc </​code>​ 
 +* Parcurgeți fișierul de configurare {{{/​etc/​rsyslog.conf}}} si observati diferite optiuni disponibile <​code>​ vim /​etc/​rsyslog.conf </​code>​ 
 +* Utilitarul {{{journalctl}}} este utilizat pentru interogarea mesajelor generate de systemd: 
 +#* Pentru a verifica ultimele 50 mesajele:<​code>​ 
 +journalctl -n 50 
 +</​code>​ 
 +#* Pentru a verifica mesajele cu prioritate critică:<​code>​ 
 +journalctl -p “crit” 
 +</​code>​
  
-TODO+==== Exercițiu Logging ====
  
-TODO+# Ce efect are prezența unui minus ({{{-}}}) în cadrul unei intrări de fișier de tip jurnal în fișierul de configurare?​ 
 +#* Hint: http://​www.rsyslog.com/​doc/​rsyslog_conf_actions.html (căutați după cuvântul {{{minus}}}). 
 +# Adaugati în {{{/​etc/​rsyslog.conf}}} o intrare prin care TOATE mesajele din sistem sa fie înregistrate în {{{/​var/​log/​all_logs}}} 
 +#* **Important**:​ **Nu** creați fișierul de mână, îl va crea daemon-ul ''​rsyslog''​ la nevoie. 
 +#* Pentru verificare reporniți daemonul {{{rsyslog}}} folosind comanda<​code>​ 
 +sudo service rsyslog restart 
 +</​code>​ și testați recepționarea de mesaje in fișierul ''/​var/​log/​all_logs''​ trimițând mesaje folosind comanda logger, precum<​code>​ 
 +logger -p mail.err "​test"​ 
 +</​code>​ 
 +# Folosind comanda {{{logger}}},​ generați 5 mesaje de mail cu proritatea info, care să conțină textele %%"​mail log 1"%% ... %%"​mail log 5"%%, adică ceva de forma<​code>​ 
 +logger -p mail.info "mail log 1" 
 +</​code>​ 
 +# Modificați {{{/​etc/​logrotate.conf}}} astfel încat fisierul {{{/​var/​log/​all_logs}}} să fie rotit zilnic. 
 +# Configurați {{{rsyslog}}} pentru a asculta conexiuni în rețea. 
 +#* Urmăriți directivele de configurare secțiunea {{{MODULES}}} din {{{/​etc/​rsyslog.conf}}}. 
 +#* Pentru a verifica faptul că serverul ''​rsyslog''​ ascultă conexiuni și pe UDP vom lista serviciile care ascultă conexiuni pe UDP folosind comanda<​code>​ 
 +netstat -ulpn 
 +</​code>​ Dacă e configurat cum trebuie, comanda de mai sus va afișa și numele serviciului ''​rsyslog''​. 
 +#** Portul pe care ascultă conexiuni este portul ''​514'',​ lucru verificabil și prin rularea comenzilor<​code>​ 
 +netstat -ulp 
 +netstat -ulpn 
 +</​code>​ sau <​code>​ 
 +grep '​syslog'​ /​etc/​services 
 +</​code>​ sau <​code>​ 
 +getent services syslog 
 +</​code>​ 
 +# Realizați un script care ia din {{{/​var/​log}}} toate fișierele de logging de un anumit nivel, primit ca argument (''​err'',​ ''​warn'',​ ''​debug'',​ ''​info''​ și ''​log''​),​ indiferent de facilitate, și le arhivează într-un fișier cu numele ''​[NIVEL]_[DATA_CURENTA].tar.gz''​. 
 +#* Pentru obținerea datei folosiți o construcție de forma<​code>​ 
 +date +"​%Y-%m-%d"​ 
 +</​code>​ 
 +#* Pentru căutarea fișierelor necesare folosiți o construcție de forma<​code>​ 
 +find /var/log -name "​*.err*"​ 
 +</​code>​ unde ''​err''​ se poate înlocui cu nivelul de logging necesar. 
 +#* Pentru arhivare/​comprimare folosiți comanda<​code>​ 
 +tar -czf $nume-arhiva fisiere-de-arhivat ... 
 +</​code>​ unde ''​$nume-arhiva''​ este numele fișierului arhivă, iar ''​fisiere-de-arhivat ...''​ reprezintă lista de fișiere de arhivat. Poate fi vorba de output-ul comenzii ''​find''​. 
 +#* Dacă fișierul arhivă deja există la începutul rulării scriptului, ștergeți-l. 
 +#* Este nevoie să rulați comanda ca ''​root''​ pentru că aveți nevoie de privilegii pentru a lucra în directorul ''/​var/​log''​. 
 +#* Pentru verificare, listați conținutul arhivei folosind comanda<​code>​ 
 +tar -tzf $nume-arhiva 
 +</​code>​ unde ''​$nume-arhiva''​ este numele fișierului arhivă.
  
-==== TODO: Exercițiu 1 ====+==== Demo Time  ​====
  
-TODO+* Pentru a configura timezone-ul corect ({{{Europe/​Bucharest}}}) folosiți comanda<​code>​ 
 +sudo dpkg-reconfigure tzdata 
 +</​code>​ Este posibil să aveți configurația realizată corect. Dacă nu, realizați-o acum. 
 +* Folosiți fișierul {{{/​etc/​timezone}}} pentru afișarea timezone-ului curent folosind comanda<​code>​ 
 +cat /​etc/​timezone 
 +</​code>​ 
 +* Verificați configurarea corespunzătoare a zonei comparând fișierul de sistem ''/​etc/​localtime''​ cu cel așteptat<​code>​ 
 +diff -s /​etc/​localtime /​usr/​share/​zoneinfo/​$(cat /​etc/​timezone) 
 +</​code>​ 
 +** Dacă sunt identice, deci configurația este corectă, se va afișa un mesaj de forma %%"​Files ... are identical."​%%. 
 +* Verificați timpul curent folosind comanda<​code>​ 
 +date 
 +</​code>​ 
 +* Afișați data într-un nou format folosind comanda<​code>​ 
 +date +%d/%m/%Y 
 +</​code>​
  
-==== TODO: Exercițiu 2 ====+==== Exerciții Time====
  
-TODO+# Afișați data curentă în următoarele formate: 
 +#* numărul de secunde începând cu epoca Unix (1 ianuarie 1970). 
 +#* ziua și luna curentă în format numeric, separate prin minus. 
 +# Afișați zilele din luna curentă (Hint: {{{ncal}}}). 
 +# Afișați data Paștelui ortodox (Hint: {{{ncal}}}). 
 +# Afișați data Paștelui ortodox pentru anul 2011. 
 +# Configurați data curentă la valoarea de 1 ianuarie 2011. 
 +# Afișați timpul hardware (Hint: {{{hwclock}}}). 
 +# Configurați data curentă la valoarea dată de timpul hardware. 
 +# Instalați pachetul {{{ntpdate}}}. 
 +#* Verificați în fișierul {{{/​etc/​default/​ntpdate}}} serverele folosite pentru sincronizare folosind NTP. 
 +# Afișați data curentă, inclusiv secundele. 
 +# Folosiți {{{ntpdate}}} pentru sincronizarea la unul dintre serverele menționate în cadrul fișierului de mai sus. 
 +#* Trebuie să transmiteți numele serverului ca argument comenzii {{{ntpdate}}}. 
 +#** Puteți folosi un server din [[http://​www.pool.ntp.org/​zone/​ro | pool-ul din România]]. 
 +# Reafișați data curentă, inclusiv secundele. 
 +# Dacă doriți să configurați permanent servere NTP care să fie consultate, puteți scrie numele serverelor în fișierul ''/​etc/​ntp.conf''​ și să activați optiunea necesară în fișierul ''/​etc/​default/​ntpdate''​. 
 +#* După aceasta rulați, fără argumente, comanda ''​ntpdate-debian''​ care va consulta serverele din ''/​etc/​ntp.conf''​. 
 +#* Comanda ''​ntpdate''​ nu consultă fișiere de configurare. Pentru aceasta folosim comanda ''​ntpdate-debian''​. 
 +#** Comanda ''​ntpdate-debian''​ este un script shell (wrapper) peste ''​ntpdate''​. Puteți urmări conținutul ei prin intermediul comenzii<​code>​ 
 +vi /​usr/​sbin/​ntpdate-debian 
 +</​code>​
  
linux-admin/capitole/capitol-14.1465226663.txt.gz · Last modified: 2016/10/12 19:46 (external edit)