Skip to content
Snippets Groups Projects
feladat.md 5.04 KiB
Newer Older
  • Learn to ignore specific revisions
  • Tóth Miklós Tibor's avatar
    Tóth Miklós Tibor committed
    # Gyakorlat
    
    ## 0. csatlakozás a VM-hez
    
    [see here](saját vm.md)
    
    Ha gondoljátok vagy ha valaki nem nézett videót/jegyzetet és nem érti mi van,
    akkor akár itt érdemes shellt mutogatni.
    
    ## 1. saját user létrehozása root jogokkal
    
    Mindenki választ magának usert (nem kell schacc legyen), aztán
    ```shell
    sudo useradd -m bela
    ```
    `-m` = legyen home mappa  
    ha megadják a `-G sudo` kapcsolót is, akkor nice, már van is sudo joguk,
    a kövi rész skippelhető
    
    legyen jelszó:
    ```shell
    passwd bela
    ```
    
    legyen sudo:
    ```shell
    sudo usermod -aG sudo bela
    ```
    ezzel lett sudo joga
    
    ### Alternatív
    
    legyen user:
    ```shell
    sudo adduser bela
    ```
    
    legyen sudo:
    ```shell
    sudo adduser bela sudo
    ```
    
    ---
    a végén jelentkezzetek át az új userbe
    
    
    ## 2. shell játszadozás
    
    Feladat: számoljuk meg, hogy a *Bee Movie* szövegében hányszor szerepel a
    kis és nagybetűs "bee" szó.  
    Ha lehet oldják meg maguktól, de vezethetitek is.
    
    A szöveg elérhető itt: https://home.sch.bme.hu/~mikewashere/linux/best_movie_ever.txt
    
    Vezessük végig őket lépésenként, hogy mit csinál a csomó parancs:
    
    ```shell
    curl https://home.sch.bme.hu/~mikewashere/linux/best_movie_ever.txt
    ```
    -> letölti a szöveget és kiírja
    
    olvassunk be less-sel
    ```shell
    curl https://home.sch.bme.hu/~mikewashere/linux/best_movie_ever.txt | less
    ```
    
    
    Na de oldjuk is meg a feladatot:
    
    Okés, de:  
    számolni a `wc`-vel lehet, de kéne szűrni a bee-kre, arra kell a `grep`,  
    de:  
    a `grep` az egész sort odaadja, amiben egyszer is ott a bee
    tehát szét kéne szedni úgy, hogy minden szó külön sor legyen  
    Megoldás: cseréljük ki a space-eket `\n`-re a `tr` használatával.
    
    ```shell
    curl https://home.sch.bme.hu/~mikewashere/linux/best_movie_ever.txt | tr " " "\n"
    ```  
    Az idézőjelek fontosak.
    
    Most már soronként jelenik meg, mehet a grep.  
    ```shell
    curl https://home.sch.bme.hu/~mikewashere/linux/best_movie_ever.txt | tr " " "\n" | grep -i bee
    ```  
    Na most van egy csomó bee-nk, mehet a wc.
    
    ```shell
    curl https://home.sch.bme.hu/~mikewashere/linux/best_movie_ever.txt | tr " " "\n" | grep -i bee | wc -l
    ```
    Elvileg **171**-et kéne kapni.
    
    Ha zavar minket a curl letöltés mutató szövege, akkor adjunk neki egy `2>/dev/null`-t.
    
    ```shell
    curl https://home.sch.bme.hu/~mikewashere/linux/best_movie_ever.txt 2>/dev/null | tr " " "\n" | grep -i bee | wc -l
    ```
    
    2 = stderr, /dev/null = speciális file, amibe bármit írhatunk, elveszik
    
    ---
    
    Feladat: A méhek száma évről évre csökken, *let's save the bees*!
    Írjuk bele a "bee"-ket egy fileba!
    
    ```shell
    curl https://home.sch.bme.hu/~mikewashere/linux/best_movie_ever.txt | tr " " "\n" | grep -i bee > save_the_bees.txt
    ```
    
    `nano save_the_bees.txt`-vel megleshetjük, hogy működött.
    
    ## 3. Script irogatás
    
    Feladat: csináljunk egy scriptet, ami megmenti a méheket, és egy tehénnel kimondatja, hogy
    hányan vannak.
    
    A `cowsay` nincs fent a VM-eken, telepítsétek.
    ```shell
    sudo apt install cowsay
    ```
    Nyugodtan próbálgassátok ki.
    ```shell
    cowsay hello
    echo hello | cowsay
    ```
    
    Csináljunk nano-val (vagy vim-mel, ha valaki azt szereti inkább)
    egy új file-t, nevezzük el `bees.sh`-nak.
    
    ```shell
    nano bees.sh
    ```
    
    Vezessétek végig őket a megírásán vagy csináltassátok meg velük, itt egy mintamegoldás:
    ```shell
    #!/bin/bash
    
    curl https://home.sch.bme.hu/~mikewashere/linux/best_movie_ever.txt | tr " " "\n" | grep -i bee > save_the_bees.txt
    echo $(cat save_the_bees.txt | wc -l ) méh van. | cowsay
    ```
    *A felső sor opcionális.*
    
    Ha megvan, futtassátok:
    ```shell
    bash bees.sh
    ```
    vagy, ha odatettétek az elejére a shebang-et:
    ```shell
    chmod +x bees.sh
    ./bees.sh
    ```
    
    ## 4. Webszerver telepítése
    
    Feladat: állítsanak be egy webszervert nginx-el, és rakjanak ki valami szöveget.
    
    Telepítés:
    ```shell
    sudo apt install nginx
    ```
    
    Magától elindul, nézzük meg:
    ```shell
    systemctl status nginx 
    ```
    
    Alapból a `/var/www/html`-t szolgálja ki, menjünk oda
    ```shell
    cd /var/www/html
    ls -la
    ```
    Látjuk, hogy root-é minden, adjuk oda a www-data-nak, magunknak meg adjunk www-data csoporttagságot
    és adjunk a csoportnak minden jogot rekurzívan.
    ```shell
    sudo chown -R www-data:www-data /var/www/html
    sudo usermod -aG www-data bela
    sudo chmod -R g+rwx /var/www/html
    ```
    `-R`: rekurzívan  
    vegyük fel a csoporttagságot, ehhez vagy ki és bejelentkezni kell vagy:
    ```shell
    newgrp www-data
    ```
    
    Most töröljük a korábbi weblapot és tegyünk ki valami sajátot:
    ```shell
    cd /var/www/html
    rm index.nginx-debian.html
    nano index.html # írjanak bele bármi funky szöveget
    ```
    
    ## 5. Csináljunk tűzfalat
    
    Az UFW (Uncomplicated FireWall) egy egyszerű tűzfalvezérlő progi.
    Nézzük meg fut-e:
    ```shell
    sudo systemctl status ufw
    sudo ufw status
    ```
    Fut, de ki van kapcsolva.
    
    Előszöris engedjük be az SSH-t és http-t, hogy ne zárjuk ki magunkat:
    ```shell
    sudo ufw limit ssh
    sudo ufw allow http
    ```
    
    A limit-tel limitálva engedélyeztük az ssh-t, így nem lehet gyorsan brute-force-olni.
    
    és kapcsoljuk be:
    ```shell
    sudo ufw enable
    sudo ufw status
    ```
    nice.
    
    ## Extra feladatötlet turbóújoncoknak
    
    Csináljanak valami fancy weboldalt. Bármit.