Design a site like this with WordPress.com
Aloitus

Linux palvelimet – Tehtävä 6

Seuraavat tehtävät ovat osa Haaga-Helian Linux palvelimet kurssia, jonka materiaalit löytyvät sivuilta: https://terokarvinen.com/2021/linux-palvelimet-ict4tn021-3018/ Tällä viikolla annettiin seitsemän kotitehtävää, joista ensimmäisessä tiivistetään artikkeleita ja loput tehdään Linuxissa.

Tehtävät suoritan kotiläppäriltäni, joka on Lenovo Thinkpad P53. Pääasiallisena käyttöjärjestelmänä koneessa on Windows 64-bit Enterprise. Linuxia pyöritän virtuaalikoneella VirtualBoxin kautta, johon on asennettuna Debian 64-bit.

”a) Kaikki tehtävät arvioitavaksi. Palauta linkit kaikkiin kotitehtäväraportteihisi. Arviointi tehdään ensisijaisesti tästä linkistä. (tässä alakohdassa ei tarvitse tehdä testejä koneella)”

”c) Uusi komento Linuxiin. Tee uusi komento, joka tulostaa käyttäjälle hyödyllistä tietoa. Kokeile, että komento toimii kaikista hakemistoista ja muillakin käyttäjillä kuin omallasi.”

Päätän luoda yksinkertaisen, mutta hyödyllisen komennon nimeltä pls. Tämä komento tulostaa ensin hakemistopolun, jossa käyttä on, jonka jälkeen listataan kansion tiedostot. Seuraan kurssiluennolla kirjaamiani muistiinpanoja. Aloitan luomalla pls tiedoston microlla.

micro pls

Lisään komennt pwd ja ls omille riveilleen.

Komennolla bash pls voi ajaa komennon

Toimii

Jotta komennon saa toimimaan kaikilla käyttäjillä, täytyy tiedoston alkuun lisätä Shebang, joka määrittää millä tiedostoa ajetaan. Tässä tapauksessa bash. Lisään pls -tiedoston ensimmäiselle riville #!/usr/bin/bash

Komento toimii tällä hetkellä vain minulla. Jotta se toimisi myös muilla käyttäjillä, täytyy tiedostolle antaa x -oikeus. x tarkoittaa execute, eli lupa suorittaa komento (wiki.archlinux.org).

Lisään execute oikeudet tiedostoon komennolla:

chmod ugo+x pls

Oikeuksien lisäyksen jälkeen tiedosto kopioidaan kansioon /usr/local/bin/ komennolla:

sudo cp pls /usr/local/bin/

/usr/local/bin kansioon kopioiminen vaatii sudo oikeudet

Nyt komentoni on käytettävissä kaikista kansioista ja kaikilla käyttäjillä.

d) Parametreja. Tee skripti, joka ottaa komentoriviparametreja. Esim. ’greetuser Tero’ joka tulostaa ”moi” ja parametrinä olevan nimen, esim ”moi Tero”.

Haluan tehdä yleishyödyllisen scriptin ja lähden hakemaan Googlesta inspiraatiota. Löydän sivun, jossa luodaan dd:llä 12 merkkinen salasana käyttäen satunaisia merkkejä. Yritän tehdä scriptistä parametrillisen niin, että käyttäjä saa päättää kuinka monta merkkiä pitkä salasana on. Luon tiedoston salasana ja syötän koodin.

#!/usr/bin/bash
echo 'Generating 12-character passwords'
for ((n=0;n<12;n++))
do dd if=/dev/urandom count=1 2> /dev/null | uuencode -m - | sed -ne 2p | cut-c-12
done

Ajan komennon bash salasana ja saan herjan:

Olin kirjoittanut cut komennon väärin. Korjaan cut-c-12 -> cut -c-12 ja saan seuraavan herjan:

Kokeilen hakea uuencoden paketinhallinnasta

sudo apt-get update

apt-cache search uuencode

Haen Googlesta vielä tueksi mahdollista oikeaa pakettia. Sharutils näyttäisi olevan oikea paketti (Debian), joten asennan sen.

sudo apt-get install sharutils

Koodi toimii

Seuraavaksi parametrisoidaan ohjelma. Muutan numeroon 12 viittaavat kohdat $1 parametriksi. Tekstin väliin lisättävä parametri on eroteltavat ’ ’ merkeillä.

Kokeilen ajaa koodia

Nyt koodi luo kaksi salasanaa, jotka ovat kaksi merkkiä pitkät. Tarvitaan siis kaksi parametriä, toinen on salasanan pituus ja toinen salasanojen määrä. Tutkin koodia hieman tarkemmin. for() looppi tulostaa halutun määrän salasanoja, kun taas cut -c- komento kertoo salasanan pituuden. Muokkaan cut -c-$1 -> cut -c-$2

Nyt koodi toimii halutulla tavalla. Lisään tiedostolle vielä -x oikeudet sekä kopioin sen /usr/local/bin/ kansioon, jotta sitä voi ajaa ilman bash etuliitettä mistä polusta vain.

chmod ugo+x salasana

sudo cp salanasa /usr/local/bin/

Toimii!

”e) Ratkaise valitsemasi vanha arvioitava laboratorioharjoitus tältä kurssilta. (Löytyy DuckDuckGolla, Googlella, linkeistä tältä sivulta tai hakemalla yläreunan hakutoiminnolla). Sovella tarvittaessa tehtäviä tähän toteutukseen sopivaksi, esimerkiksi PHP:n tilalta voi tehdä vastaavan Pythonilla; Flaskin tilalta käyttää Djangoa. Tai jättää pois jonkin epärelevantin kohdan.”

