Správa užívatelov 2
Úloha
Vytvorte na serveri 250 žiackych a 50 učiteľských užívateľov.
-
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.
-
Do ďalšieho stĺpca "vypočítajte" meno osoby
-
Do ďalšieho stĺpca "vypočítajte" priezvisko osoby
-
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
-
Odstránte z prihlasovacieho mena diakritiku
-
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)
-
Vytvorte si vstupný CSV súbor zatiaľ iba s dvomi riadkami - s jedným žiakom a s jedným učiteľom
-
Pridajte do systému dve nové skupiny ucitelia
ziaci. Skupiny pridajte tak aby ich GID bolo 500(ucitelia) a 501(ziaci).
-
Vytvorte skript pre import užívateľov do systému. (Možete upraviť skript z internetu vlastné podmienky).
-
Odladte si skript na vstupnom testovacom CSV súbore
-
Zavolajte vyučujúceho na kontrolu naimportovaných užívateľov
-
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:
- Carriage Return (CR): Návrat vozíka (
\r), presunie kurzor na začiatok riadka.
- Line Feed (LF): Posun riadka (
\n), posunie kurzor o riadok nižšie.
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:
- Line Feed (LF): Posun riadka (
\n).
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:
- Carriage Return (CR): Návrat vozíka (
\r).
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:
- Unix súbor vo Windows: V starších editoroch sa zobrazí ako jeden dlhý riadok (bez
zlomov).
- Windows súbor v Unix: V niektorých editoroch sa na konci riadka zobrazí nežiaduci znak
^M, čo môže spôsobiť chyby v skriptoch.
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