Design a site like this with WordPress.com
Aloitus

Linux palvelimet – Tehtävä 2

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.

z) ”Lue ja tiivistä. Tiivistelmäksi riittää muutama ranskalainen viiva per artikkeli. (Tässä z-alakohdassa ei tarvitse tehdä testejä tietokoneella)”

”Karvinen 2020: Command Line Basics Revisited

  • Moni komennoista on ajalta ennen internettiä tai Linuxia
  • Tärkeimmät Terminal komennot kansioissa liikkumiseen ovat
    • pwd (printtaa työkansion nimen)
    • ls (listaa tiedostot)
    • cd (siirtyminen kansioiden välillä)
  • Tärkeimmät Terminal komennot tiedostojen manipulointiin ovat
    • mkdir (luo kansion)
    • mv (siirtää tiedostoja)
    • cp (kopioi tiedostoja)
    • rmdir (poistaa kansion)
    • rm (poistaa tiedostoja)
  • man komennolla voi hakea manuaalista tietoa
  • Monessa ohjelmassa on sisäänrakennettu dokumentointi komento –help
  • Tabulaattorin painaminen auttaa kirjoituksessa

”YCombinator Hacker News, vapaavalintainen artikkeli kommentteineen Linuxin komentokehotteesta (Kommentit aukeavat siitä pienestä ”420 comments” linkistä. Riittää, kun silmäilet artikkelin ja kommentit soveltuvin osin, osa voi olla kirjan mittaisia etkä ehdi tässä lukea niitä kokonaan. Samoin tiivistelmäksi riittää muutama bulletti, ei tarvitse kattaa koko sisältöä)”

Postauksessa https://news.ycombinator.com/item?id=29568042 esitellään artikkeli (https://danluu.com/cli-complexity/)

  • Artikkelissa käydään läpi komentokehotteen komentojen historiaa
  • Vuonna 1979 v7 Unixissa oli 11 ls:ään liittyvää komentoa, kun taas mkdir:iä, cp:tä tai pwd:tä ei ollut vielä olemassa
  • Vuonna 2017 Ubuntu 17 ls:ään liittyviä komentoja oli jo 58
  • Kommenteissa ehdotetaan lukujen näyttämistä visualisointina
a) ”FHS. Esittele kansiot, jotka on listattu ”Command Line Basics Revisited” kappaleessa ”Important directories”. Näytä kuvaava esimerkki kunkin tärkeän kansion sisältämästä tiedostosta tai kansiosta. Jos kyseessä on tiedosto, näytä siitä kuvaava esimerkkirivi. Työskentele komentokehotteessa ja näytä komennot, joilla etsit esimerkit.”

Aloitan tehtävän Googlaamalla mikä on FHS. Kyseessä on wikipedian mukaan Filesystem Hieararchy Standard, eli standarditiedostohierarkia. FHS:ään kuuluvat tärkeät kansiot ovat:

  • /
  • /home/
  • /home/kayttaja
  • /etc/
  • /media/
  • /var/log/

Tehtävä alkaa kello 10.39. Avaan virtuaalikoneen, joka käynnistää automaattisesti Debian Linuxin. Klikkaan Terminalin auki ja annan komennon

pwd

pwd-komento

Oletuksena kun Terminalin avaa, ollaan kasiossa /home/tomi, joten aloitetaan tehtävä tästä kansiosta. Katsotaan mitä tämä kansio sisältää. Tiedostot listataan komennolla

ls

ls-komento

Kansio sisältää muita kansioita. Kokeilen kurkata jokaisen kansion sisään, komennolla

ls Kansio/

Missään kansiossa ei ole tiedostoja. Haluaisin löytää komennon, jolla listaan helposti kaikkien kansioiden sisällön kerralla. Kurssin sivuilta muistan komennon

ls –help

ls –help komennon listaus