Valitsen labratehtäväksi 2017 kurssin https://terokarvinen.com/2017/arvioitava-laboratorioharjoitus-linux-palvelimet-ict4tn021-4-tiistai-alkusyksy-2017-5-op/

Aloitan luomalla uuden virtuaalikoneen ja asennan siihen 64-bittisen Debianin. Tehtävän suoritus alkaa 18.00. Päivitän paketinhallinnan ja asennan viimeisimmät päivitykset. Tämän jälkeen asennan palomuurin, micron ja pwgenin. Aktivoin palomuurin. Seuraavaksi asennan apachen ja laitan palvelimen päälle. sudo systemctl status apache2 näyttää että palvelin ei ole päällä, joten käynnistän koneen uudelleen.

Nyt apache käynnistyy ja localhost näyttää Apachen tervetulosivun

Ennen käyttäjien lisäystä laitan käyttäjäsivut päälle.

sudo a2enmod userdir

sudo systemctl restart apache2

Luon seuraavaksi käyttäjät. Avaan toiseen ikkunaan uuden Terminalin ja luon pwgenillä 20-merkkisiä salasanoja.

Luon käyttäjät Nakke Nertola, Håkan Värs, Einari Mikkonen, Einari Öljysaari ja Eija Vähäkäähkä. Käyttäjätunnukseksi valitsen sukunimen neljä ensimmäistä kirjainta + etunimen kolme ensimmäistä kirjainta. Käyttäjät ovat siis:

nertnak, varshak, mikkein, oljyein, vahaeij

Käyttäjälle valitsen pwgenin luomasta listasta vahvan salasanan.

Käyttäjät luotu

Luon omaan tomi kansioon uuden kansion nimeltä public_html ja luon microlla sinne index.html tiedoston. Nyt oman käyttäjän sivut toimivat.

Luon muille käyttäjille public_html kansion

sudo mkdir mikkein/public_html nertnak/public_html oljyein/public_html vajaeij/public_html varshak/public_html

Ja kopioin index.html tiedoston näihin kansioihin

sudo cp index.html /home/käyttäjätunnus/public_html/

Nyt muidenkin käyttäjien sivut näkyvät

Luon uuden komennon, joka tulostaa tervehdyksen Hello Ninja sekä koneen ip-osoitteen ja komentoa ajavan käyttäjän nimen. Luon microlla uuden tiedoston nimeltä hello. Tekstin printtaus tehdään komennolla echo, IP-osoite tulostetaan komennolla hostname -I ja käyttäjätunnus komennolla whoami. Lisään execute oikeudet ja kopioin tiedoston /usr/local/bin/ hakemistoon.

Seuraavaksi luodaan ninjaliikesivu, jossa Eija on ylläpitäjänä. Suoritan tehtävän käyttämällä Python Djangoa. Sitä varten asennan aluksi virtualenvin. Luon kehityssivuston Eijan käyttäjäkansioon.

sudo virtualenv --system-site-packages -p python3 env/

source env/bin/activate

Luon requirements.txt tiedoston ja laitan ensimmäiselle riville django. Asennan Djangon pip:llä.

Django asennettu

Luon uuden projektin django-admin startproject ninjasivusto. Huomaan, että ./manage.py runserver toimintoa ei voi ajaa ilman sudoa. Sudo taas ei suoraan toimi. Haen ohjeita netistä ja löydän komennon, jolla saan runserverin ajettua. (Stackoverflow)

sudo /home/vahaeij/env/bin/python manage.py runserver

Djangon testisivu toimii

Admin sivun saan toimimaan suorittamalla migraatiot. Luon superuser käyttäjä ./manage.py createsuperuser ja annan Eijan käyttätunnuksen ja luon uuden salasanan. Nyt Admin sivu toimii

Luon ninjaliikeille oman taulun manage.py:n startapp ninjaliikkeet komennolla. Tämän jälkeen muokkaan ninjasivusto/settings.py tiedostoa, johon lisään uuden rivin INSTALLED_APPS osioon.

Tämän jälkeen määrittelen ninjaliiketaulun kentät. Tämä onnistuu muokkaamalla ninjaliikkeet/models.py tiedostoa

Uusi taulu ilmestyy tietokantaan migraatioiden jälkeen. Jotta uusi taulu näkyy myös admin sivuilla, täytyy muokata /ninjaliikkeet/admin.py tiedostoa.

Jostain syystä taulun nimeksi jäi Ninjaliikes. Liikeiden lisääminen onnistuu oikein hyvin.

Muokataan vielä models.py tiedostoa, jotta liikkeen nimet tulostuvat selkokielisesti.

Liikkeiden nimet ja vaikeudet tulostuvat oikein

Uuden käyttäjän pystyy helposti lisäämään käyttöliittymästä. Lisään käyttäjän jussi ja annan hänelle superuser oikeudet.

Tehtävät on suoritettu. Lopetan tehtävän kello 19.27.

Advertisement

Yksi vastaus artikkeliin “Linux palvelimet – Tehtävä 6”

  1. […] T. 12.3.2022. Linux palvelimet – Tehtävä 6. Kotitehtäväraportti. Luettavissa: https://tomisoder.wordpress.com/2022/03/12/linux-palvelimet-tehtava-6/. Luettu: […]

    Tykkää

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out /  Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out /  Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out /  Muuta )

Muodostetaan yhteyttä palveluun %s

%d bloggaajaa tykkää tästä: