Komentokehote, ylläpito ja paketinhallinta Linuxissa (h2)

Tämä blogipostaus on osa Haaga-Helian Linux Palvelimet -kurssia, jota Tero Karvinen pitää keväällä 2022.

Toisen kurssiviikon tehtävät:

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

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.

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.

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

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

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

y) cdlspwd! Opettele tärkeimmät komennot ulkoa ja harjoittele suurella määrällä kokeiluja. Opeteltavat komennot ovat artikkelissa Karvinen 2020: Command Line Basics Revisited (tätä y-alakohtaa ei tarvitse raportoida lainkaan)”

(Karvinen 2022)

a) Tiedostojärjestelmä

Kaikki Linuxit noudattavat melko tarkasti Filesystem Hierachy Standardia (FHS) eli standarditiedostohierarkiaa. (Wikipedia)

FSH määrittelee mm. seuraavat kansiot:

  • / → juurihakemisto, jonka alle kaikki muut hakemistot ja tiedostot sijoittuvat
  • /home/ → sisältää kaikkien käyttäjien kotihakemistot
  • /home/user/ → käyttäjän ”user” kotihakemisto. Käyttäjä ”user” voi tallentaa pysyvästi dataa vain tähän kansioon.

    Jos olisin asentanut Debianin tietokoneelleni, kotihakemistoni olisi luultavasti /home/susanna/. Käytin kuitenkin Debiania Linux-tikulta ilman asennusta, minkä takia en ole myöskään kirjautunut koneelle tiettynä käyttäjänä.
  • /etc/ → asetustiedostot koko järjestelmän osalta, ihmisen luettavissa olevia tekstitiedostoja

    Kaikki hakemiston ”etc” tiedostot eivät mahtuneet yhtä aikaa näytölle, ja siksi kuvakaappauksessa näkyy vain osa kaikista kansioista ja tiedostoista.
  • /media/ → irrotettavat laitteet, esim. CD (/media/cdrom/) tai USB-tikku (/media/usbdisk/)
  • /var/log/ → järjestelmän lokit, esim. /var/log/syslog, /var/log/auth.log ja /var/log/apache2/error.log

(Karvinen 3.2.2020)

b) Terminaalissa toimivat sovellukset

CLI = Command Line = komentorivi

Tarkistan kännykästä säätiedot aina ennen ulos lähtemistä, jotta etenkin talviaikaan osaan laittaa riittävästi vaatetta päälle. Olisi kätevää tarkistaa säätiedot nopeasti ohimennen myös tietokoneella, ettei kännykkää tarvitsisi kaivaa sitä varten esille. Löysin terminaalissa toimivan ohjelman, joka hakee reaaliaikaiset säätiedot ja parin seuraavan päivän sääennusteet kaupungeittain, ja näyttää tiedot suoraan terminaalissa (Sneddon 27.1.2022). Toki samat tiedot saisi kaivettua myös erilliseltä verkkosivulta niin halutessaan, mutta terminaalin säänäkymä on niin kattava, että mitä sitä turhaan selainta avaamaan. Komennolla

$ curl wttr.in/Helsinki

sain näkyville Helsingin säätiedot tänään  maanantaina 14.3.2022 sekä kahden seuraavan päivän sääennusteet. Jos komentoon vaihtaisi toisen kaupungin, esim. London, saisi Lontoon vastaavat tiedot näkyviin.

Etsin Googlesta minulle hyödylliseltä tuntuvia, komentorivissä toimivia ohjelmia. Sneddonin listauksesta löytyi kätevä Googlen jatke terminaaliin: Googler on kuin komentoriviltä käytettävä Googlen hakukone, jolle voi antaa hakusanan ja määritellä halutessaan myös hakuasetuksia lisäämällä termejä peruskomennon perään. Komennolla

$ sudo apt-get install googler

asensin Googler-ohjelman Debianiin. (Sneddon 27.1.2022) Perusmuotoisella komennolla ilman mitään erityisiä hakuasetuksia halusin nähdä, minkälaisia hakutuloksia saisin hakusanalla Haaga-Helia eli komennolla

$ googler Haaga-Helia

Ensimmäisellä yrityksellä sain yhden hakutuloksen: Haaga-Helian verkkosivut. Sen jälkeen Googler ehdotti, haluaisinko tutustua ohjeisiin ja saada lisätietoa, minkälaisia määrityksiä voisin asettaa hakuasetuksille. (Sneddon 27.8.2020) En kuitenkaan ollut niistä nyt kiinnostunut, vaan painoin Shift + Enter, jolloin pääsin Googlerista takaisin komentorivin käyttöön ilman Googleria. Ensivaikutelmana voisi sanoa, että Googler ei ole huono – se haki todellakin parhaiten hakusanaani vastaavan tuloksen – mutta en näin lyhyellä kokeilulla vielä keksinyt, miksi se olisi parempi kuin varsinainen Google. Todennäköisesti turvaudun jatkossa selain-Googleen terminaalin Googlerin sijaan.