Listauksen heti ensimmäisellä rivillä on -a parametri, joka listaa kaikki tiedostot joita hakemistossani on. Annan komennon

ls -a

ls -a listaus

Noniin, onhan siellä tiedostoja, mutta miksi ne eivät näkyneet ls Kansio/ komennolla? -a parametrin kuvauksessa oli ”do not ignore entries starting with ”. Oletan, että ne ovat piilotettuja tiedostoja, mutta Googletan ”Linux dot files”. Ensimmäinen vastaus sivulla https://askubuntu.com/questions/94780/what-are-dot-files selittää pistetiedostot hyvin. Piste (.) tiedoston nimessä on indikaattori bashille, että näitä tiedostoja ei näytetä normaalissa tiedostolistauksessa, sillä yleisesti ottaen piste-tiedostot sisältävät eri ohjelmistojen asetuksia.

Omaan kansioon tallentuvat muun muassa ladatut tiedostot, kuvat, videot ja dokumentit. Näitä eivät muut käyttäjät näe.

Askel taaksepäin

Seuraavaksi haluan siirtyä /home/ kansioon, eli yhden askeleen alaspäin nykyisestä kansiosta. Tämä onnistuu komennolla

cd ..

Haen kansion listauksen ls. Tässä kansiossa näyttäisi olevan vain yksi kansio nimeltä tomi. Jos käyttäjiä olisi useampi, ne näkyisivät tässä. Omalla käyttäjällä en todennäköisesti pääsisi muiden käyttäjien kansioon ilman super user oikeuksia.

Mennään taas askel taaksepäin / polkuun ja listataan tiedostot

Polku /

Näyttävät systeemitiedostoilta. Debianin wiki sivuilta löytyy selite initrd.img tiedostolle.

initrd provides the capability to load a RAM disk by the boot loader. This RAM disk can then be mounted as the root file system and programs can be run from it. Afterwards, a new root file system can be mounted from a different device. The previous root (from initrd) is then moved to a directory and can be subsequently unmounted.” (https://wiki.debian.org/Initrd).

Siirryn etc/ kansioon

cd etc/

Tässä kansiossa on paljon tiedostoja, jotka liittyvät järjestelmän asetuksiin. Command Line Basics Revisited mukaan kaikki tässä kansiossa olevat tiedostot ovat tekstitiedostoja. Päätän testata tätä käytännössä ja valitsen satunnaisesti yhden tiedostoista ja annan komennon

nano manpath.config

manpath.config

Tällä tiedostolla siis määritellään manuaalin kansiopolku. Samalla tekstinkäsittelyohjelma nano kertoo, että tätä tiedostoa ei voi ylikirjoittaa. CTRL + X poistuu ohjelmasta.

Siirryn seuraavaksi /media/ kansioon.

cd ..

cd media/

Täällä on kansio tomi, jossa ei ole mitään tiedostoja. /media/ kansio näyttää kaikki tietokoneeseen liitetyt irrotettavat medialaitteet, kuten usb- tai cd-asemat.

Siirryn takaisin / ja menen logikansioon

cd /var/log

/var/log

Tässä kansiossa on järjestelmän kattavat logitiedostot. Yritän avata user.log tiedoston

nano user.log

Pääsy evätty. Kokeillaan uudelleen komennolla

sudo nano user.log

user.log

Tänäänkin tullut monta merkkausta tähän logiin. Kaikki tärkeät kansiot ja niiden sisältö on käyty läpi. Lopetan tehtävän kello 11.25.

b) ”My CLI. Keksi jokin asia, jota haluaisit tehdä komentokehotteessa. Etsi ja asenna komentokehotteen paketinhallinnasta ohjelmat, joilla asian voi ratkaista. Asenna ainakin kolme itsellesi uutta komentorivillä (command line interface, CLI) tai tekstitilassa (text user interface, TUI) toimivaa ohjelmaa. Näytä, miten kuvitteellista ongelmaa voi ratkoa näillä ohjelmilla. Voit valita jonkin helpon tai yksinkertaistetun esimerkin.”

