Sunteți pe pagina 1din 1

Tema 3 Partea II – Utilizatori UNIX

Sa se scrie in limbajul PERL un program numit uman.pl , care afiseaza doua liste
de conturi din sistemul UNIX :
- lista conturile utilizatorilor “umani”
- lista conturilor utilizatorilor “inumani” – conturile serviciilor - din sistemul UNIX.

Indicatii:
Lista conturilor utilizator din sistemul UNIX se afla in fisierul /etc/passwd .
Fisierul passwd de pe serverul local poate fi afisat sub Shell cu comanda :
cat /etc/passwd
sau pentru utilizatorii din retea :
getent passwd

Fisierul /etc/passwd contine cate o inregistrare pentru fiecare cont utilizator, astfel:

nume_cont:x:uid:gid:utilizator:home_directory:shell_utilizator

Exemple de inregistrari din fisierul passwd :


tia11ba:xyz:21541:3029::/home/tia11/tia11ba:/bin/bash
tia11mn:xyz:21486:3029::/home/tia11/tia11mn:/bin/bash

sync:xyz:5:0:sync:/sbin:/bin/sync
sshd:xyz:7:0::/var/run/sshd:/usr/sbin/nologin

Primele doua inregistrari corespund conturilor unor utilizatori umani, pe cand urmatoarele doua
sunt conturi ce deservesc servicii sistem (demoni care se activeaza la aparitia unei cereri care le
este adresata). Sper exemplu, sshd este un cont asociat serviciului Secure Shell DAEMON.

Scriptul uman.pl trebuie sa gaseasca si sa afiseze toate conturile utilizatorilor umani,


deci cele pentru care inregistrarea (linia) corespunzatoare din passwd se termina cu
sirul sh. Liniile care nu se incheie cu sirul sh corespund unor conturi pentru servicii, si
vor fi afisate in cea de-a doua lista.

Pentru a accesa informatia din fisierul passwd se va utiliza functia PERL getpwent(),
care returneaza un tablou de siruri pentru fiecare linie (cont) din fisierul passwd.
La primul apel functia getpwent()aduce linia corespunzatoare primului cont, la
urmatorul apel linia corespunzatoare celui de al doilea cont, samd. Cand este atins
sfarsitul fisierului passwd , functia returneaza un tablou vid.
Pentru stocarea conturilor utilizatorilor umani si pentru cele ale serviciilor se vor folosi
tablourile @uman respectiv @inuman.