Kritériá na zadanie
- Termín na odovzdanie je 5. 2. 2013.
- Zadanie je jedno spoločné. Spokojne ho vzájomne konzultujte. Vypracovanie však musí byť samostatné a jednoznačné. Plagiátorstvo a identický kód sa nepripúšťa.
- Zadanie bude obhájené individuálne a ústne v termín uvedený vyššie.
- Zadanie musí implementovať celú požadovanú funkcionalitu. Vynechanie ktoréhokoľvek bodu má za následok zamietnutie zadania. Hodnotenie sa odvíja od spôsobu implementácie zadania a od odpovedí na kontrolné otázky zamerané na pochopenie vypracovania.
Znenie zadania
V unixovských operačných systémoch je /etc/passwd
súbor s informáciami o používateľoch systému.
Formát
Každý používateľ je uvedený na samostatnom riadku, kde sú údaje uložené v 7 položkách oddelených dvojbodkou.
smith:x:1001:1000:Joe Smith,Room 1007,(234)555-8910,(234)555-0044,email:/home/jsmith:/bin/sh
- meno používateľa (login). Predpokladajte maximálnu dĺžku 32 znakov.
- informácia o hesle. Predpokladajte, že vždy obsahuje hodnotu
x
indikujúcu prítomnosť hesla v súbore/etc/shadow
. - UID: interný číselný identifikátor používateľa
- GID: interný číselný identifikátor primárnej skupiny používateľa. Používateľ sa môže nachádzať vo viacerých skupinách (informácie sú uložené v
/etc/group
), tento faktor však ignorujte. - položka GECOS: komentár s popisom používateľskeho konta. Pre účely tohto zadania predpokladajte, že pozostáva zo štyroch položiek oddelených čiarkou:
- Meno a priezvisko používateľa, resp. názov aplikácie, ak nejde o ľudského používateľa
- Fyzická poloha používateľa — tradične označenie budovy a miestnosti
- Pracovné telefónne číslo
- Ďalšia možnosť kontaktu (súkromný telefón, ICQ číslo…)
- cesta k používateľovmu domovskému adresáru
- program, ktorý sa spustí po prihlásení. Štandardne je ním shell.
Požadovaná funkcionalita
Vytvorte aplikáciu, ktorá bude predstavovať editor databázy používateľov. Presnejšie, poskytovať nasledovnú funkcionalitu.
- načítanie súboru s používateľskými dátami. Umožnite používateľovi zadať cestu, s implicitnou možnosťou
/etc/passwd
. pridanie nového používateľa.
- Umožnite vyplniť položky 1., 5., 6. a 7.
- Informácia o hesle je vždy
x
- UID a GID nech sú vygenerované automaticky a majú rovnakú hodnotu. Nájdite maximálne dosiaľ pridelené UID/GID a zvýšte jeho hodnotu o jedna.
- Umožnite zadať štyri uvedené GECOS položky. Každá z týchto položiek je nepovinná.
odobratie používateľa na základe loginu
úprava používateľských informácií
- Umožnite zmeniť položky 5 a 7.
uloženie súboru s používateľskými dátami. Umožnite používateľovi zadať cestu, s implicitnou možnosťou
/etc/passwd
.- interakcia nech prebieha cez jednoduché textové menu, kde používateľ volí jednotlivé možnosti. Ukážka typického behu sa nachádza nižšie.
Ďalšie reštrikcie
- Dáta udržiavajte vo vhodnej dátovej štruktúre založenej na dynamickom zozname (napr. spájanom zozname.) Je zakázané implementovať „prietokové spracovanie“, tzn. s každou operáciou načítať súbor, vykonať zmeny a následne ich uložiť.
Ukážka behu
Typická ukážka behu:
passwd editor v.1.0.
---------------------
Zvolte moznost:
1) nacitat subor
2) pridat pouzivatela
3) odobrat pouzivatela
4) upravit pouzivatela
5) ulozit subor
6) ukoncit
Zadajte 1--6:
1
Zadajte cestu k suboru [enter: /etc/passwd]
[enter]
Nacitane data z `/etc/passwd`
Zvolte moznost:
1) nacitat subor
2) pridat pouzivatela
3) odobrat pouzivatela
4) upravit pouzivatela
5) ulozit subor
6) ukoncit
Zadajte 1--6:
2
Pridanie použivatela.
Zadajte login:
novotnyr
Zadajte meno a priezvisko:
Robert Novotny
Zadajte fyzicku polohu:
Jesenna 5, 65B
Zadajte pracovne telefonne cislo:
0999123451
Zadajte alternativny kontakt
[enter]
Je to v poriadku? [y/n]
y
Pouzivatel ulozeny, UID=12, GID=12