Aloitan tehtävän kello 12.20. Haen Googlesta inspiraatiota tehtävään. Löydän sivun https://medium.com/scalereal/10-cli-tools-%EF%B8%8F-for-developers-productivity-ea7244d791ea, jossa listataan 10 parasta CLI-ohjelmaa.

Autojump

Kokeilen asentaa ensiksi Autojump nimistä ohjelmaa, joka helpottaa kansioissa navigoimista. Kokeilen asentaa ohjelmaa komennolla

sudo apt-get install autojump

Asennus onnistuu

Eri kansioissa pitää käydä, ennen kuin niihin voidaan hypätä. Kokeilen käydä / sekä /etc kansioissa, jonka jälkeen palaan takaisin /home/tomi kansioon. Kokeilen komentoa:

j etc

ja saan vastaukseksi bash: j: command not found.Kokeilen perään autojump etc ja saan seuraavan herjan:

Kokeilen komentoa

autojump –help

Autojumpin help

Seuraavaksi kokeilen

autojump -a /home/

Saan saman herjan kuin aikaisemmin. Tarkistan vielä autojumpin githubista saisiko sieltä lisäneuvoja. Löydän Debian kohtaisen ohjeen: “All Debian-derived distros require manual activation for policy reasons, please see /usr/share/doc/autojump/README.Debian

Siirryn polkuun / ja katson mitä tuossa tiedostossa on sisällä

nano /usr/share/doc/autojump/README.Debian

Autojumpin Debian ohje

Avaan seuraavaksi Nanossa tiedoston /home/tomi/bashrc. Tänne pitäisi siis lisätä rivi . /usr/share/autojump/autojump.sh. Lisään tekstin tiedoston viimeiselle riville. Käynnistän virtuaalikoneen uudelleen. Nyt jännittää ja samalla epäilyttää voiko tämä toimia.

Kone käynnistyy uudelleen, avaan terminaalin ja käyn monessa eri kansiossa. Tämän jälkeen kirjoitan

j home

Autojump toiminnassa

Vau, sehän toimii ja itse ohjelma on todella kätevä. Tämä säästää monta komentoa ja merkkiä. Autojumpin asennuksessa ja tutkimisessa meni noin 30minuuttia aikaa.

TLDR

Seuraavaksi valitsen listalta TLDR-ohjelman. Asennan ohjelman komennolla

sudo apt-get install tldr

Kokeilen heti ohjelmaa kirjoittamalla

tldr ls ja saan herjan No tldr entry for ls. Parasta siis kurkistaa ohjelman help

tldr —help

Päivitän ohjelman cachen komennolla

tldr -u

Tietoja haetaan hetki, jonka jälkeen kokeilen uudelleen tldr ls ja homma pelittää!

TLDR listaus

Vaikuttaisi oikein kätevältä ohjelmalta, joka listaa selkeästi komentojen tärkeimpiä ominaisuuksia. Tämä ohjelma oli huomattavasti helpompi asentaa kuin autojump. Asennuksessa ja päivityksessä meni noin 5minuuttia aikaa

httpie

Seuraavaksi kokeilen httpie ohjelmaa, jonka pitäisi helpottaa api kutsujen tekemistä. Asennan ohjelman komennolla

sudo apt-get install httpie

Kokeilen ohjelmaa saman tien. Käytän koodauskurssilla käyttämääni api-kutsua, joka hakee tietovisakysymyksiä.

http -f GET https://opentdb.com/api.php?amount=1

httpie listaus

Jes, ohjelma toimii ja näyttää vastauksen selkeästi jsonina. Tämä on hyvä!

c) ”Tukki. Aiheuta lokiin kaksi eri tapahtumaa: yksi esimerkki onnistuneesta ja yksi esimerkki epäonnistuneesta tai kielletystä toimenpiteestä. Analysoi rivit yksityiskohtaisesti.