Kolmantena CLI-sovelluksena kokeilin Fzf-nimistä sovellusta, jolla voi etsiä tiedostoja helposti ja nopeasti. Asensin sovelluksen komennolla

$ sudo apt-get install fzf

Koska Fzf etsii tiedostoja siinä kansiossa, jossa terminaalissa ollaan, avasin Pictures-kansion, jossa tiedostojoukko oli hyvin rajallinen. Komennolla

$ fzf

terminaaliin aukesi listaus kaikista Pictures-kansiossa olevista tiedostoista. (Diener 29.3.2019) Pystyin nuolinäppäimillä liikkumaan listalla ja Enterillä valitsemaan listasta haluamani tiedoston, jonka nimi tulostettiin terminaaliin:

Fzf voisi olla hyödyllinen työkalu siinä kohtaa, jos pitäisi tarkistaa esimerkiksi jonkin tiedostonimen oikeinkirjoitus.

c) Lokitapahtumien analysointia

Kurssin verkkosivulla vinkattiin, että komennolla

$ sudo -k

terminaali unohtaa, että super userin salasana on jo kertaalleen annettu. Kun tämän jälkeen syöttää salasanan kerran väärin ja sen jälkeen kerran oikein, saa terminaaliin tulosteet ensin epäonnistuneesta ja sen jälkeen onnistuneesta toimenpiteestä. Niinpä pyysin terminaalia unohtamaan sudon salasanan ja sen jälkeen pyysin hakemaan tiedot pakettien saatavana olevista päivityksistä. Tämän jälkeen terminaali kysyikin odotetusti sudon salasanaa, jonka annoin ensin väärin ja sitten oikein:

Siirryin juuresta kansioon ”log” komennoilla

$ cd var
$ cd log

Sen jälkeen avasin komennolla

$ sudo cat auth.log

”log”-kansiossa sijaitsevan tiedoston auth.log, johon Debian kerää lokitietoja järjestelmän kirjautumisiin liittyen:

Jokaisen lokitapahtuman alussa oli ilmoitettu ensin päivämäärä ja kellonaika, sitten käyttäjä ja tapahtuma. Tässä tapauksessa lokitapahtumat olivat päivältä 14.3.2022 noin klo 23.16 – 23.17. Ensimmäisessä lokitapahtumassa olin syöttänyt komennon ”$ sudo apt-get update”. Toisessa lokitapahtumassa oli ilmeisesti noteerattu syöttämäni väärä salasana, mutta koska salasana oli tosiaan väärä, sessio vain avattiin ja väärän salasanan jälkeen myös suljettiin ilman sen kummempia toimenpiteitä. Vääriin tunnistautumistietoihin lokitiedoissa viittaa 2. rivillä mainitut uid=0 ja uid=1000, missä uid on user id. Riveillä 4 ja 5 näkyivät uusi yritykseni syöttää sillä kertaa oikea salasana, ja tällöin salasanalla vahvistettu sessio on avattu käyttäjälle uid=0 käyttäjän uid=0 toimesta – siis käyttäjätunnus ja salasana täsmäsivät. Kun update-toiminto oli viety loppuun, salasanaa vaativa sessio suljettiin. Viimeisellä rivillä sitten näkyikin yritykseni päästä tutkimaan kirjautumisen lokitietoja komennolla ”$ sudo cat auth.log”. (Karvinen 2022, Söder 30.1.2022)

d) Haku tiedoston sisällöstä

Komento grep hakee merkkijonoja tiedoston sisältä, ja komentoon on mahdollista sisällyttää erilaisia hakuasetuksia.

Tein testitiedoston, joka sisältää eläinlajeja:

$ micro Eläimet.txt

Kirjoitin tiedostoon eläinlajeja, tallensin tiedoston Ctrl + S ja poistuin Microsta Ctrl + Q.

Tämän jälkeen testasin merkkijonon hakemista tuon testitiedoston sisältä: (Söder 30.1.2022, LinuxCommand.org 11.5.2018)

Syöttämällä pelkän komennon

$ grep

Debian ystävällisesti kertoi, että toimiakseen hakuun tulisi sisällyttää hakusana ja tiedosto, josta hakusanaa haetaan. Niinpä tein kolme erilaista testihakua.

Ensin testasin, löytääkö grep testitiedostosta sanan ”koira”, joka siellä varmasti piti olla:

$ grep koira Eläimet.txt

Vastauksena terminaaliin tulostui ”koira”, joten grep tosiaan löysi sanan annetusta tiedostosta.

Toisena kokeilin, mitä eläimiä listalta löytyy siten, että sana sisältää merkkijonon ”hi”:

