# 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.