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

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/

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

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.

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

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.


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