$ grep hi Eläimet.txt

Vastauksena tulostuivat ”vuohi”, ”hiiri” ja ”hanhi”, joissa on tosiaan ”hi” sanan alussa tai lopussa.

Viimeisenä testasin, miltä näyttää, jos laitan hakusanaksi eläimen, jota ei varmasti löydy testitiedostostani:

$ grep poni Eläimet.txt

Vastauksena ei tullut yhtään mitään, vaan terminaali odotti minun syöttävän seuraavan komennon. Windows-käyttäjän ajatusmaailmalle oli uutta, että Debian jätti ilmoittamatta, ettei hakutuloksia löytynyt annetulla hakusanalla. Toki tulos oli ilmeinen, mutta käyttäjällä olisi saattanut jäädä asia huomaamatta.

e) Tärkeät päivitykset

Oli kyse sitten Windowsista tai Linuxista, ohjelmat on syytä pitää ajan tasalla ja asentaa kulloinkin saatavana olevat tietoturvapäivitykset.

Pyysin ensin apt-paketinhallintajärjestelmää hakemaan verkosta paketit järjestelmän ja ohjelmien päivittämistä varten, ja samalla tuli päivittää myös välimuisti pakettien tiedoista ajantasaiseksi. Kaikki tämä tapahtui komennolla

$ sudo apt-get update

Tämän jälkeen asensin päivitykset komennolla

$ sudo apt-get upgrade

(Kuutti 2011, 124­­­–125)

Yhden paketin Debian asensikin automaattisesti, vaikkei sen asentamista olisi välttämättä edes tarvittu. Siltä varalta, että olisin halunnut samantien poistaa asennetun paketin ”libeatmydatal”, Debian ystävällisesti kertoi kommennon, jolla poiston olisi voinut suorittaa.

Käyttöjärjestelmän päivitykset tietoturvan parantamiseksi tein vielä komennolla

$ sudo apt-get dist-upgrade

Tämän jälkeen kone olisi pitänyt käynnistää uudelleen tietoturvapäivitysten saamiseksi käyttöön. Koska käytin Linux-tikkua, jätin uudelleenkäynnistyksen kuitenkin tekemättä, sillä se olisi samalla nollannut juuri tekemäni päivitykset. Jos olisin asentanut Debianin joko suoraan raudalle tai virtuaalikoneelle, käynnistäminen uudelleen olisi kannattanut. (Karvinen 2022)

Lähteet

Diener, D. 29.3.2019. 6 useful Linux command line apps to install. Luettavissa: https://www.addictivetips.com/ubuntu-linux-tips/useful-linux-command-line-apps/. Luettu: 14.3.2022.

Karvinen 3.2.2020. Command Line Basics Revisited. Luettavissa: https://terokarvinen.com/2020/command-line-basics-revisited/. Luettu: 31.1.2022.

Karvinen, T. 2022. Linux Palvelimet 2022. Kurssisivusto. Luettavissa: https://terokarvinen.com/2021/linux-palvelimet-ict4tn021-3018/. Luettu: 31.1.2022.

Kuutti, W. 2011. Linux-käsikirja. Docendo. Jyväskylä.

LinuxCommand.org. 11.5.2018. Grep. Luettavissa: https://linuxcommand.org/lc3_man_pages/grep1.html. Luettu: 15.3.2022.

Sneddon, J. 27.8.2020. How to Search Google from the Command Line. Luettavissa: https://www.omgubuntu.co.uk/2017/08/search-google-from-the-command-line. Luettu: 14.3.2022.

Sneddon, J. 27.1.2022. 10 Cool Command Line Apps for Ubuntu. Luettavissa: https://www.omgubuntu.co.uk/2021/11/best-command-line-tools-ubuntu-linux. Luettu: 14.3.2022.

Söder, T. 30.1.2022. Linux palvelimet – Tehtävä 2. Kotitehtäväraportti. Luettavissa: https://tomisoder.wordpress.com/2022/01/30/linux-palvelimet-tehtava-2/. Luettu: 14.3.2022.

Wikipedia. Filesystem Hierarchy Standard. Luettavissa: https://fi.wikipedia.org/wiki/Filesystem_Hierarchy_Standard. Luettu: 31.1.2022.

Artikkelia on päivitetty 13.3.2022: lisätty otsikoihin viittaukset tehtävänantoon.

Artikkelia on päivitetty 14.3.2022: lisätty tehtävät b) ja c).

Artikkelia on päivitetty 15.3.2022: lisätty tehtävä d).

1 ajatus aiheesta “Komentokehote, ylläpito ja paketinhallinta Linuxissa (h2)”

  1. Paluuviite: Komentojen automatisointi ja skriptaus (h6) - Susanna Lehto

Kommentoi

Sähköpostiosoitettasi ei julkaista.