Zadanie JAC1/2012

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
  1. meno používateľa (login). Predpokladajte maximálnu dĺžku 32 znakov.
  2. informácia o hesle. Predpokladajte, že vždy obsahuje hodnotu x indikujúcu prítomnosť hesla v súbore /etc/shadow.
  3. UID: interný číselný identifikátor používateľa
  4. 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.
  5. 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:
    1. Meno a priezvisko používateľa, resp. názov aplikácie, ak nejde o ľudského používateľa
    2. Fyzická poloha používateľa — tradične označenie budovy a miestnosti
    3. Pracovné telefónne číslo
    4. Ďalšia možnosť kontaktu (súkromný telefón, ICQ číslo…)
  6. cesta k používateľovmu domovskému adresáru
  7. 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

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *