Edelliseen tehtävään Etusivulle Seuraavaan tehtävään

Anna Kröger 2020-01-31

Linux ja komentorivi

Tämä on Tero Karvisen Linux palvelimet -kurssin toisen kotitehtävän raportti. Tässä linkki kurssisivulle.

Tehtävänanto (h2):

Huom!: Tässä ei täydellinen tehtävänanto, sillä siitä puuttuu vapaaehtoiset ja ei-raportoitavat kohdat

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

C) Tee unelmien apt-get -komento: yksi komentorivi, joka asentaa suosikkiohjelmasi.

D) Asenna komentokehotteen paketinhallinnasta kolme itsellesi uutta komentorivillä toimivaa ohjelmaa. Kokeile kutakin ohjelmaa sen pääasiallisessa käyttötarkoituksessa.


Alkuun: Kun tehtävää aloittaessa boottasin livetikun, en pystynyt ollenkaan yhdistämään läppäriäni kotini wlaniin. Jostain syystä läppärini ei (livetikulla) löytänyt yhtäkään wifi-yhteyttä, vaikka niitä normaalisti löytyy yli 10. Läppärini näytti jostain syystä luulevan olevansa ethernetillä kiinni jossakin verkossa, vaikka edes virtapiuha ei ollut kiinni. Myöskään tämän "yhteyden" poistaminen ei auttanut. En osannut korjata ongelmaa, enkä puhelimellakaan googlatessa löytänyt mitään toimivaa tarkaisua, joten boottasin yksinkertaisesti läppärini uudestaan. Ensin windowsiin (jossa varmistin sen olevan yhteydessä nettiin) ja sitten takaisin live-tikulle. Tämän jälkeen pystyin sitten löytämään verkkoja ja yhdistämään onnistuneesti kotiverkkooni.

A) Lokiin muutokset

Jotta voisin toimenpiteitä tehdessä samalla seurata lokeja, avasin kaksi terminaali-ikkunaa (ctrl + alt + T.. kertaa kaksi). Toiseen niistä avasin siis lokit

$ cd /var/log

$ sudo tail -f syslog
 

Yllä käytetyt komennot löysin tältä sivulta. Seuraavaksi totesin ongelman siinä, etten oikeen osaanut lähestyä sitä, miten haluttuja tapahtumia saisi tehtyä. Tämä johti siihen, että yritin vain tehdä oikeastaan ihan mitä vain muutoksia, odottaen jotakin tapahtuvan. Perus tiedostojen ja kansioiden luonti ja poisto ei vaikuttanut logeihin mitenkään. Myöskään se, että yritti päästä "kiellettyihin" juttuihin käsiksi, esimerkiksi mennä kansioon "root", ei aiheuttanut logeihin mitään, vaikka ilmoituksena tulikin "Permission denied".

Tässä vaiheessa rupesin miettimään, mitä oikeasti voisin tehdä. Muistan Teron tunnilla yrittäneen kirjautua sisään toisena käyttäjänä suoraan terminaalista. Kokeilin siis sitä. Koska en muistanut, mitä komentoja siihen tunnilla käytettiin, käytin täällä foorumissa jonkun kirjoittamia komentoja.

Ylempänä jo kertaalleen mainitun lähteen takia muistin myös, että kirjautumiseen yms liittyvät asiat, näkyvät auth.logissa syslogin sijaan. Joten vaihdoin siis ensin sinne.

$ sudo tail -f auth.log

Sitten toisessa terminaalissa yritin kirjautua jollakin käyttäjällä sisään. Tässä siis oletin epäonnistumisen johtuvan siitä, että käyttäjää ei ole olemassa. Ensin tarkistin kuka itse olen, jonka jälkeen yritin su -komennolla vaihtaa käyttäjää.

$ whoami

$ su - jokumuu Authentication Failure

Onnistuneeksi esimerkiksi taas aloitin sillä, että latasin ohjelman (tein nämä tehtävät hieman epäjärjestyksessä, joten tässä vaiheessa latasin alla myöhemmin mainitun ace-of-penguins pelin). Pelkkä ohjelman asentaminen ei kuitenkaan näyttänyt tuovan minulle niitä tuloksia, joita hain, ainakaan tarpeeksi selkeästi. Yritin seuraavaksi sitten poistaa juuri asentamani pelin. komentona käytin

$ sudo apt-get --purge remove ace-of-penguins

Komennon löysin wikihow-sivulta. Tämä näytti toimivan. Jos ei muuta, niin ainakin logeissa mainittiin "Successfully", mikä näytti jo lupaavalta.