Seuraan kurssin sivujen ohjeita lokiin kirjoittamisesta. Tehtävän aloitan kello 13.14. Koska olen syöttänyt järjestelmävalvojan salasanalla, unohdan sen komennolla

sudo -k

Kokeilen päivittää ohjelman käyttäen väärää järjestelmävalvojan salasanaa

sudo apt-get upgrade mozilla

Saan herjan väärästä salasanasta. Tämän jälkeen syötän oikean salasanan. Siirryn kansioon /var/log/ ja listaan auth.log tiedoston sisällön. Tämä tiedosto pitää logia järjestelmän kirjautumisista.

sudo cat auth.log

auth.log tiedoston sisältöä

Analysoidaan logitiedostoa. Ylimmällä rivillä nähdään aluksi päivämäärä ja kellonaika. Tämän jälkeen tulee koneen nimi ja komento johon loki liittyy. pam_unix(sudo:auth): authentication failure kertoo, että sudon autentikointi ei onnistunut. User kertoo, millä käyttäjällä salasanaa on yritetty syöttää. Toisella rivillä näytetään onnistunut autentikointi. Komennon on syöttänyt käyttäjä tomi, ollessaan kansiossa /home/tomi ja hän on käyttänyt komentoa apt-get upgrade mozilla. Kolmannella rivillä avataan istunto root oikeuksilla, jolloin komento toteutetaan ja viimeisellä rivillä istunto suljetaan. Lopetan tehtävän kello 13.38.

d) ”The Friendly M. Näytä 2-3 kuvaavaa esimerkkiä grep-komennon käytöstä. Ohjeita löytyy ’man grep’ ja tietysti verkosta.

Aloitan tehtävän kello 13.40. Kokeilen ensimmäiseksi aikaisemmin asentamaani tldr-ohjelmaa.

tldr grep

Grep on ohjelma, jolla voidaan etsiä tiedostoista merkkijonoja käyttäen monipuolista regular expressionia. Luon testausta varten tiedoston, jossa on satunnaisia sanoja omilla riveillään.

Aloitan simppelisti testaamalla komentoa

grep Ko sanoja.txt

Toimii

Seuraavaksi kokeilen rekursiivista hakua. Kopioin saman tiedoston eri nimellä

cp sanoja.txt sanoja2.txt

grep -r Ko

-r hakee kaikista kansion tiedostoista Ko vastaavia sanoja.

Viimeiseksi kokeilen komentoa

grep -r --only-matching kissa

Tämä komento hakee vain hakusanaan yhteensopivat sanat. Vaikka tiedostoissa oli sana kissa2, niin sitä ei printata. Tehtävä on valmis kello 14.00.

e) ”Pwnkit. Päivitä kaikki Linux-ohjelmat ja asenna tietoturvapäivitykset.”

Linuxin kaikki ohjelmat päivitetään komennoilla:

sudo apt-get update

sudo apt-get dist-upgrade

Luen Debianin sivuilta tarkemmin tietoturvasta: https://www.debian.org/security/

Sivuilla on ohjeet viimeisimpien tietoturvapäivitysten hakemiseksi. Aloitan avaamalla tiedoston /etc/apt/sources.list ja lisäämällä sivuilla mainitun rivin. Tallennan tiedoston.

Tämän jälkeen päivitän apt-get:in komennoilla

sudo apt-get update

sudo apt-get upgrade

Mutta ilmeisesti minulla on viimeisimmät päivitykset, sillä komentokehote näyttää, että mitään ei päivitetty. Käynnistän koneen uudelleen ja ajan samat komennot, mutta uusia päivityksiä ei löydy.

Kokeilen vielä varmuuden vuoksi:

sudo apt-get dist-upgrade

Mitään ei asenneta. Olen siis turvassa!

Advertisement

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

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