Správa užívatelov 2

Úloha

Vytvorte na serveri 250 žiackych a 50 učiteľských užívateľov.

  1. Nájdite na intrenete cca 300 slovenských mien. Uložte si ich do prvého stĺca tabuľky. Mená sa nesmú opakovať. Odstránte duplicitné mená zo súboru dát.
  2. Do ďalšieho stĺpca "vypočítajte" meno osoby
  3. Do ďalšieho stĺpca "vypočítajte" priezvisko osoby
  4. Do ďalšieho stĺpca "vypočítajte" prihlasovacie meno osoby podľa nasledovného pravidla: Prihlasovacie meno tvoria štyri znaky priezviska a dva znaky mena. Napríklad Peter Plesník bude mať prihlasovacie meno plespe
  5. Odstránte z prihlasovacieho mena diakritiku
  6. Pridajte ďalší stĺpec kde umiestnite informáciu či ide o učiteľa alebo žiaka. A ďalší stĺpec kde bude prihlasovacie heslo (123456)
  7. Vytvorte si vstupný CSV súbor zatiaľ iba s dvomi riadkami - s jedným žiakom a s jedným učiteľom
  8. Pridajte do systému dve nové skupiny ucitelia ziaci. Skupiny pridajte tak aby ich GID bolo 500(ucitelia) a 501(ziaci).
  9. Vytvorte skript pre import užívateľov do systému. (Možete upraviť skript z internetu vlastné podmienky).
  10. Odladte si skript na vstupnom testovacom CSV súbore
  11. Zavolajte vyučujúceho na kontrolu naimportovaných užívateľov
  12. Funkčný skript využite na finálne vytvorenie všetkých 300 užívateľov

Teória

Príprava vstupných dát

Na prípravu vstupních dát použite tabuľkový kalkulátor (napr excel). K zvládnutiu úlohy je potrebné pracovať s excelom na "vyššej úrovni", ako sa zvyčajne prezentuje na maturitách (klinutie na štýl tabuľky, a ofarbovanie políčok). Je potrebné poznať funkcie LEFT, RIGHT, LEN, CONCATENATE, LOWER a poznať ako sa s nimi pracuje Výsledkom by mala byť tabuľka ktorá obsahuje všetky relevantné údaje pre vytvorenie konta užívateľa. (full name, login name, password, )

Pre prácu s linux serverom využijeme vzdialený prístup pomocou SSH prostredníctvom programu putty. na prihlásenie použite svoju IP adresu a užívateľa tester. Môžete sa skúsiť prihlásiť aj ako správci, ale zistíte že budete odmietnutý. Systém je totiž nastavený tak že správca sa nemôže hlásiť po sieti. Program putty najdete na D:\putty

Na vzdialenú správu systému využijeme zmenu identity úžívateľa pomocou príkazu su Použite ale variantu su -, ktorá aj nastaví správne premenné prostredia. Inak by ste niektoré správcovské programi nedokázali jednoducho spúštať.
su je skratka od superuser a dovoľuje prebrať identitu hocijakého iného užívateľa. Samozrejme že ale musíme vedieť jeho prihlasovacie heslo. Obecne sa teda dá príkaz použiť

ps - username
Kde username je platné užívateľské meno

Rozdiely v ukladaní textu v OS Windows, Unix a macOS

Prenos textových súborov medzi OS Windws a OS Unix (Linux), nie len o prekopírovaní súboru z jedného počítača na druhý

Hlavný rozdiel v ukladaní textu v operačných systémoch Windows, Unix a macOS spočíva v znakoch, ktoré sa používajú na označenie konca riadka. Ide o tzv. riadiace znaky (znaky nového riadka), ktoré historicky pochádzajú z čias písacích strojov.

Operačný systém Skratka Názov znakov (ASCII) Vizuálna reprezentácia Hexadecimálne hodnoty
Windows (a DOS) CRLF Carriage Return + Line Feed \r\n 0x0D 0x0A
Unix (Linux, macOS) LF Line Feed \n 0x0A
Klasický Mac (pred OS X) CR Carriage Return \r 0x0D

Podrobný popis rozdielov

1. Windows (CRLF)

Systémy Windows používajú kombináciu dvoch znakov:

Táto kombinácia (\r\n) odráža mechaniku starých tlačových zariadení, kde bolo potrebné vykonať oba kroky.

2. Unix / Linux / macOS (LF)

Systémy Unixového typu, vrátane moderného macOS (OS X a novšie), používajú iba jeden znak:

Tento prístup je efektívnejší; moderné terminály a editory interpretujú samotný znak LF ako prechod na nový riadok vrátane návratu na začiatok.

3. Klasický Mac (CR)

Staršie operačné systémy Mac (pred prechodom na Unix základ) používali iba jeden znak:

Problémy s kompatibilitou

Rozdiely v znakoch konca riadka môžu spôsobovať problémy pri prenose textových súborov medzi rôznymi OS: Moderné textové editory a vývojové nástroje (ako napr. Git, VS Code, Sublime Text) zvyčajne vedia tieto rozdiely automaticky rozpoznať a správne spracovať.
Skript ktorý ale číta údaje zo súboru csv tak na konci riadka vidí zpáve znak ^M. Zhodou okolností je na konci prihlasovacie heslo užívateľa. Ak tam tento znak necháme tak sa načíta aj tento chybný znak a uloží sa do hesla. Výsledok potom je že prihlasovanie s daným heslom nefunguje.

Samozrejme že tento problém sa vyskytuje všeobecne a je už pomerne jednoduchým spôsobom vyriešený. Je potrebné si nainštaľovať balík dos2unix Po prenose súboru z windows do unix sveta si môžete overiť či tam tie neželané znaky máte. Stačí si súbor otvoriť editorom mcedit (alebo atisnutím klávesy F4). Na konci riadka tieo znaky takmer určite uvidíte. Ich odstránienie sa urobí spustením príkazu

dos2unix menoSuboru
. tento príkaz aotomaticky odstráni nežiaduce znaky ktoré v OS windows označujú konce riadkov v celom súbore. Opäť sa o tom dá presvedčiť v editore mcedit

Skript pre import užívateľov

#!/bin/bash if [ -z "$1" ] then echo "Pouzitie scriptu: ./<script.sh> <subor>.csv" exit 1 fi while IFS=";" read -r full_name space first_name length last_name four two login group_letter password do group=$([[ "$group_letter" == "u" ]] && echo "ucitelia" || echo "ziaci") adduser --disabled-password --gecos "$full_name,,,," $login echo -e "$password\n$password" | passwd $login usermod -aG $group $login done < $1
Tento skript si treba uložiť do toho istého adresára kde sa nachádza datový súbor vo formáte CSV. Skript musí byť spustitelný. Teda po vytvorení mu je treba nastaviť príslušné právo execute