Successfully

Yritetäänpäs sitten käydä hieman näitä logeja läpi. Tämä ensimmäinen on siis esimerkki epäonnistuneesta tai kielletystä toimenpiteestä. (Niin ja huom!: tässä vaiheessa en tiedä mistä puhun. Yritän parhaani tulkita rivejä ja niiden tarkoituksia, mutta jos/kun jokin kohta menee nyt pahasti pieleen, aion jossain vaiheessa sen erikseen tulla korjaamaan. Nämä ovat siis vain minun omia asiasta tietämättömän tulkintoja.)

					Feb 4 19:43:50 xubuntu su[3444]: No passwd entry for user 'jokumuu' 
					Feb 4 19:43:50 xubuntu su[3444]: FAILED su for jokumuu by xubuntu 
					Feb 4 19:43:50 xubuntu su[3444]: - /dev/pts/0 xubuntu:jokumuu 
				

Perusteena: jokainen rivi alkaa ensimmäiseksi päivämäärällä ja kellonajalla. Tässä näemme myös jokaisella rivillä "xubuntu"-kohdan jälkeen komennon, jonka yritin suorittaa, eli 'su', eli käyttäjän vaihto. Yritin kirjautua käyttäjälle, jota ei ole olemassa. Tästä syystä järjestelmä ei myöskään salasanaa kysynyt, minkä takia se myös huomauttaa siitä, ettei sitä annettu. "FAILED su for jokumuu by xubuntu" on hyvin selkeä: "xubuntun (tässä käyttäjän) vaihto (eli su) jokumuu -käyttäjään EPäONNISTUI". Se mitä kolmannen rivin '- /dev/pts/0 xubuntu:...' tarkoittaa, sitä en tiedä, enkä myöskään netistä löytänyt siihen selkeää vastausta.

Tämä seuraava taas on esimerkki onnistuneesta toimenpiteestä.

					Feb 4 20:05:04 xubuntu dbus-daemon[1319]: [system] Activating via systemd: service name='org.freedesktop.nm dispatcher' unit='dbus-org.freedesktop.nm-dispatc her.service' requested by ':1.15' (uid=0 pid=1409 comm="/usr/sbin/NetworkManager --no-daemon " label="unconfined") 
					Feb 4 20:05:04 xubuntu systemd[1]: Starting Network Manager Script Dispatcher Service... 
					Feb 4 20:05:04 xubuntu dhclient[3181]: bound to 192.168.0.13 -- renewal in 1354 seconds. 
					Feb 4 20:05:04 xubuntu dbus-daemon[1319]: [system] Successfully activated service 'org.freedesktop.nm dispatcher' 
					Feb 4 20:05:04 xubuntu systemd[1]: Started Network Manager Script Dispatcher Service. 
					Feb 4 20:05:04 xubuntu nm-dispatcher: req:1 'dhcp4-change' [wlp4s0]: new request (1 scripts) 
					Feb 4 20:05:04 xubuntu nm-dispatcher: req:1 'dhcp4-change' [w1p4s0]: start running ordered scripts... 
				

Tästä en tosin voi sanoa ymmärtäväni juuri mitään. Ilmeisesti käynnistin jonkun daemonin (joista opimme muistaakseni ensi tunnilla), joka taas käynnisti/aloitti "Network Manager Script Dispatcher Service:n". Ottaen huomioon sen, että tässä tarkoitukseni oli poistaa sovellus, ja se asia, joka tässä login mukaan onnistui oli 'org.freedesktop.nm dispatcher' palvelun aktivointi, niin oletukseni on, että tämä 'palvelu' poistaa sovelluksia. Viidennellä rivillä palvelu aloitettiin, kuudennella sille annettiin pyyntö (eli ilmeisesti nimenomaan kyseisen sovellukseni poistaminen?) ja seitsemännellä rivillä se aloitti pyynnön skriptin ajamisen. Tätä kun näin tulkitsee, niin se mikä tässä lokissa oli se onnistunut toimenpide, ei taida sittenkään olla se varsinainen sovelluksen poisto, vaan sen ohjelman(? vai daemonin?) käynnistäminen ja sillä poisto-pyynnön suorittaminen.

C) Unelmien apt-get -komento

Ensin hain terminaalilla ladattavia asioita. Päätin, että haluaisin jonkunlaisen pasianssin, sillä se on yksinkertaisuudessaan yksi lempitavoistani tuhlata aikaa. Hain siis sovelluksia komennolla

