Differences

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

Link to this comparison view

gsr:laboratoare:laborator-02 [2016/10/19 16:29]
alexandru.carp
gsr:laboratoare:laborator-02 [2016/10/20 21:05] (current)
alexandru.carp [b) Reguli de jurnalizare]
Line 74: Line 74:
 Pentru a detașa un proces de un terminal se folosesc comenzi precum ''​nohup'',​ ''​dtach''​ și ''​disown''​. Pentru a detașa un proces de un terminal se folosesc comenzi precum ''​nohup'',​ ''​dtach''​ și ''​disown''​.
  
-Folosiți comanda ''​wget''​ pentru a descărca fișierul ''​.torrent''​ de [[http://​cdimage.debian.org/​debian-cd/​8.2.0/i386/​bt-cd/​debian-mac-8.2.0-i386-netinst.iso.torrent|aici]].+Folosiți comanda ''​wget''​ pentru a descărca fișierul ''​.torrent''​ de [[http://​cdimage.debian.org/​debian-cd/​8.6.0/amd64/​bt-cd/​debian-8.6.0-amd64-netinst.iso.torrent|aici]].
  
 ==== b) disown ==== ==== b) disown ====
Line 101: Line 101:
 Trimiteți un semnal procesului pentru a-i încheia execuția și apoi reporniți-l sub ''​nohup''​ astfel încât ieșirea standard (//standard output//, //stdout//) să fie redirectată la ''/​dev/​null''​ iar ieșirea de eroare standard (//standard error//, //stderr//) să fie redirectată în fișierul ''​err.log''​. Investigați cu ''​lsof''​ unde pointează descriptorii standard ai procesului. Trimiteți un semnal procesului pentru a-i încheia execuția și apoi reporniți-l sub ''​nohup''​ astfel încât ieșirea standard (//standard output//, //stdout//) să fie redirectată la ''/​dev/​null''​ iar ieșirea de eroare standard (//standard error//, //stderr//) să fie redirectată în fișierul ''​err.log''​. Investigați cu ''​lsof''​ unde pointează descriptorii standard ai procesului.
  
 +===== 03. Serviciul cron =====
 +
 +==== a) Demo: Inspectarea configurației cron ====
 +
 +/*
 +<​note>​
 +Pentru task-urile de ''​cron'',​ folositi masina virtuala din ''/​mnt/​sda5/​gsr/''​
 +</​note>​
 +*/
 +
 +Pentru a vedea configurația ''​cron''​ a sistemului inspectăm configurațiile din fișierele/​directoarele ''/​etc/​cron*''​. Fișierele ''/​etc/​cron.d/​*''​ și fișierul ''/​etc/​crontab''​ conțin configurații standard ''​cron''​ la nivelul sistemului. Liniile de configurare urmează sintaxa crontab așa cum este exemplificată [[http://​techie-experience.blogspot.ro/​2012/​10/​crontab.html|aici]].
 +
 +Pentru a vedea configurația pentru utilizatorul curent folosim comanda<​code>​
 +crontab -l
 +</​code>​
 +
 +Dacă suntem autentificați ca utilizator privilegiat,​ putem vizualiza configurația ''​cron''​ pentru un utilizator dat putem folosi comanda<​code>​
 +crontab -u <​username>​ -l
 +</​code>​
 +unde ''<​username>''​ este numele utilizatorului a cărui configurație dorim să o afișăm.
 +
 +Pentru a afla job-urile cron active per utilizator putem inspecta, ca utilizator privilegiat,​ directorul de spooling ''/​var/​spool/​cron/''<​code>​
 +sudo tree /​var/​spool/​cron/​
 +</​code>​
 +
 +În subdirectorul ''/​var/​spool/​cron/​crontabs/''​ se găsesc job-urile cron active (marcate per utilizator).
 +
 +==== b) Configurare cron cu standard output ====
 +
 +Dacă dorim să avem un job care să ruleze periodic vom crea o intrare în crontab-ul utilizatorului ''​root''​.
 +
 +Următorul exercițiu este didactic, ca să putem urmări comportamentul ''​cron''​.
 +
 +Comanda de mai jos este folosită pentru a afișa numărul de procese și thread-uri curente la nivelul sistemului:<​code>​
 +/bin/echo "Num processes: $(ps -e --no-header | wc -l), num threads: $(ps -eL --no-header | wc -l)"
 +</​code>​
 +
 +Folosim calea completă către comanda ''​echo''​ pentru că nu știm cum arată variabila ''​PATH''​ în mediul în care rulează ''​cron''​.
 +
 +Adăugați comanda de mai sus să ruleze la fiecare două minute prin alterarea crontab-ului utilizatorului ''​root''​. După adăugare urmăriți spool-ul cron în ''/​var/​spool/​cron/​crontabs/​root''​.
 +
 +În urma funcționării corecte, veți vedea o intrare in ''/​var/​log/​syslog''​ care arata ca a fost executata comanda.
 +
 +<note tip>
 +Dupa ce configurati regulile de cron, restartati serviciul ''​cron''​.
 +</​note>​
 +
 +<note tip>
 +Pentru crearea intrării în crontab-ul utilizatorului ''​root''​ urmăriți indicațiile de [[http://​techie-experience.blogspot.ro/​2012/​10/​crontab.html|aici]].
 +</​note>​
 +
 +==== c) Alte configurări cron ====
 +
 +Actualizați comanda din ''​cron''​ de mai sus astfel încât output-ul comenzii să fie adăugat într-un fișier dat. Output-ul să conțină și data la care a fost rulată comanda.
 +
 +Instalați pachetul ''​debsums''​. Urmăriți ce configurări de cron sunt adăugate la instalarea pachetului.
 +
 +<note tip>
 +Urmăriți conținutului unui pachet instalat folosind comanda<​code>​
 +dpkg -L <​nume-pachet>​
 +</​code>​
 +unde ''<​nume-pachet>''​ este numele pachetului.
 +</​note>​
 +
 +==== d) Configurare serviciu cron de pornire client Bittorrent ====
 +
 +Instalați un client de Bittorrent care funcționează în linia de comandă, precum ''​transmission-cli''​ sau ''​bittorrent''​ sau ''​bittornado''​ și porniți-l în background (folosind ''​nohup''​) ca să descarce un anumit conținut Bittorrent. Găsiți un fișier ''​.torrrent''​ pe Internet și descărcați-l.
 +
 +Apoi creați un script care să verifice dacă este pornit clientul Bittorrent pentru acel fișier ''​.torrent''​ și dacă nu este pornit să-l repornească.
 +
 +Plasați script-ul în crontab cu verificare la 10 minute.
 +
 +==== e) Gestionare client de BitTorrent folosind supervisord ====
 +
 +Folosiți [[http://​supervisord.org/​|supervisord]] pentru a porni și gestiona clientul BitTorrent de mai sus.
 +
 +<note tip>
 +Urmăriți exemplele de configurare din link-urile de mai jos:
 +  * https://​www.digitalocean.com/​community/​tutorials/​how-to-install-and-manage-supervisor-on-ubuntu-and-debian-vps
 +  * https://​serversforhackers.com/​monitoring-processes-with-supervisord
 +</​note>​
 +
 +===== 04. Serviciul NTP =====
 +
 +==== a) Funcționarea NTP ====
 +
 +Pentru a verifica funcționarea NTP (//Network Time Protocol//) o soluție este instalarea utilitarului ''​ntpdate''​. Dacă nu-l aveți instalat, instalați-l folosind comanda<​code>​
 +sudo apt-get install ntpdate
 +</​code>​
 +
 +Aveți două utilitare pe care le puteți folosi interschimbabil pentru actualizarea timpului sistemului: ''​ntpdate''​ care primește ca argument un server NTP, și ''​nptdate-debian''​ care folosește serverele configurate în ''/​etc/​default/​ntpdate''​ (directiva ''​NTPSERVERS''​).
 +
 +==== b) Configurare server NTP. Sincronizare sisteme ====
 +
 +Instalați, dacă nu este instalat serverul ''​NTP''​ prin intermediul pachetului ''​ntp''​. Serverul va porni automat și veți putea verifica faptul că ascultă conexiuni pe portul ''​123''​ UDP folosind comanda<​code>​
 +sudo netstat -ulpn
 +</​code>​
 +
 +Discutați cu 2-3 colegi și aflați adrese IP stațiilor pe care aceștia lucrează și adăugați configurare pentru serverul NTP în fișierul ''/​etc/​ntp.conf''​. După un timp se va crea un mesh de comunicare între serverele NTP din sala de laborator.
 +
 +<note tip>
 +Pentru a investiga la orice moment informații despre funcționarea serverului NTP și peer-ii cu care acesta comunică puteți folosi una dintre comenzile de mai jos<​code>​
 +ntpq -p
 +ntpq -pn
 +</​code>​
 +</​note>​
 +
 +<note tip>
 +Informații despre configurarea NTP găsiți în link-urile de mai jos:
 +  * http://​www.debianadmin.com/​ntp-server-and-client-configuration-in-debian.html
 +  * http://​www.tecmint.com/​install-and-configure-ntp-server-client-in-debian/​
 +</​note>​
 +
 +===== 05. Jurnalizare =====
 +
 +==== a) Investigare configuratie syslog ====
 +
 +Pe mașina virtulă verificați dacă daemonul de syslog este instalat (Hint: rsyslog).
 +<​code>​
 +root@heimdall:​~#​ apt-get install rsyslog
 +Reading package lists... Done
 +Building dependency tree       
 +Reading state information... Done
 +rsyslog is already the newest version.
 +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
 +</​code>​
 +
 +==== b) Reguli de jurnalizare ====
 +
 +Adaugati în ''/​etc/​rsyslog.conf''​ o intrare prin care TOATE mesajele din sistem sa fie înregistrate în ''/​var/​log/​all_logs''​
 +<​code>​
 +root@heimdall:​~#​ tail -n 1 /​etc/​rsyslog.conf
 +*.* -/​var/​log/​all_logs
 +
 +Se adauga un minus (-) pentru a se evita sincronizarea fisierului dupa fiecare mesaj syslog (fiind vorba despre toate mesajele din sistem).
 +</​code>​
 +
 +Creati fisierul ''/​var/​log/​all_logs'',​ apoi configurati owner-ul ca fiind user-ul sub care ruleaza ''​rsyslog'':​
 +<​code>​
 +# touch /​var/​log/​all_logs
 +# chown syslog:adm /​var/​log/​all_logs
 +</​code>​
 +
 +Reporniți daemonul ''​rsyslog''​ și verificați conținutul fișierului ''/​var/​log/​all_logs''​.
 +<​code>​
 +root@heimdall:​~#​ /​etc/​init.d/​rsyslog restart
 +Stopping enhanced syslogd: rsyslogd.
 +Starting enhanced syslogd: rsyslogd.
 +
 +root@heimdall:​~#​ tail /​var/​log/​all_logs ​
 +Nov  9 15:34:04 heimdall kernel: imklog 5.8.5, log source = /proc/kmsg started.
 +Nov  9 15:34:04 heimdall rsyslogd: [origin software="​rsyslogd"​ swVersion="​5.8.5"​ x-pid="​2604"​ x-info="​http://​www.rsyslog.com"​] start
 +</​code>​
 +
 +==== c) Generate mesaje cu logger ====
 +
 +Folosind comanda ''​logger'',​ generați 5 mesaje de log cu facilitatea mail și cu proritatea info, care să conțină textele "mail log 1" ... "mail log 5". Verificați prezența mesajelor în ''/​var/​log/​all_logs''​.
 +<​code>​
 +root@heimdall:​~#​ logger -p mail.info "mail log 1"
 +
 +root@heimdall:​~#​ logger -p mail.info "mail log 2"
 +
 +root@heimdall:​~#​ logger -p mail.info "mail log 3"
 +
 +root@heimdall:​~#​ logger -p mail.info "mail log 4"
 +
 +root@heimdall:​~#​ logger -p mail.info "mail log 5"
 +
 +root@heimdall:​~#​ tail /​var/​log/​all_logs ​
 +Nov  9 15:34:04 heimdall kernel: imklog 5.8.5, log source = /proc/kmsg started.
 +Nov  9 15:34:04 heimdall rsyslogd: [origin software="​rsyslogd"​ swVersion="​5.8.5"​ x-pid="​2604"​ x-info="​http://​www.rsyslog.com"​] start
 +Nov  9 15:36:55 heimdall root: mail log 1
 +Nov  9 15:36:57 heimdall root: mail log 2
 +Nov  9 15:36:58 heimdall root: mail log 3
 +Nov  9 15:36:59 heimdall root: mail log 4
 +Nov  9 15:37:00 heimdall root: mail log 5
 +</​code>​
 +
 +==== d) Rotirea fisierelor de log ====
 +
 +Modificați ''/​etc/​logrotate.conf''​ astfel încat fisierul ''/​var/​log/​all_logs''​ să fie rotit zilnic, folosind până la maxim 10 fișiere, fișire care să fie comprimate. Logurile trebuie să fie trimiste pe email la sysadmin@gsr.cs.pub.ro. (Hint: ''​man logrotate''​)
 +<​code>​
 +root@heimdall:​~#​ tail -n 8 /​etc/​logrotate.conf
 +/​var/​log/​all_logs {
 + missingok
 + daily
 + create 0660 root utmp
 + compress
 + rotate 10
 + mail sysadmin@gsr.cs.pub.ro
 +}
 +</​code>​
 /* /*
  
gsr/laboratoare/laborator-02.1476883744.txt.gz · Last modified: 2016/10/19 16:29 by alexandru.carp
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0