$ apt-chache search solitaire Sovelluksien haku

Koska lista ei ollut kovinkaan pitkä, valitsin sieltä mieleiseni kuuloisen vaihtoehdon ja asensin sen (Unelmien apt-get -komennolla):

$ sudo apt-get install ace-of-penguins Sovelluksen asennus

Tämän jälkeen tarkistin, millä komennolla saan pelin käyntiin

$ dpkg --listfiles ace-of-penguins

Tero Karvisen ohjeiden mukaan (linkki): "Usually, the command is the file in one of the bin/ or game/ directories". Ja siellähän se olikin:

/usr/games/ace-solitaire.

Peli käynnistyi siis komennolla

$ ace-solitaire Sovelluksen käynnistys

D) Komentorivillä toimivia ohjelmia

Ensin hain ohjelmia hakusanalla command-line

$ apt-cache search command-line

Näin sain kuitenkin aivan liian pitkän listan sovelluksia, jotta niitä voisi inhimillisesti selata. Täytyi siis rajata hakua. Ensimmäinen oli helppo, sillä ensimmäiseksi kun mietin, mitä terminaalilla voisi helposti tehdä, tuli mieleeni laskin. Hain siis

$ apt-cache search command-line | grep calculator

ja valitsin sieltä sattumanvaraisesti jonkun

$ sudo apt-get install wcalc

Vaikka ohjelma ei vaikuttanut olevan ainakaan erityisen selkeä, niin se silti näytti toimivan, niin kuin piti.

Calculator

Sen jälkeen ajattelin, että joku peli olisi helppo. Olin jo ehtinyt aiemmin kokeilla ylempänä mainittujen ohjeiden mukaisesti Nethackin lataamista, ja samalla kokeilin hetken sitä pelata. Se ei osoittautunut kovinkaan yksinkertaiseksi, joten halusin jonkun helpomman. Hain taas samalla tavalla, kuin laskinta varten, mutta vaihdoin hakusanan

$ apt-cache search commandline | grep game

Sieltä taas pienellä valikoinnilla päädyin lataamaan PacManin kaltaisen pelin komennolla

$ sudo apt-get install pacman4console

Tämäkään ei ehkä maailman paras peli ollut, mutta näytti sekin toimivan niin kuin pitikin.

PacMan

Viimeinen ohjelma olikin sitten hankalin, sillä ideani loppuivat kesken. Päätin siis hakea sovelluksia vailla sen suurempaa suunnitelmaa siitä, mitä sieltä halusin. Hain

$ apt-cache search command-line | grep screen

Sieltä päätin kokeilla ohjelmaa nimeltä termsaver

$ sudo apt-get install termsaver

jonka tarkoitus oli olla terminaalin näytönsäästäjä. Aluksi en yhtään ymmärtänyt miten se toimi, mutta lopuksi sain siitä kuitenkin selvää. Tässä ensin kuva kaikista vaihtoehdoista (joista tosin ainakin ensimmäiset kaksi ilmeisesti viittaavat vanhentuneisiin linkkeihin).

Termsaver usage and options

Toimivuuden demonstroimiseksi valitsin itse "clock" vaihtoehdon, jonka komento oli yksinkertaisesti

$ termsaver clock Termsaver Clock

Henkilökohtainen lempparinin oli kuitenkin starwars, jota voi itse halutessaan kokeilla

$ termsaver starwars
 

Kaikki käyttämäni lähteet

Karvinen, Tero: Oppitunnit 2020-01-30, Linux palvelimet -kurssi
http://terokarvinen.com/2020/aikataulu-linux-palvelimet-ict4tn021-3010-torstai-aamu-alkukevat-2020-5-op

Plesky, Elvis: Plesk 2018-11-20, Linux Logs Explained
https://www.plesk.com/blog/featured/linux-logs-explained/

Question by user tshepang: StackExchange Unix&Linux 2010-10-27, How to switch between users on one terminal?
https://unix.stackexchange.com/questions/3568/how-to-switch-between-users-on-one-terminal

wikiHow 2019-10-29, How to Uninstall Ubuntu Software
https://www.wikihow.com/Uninstall-Ubuntu-Software

Karvinen, Tero: terokarvinen.com 2009-11-19, Command Line Basics
http://terokarvinen.com/2009/command-line-basics-4

Karvinen, Tero: terokarvinen.com 2008-05-02, Commands for Admin
http://terokarvinen.com/2008/commands-for-admin-4