Viikko 6

a) Kirjoita ja suorita “Hei maailma” kolmella kielellä. Asenna tarvittavat ympäristöt.
b) (vapaaehtoinen) Kirjoita kullakin kielellä yksinkertainen ohjelma, jolla on jokin käyttötarkoitus. Ideoita: hyödynnä kielen vahvuuksia. Ota käyttäjältä syöte, tee jokin lasku ja tulosta vastaus (input-processing-output).
http://terokarvinen.com/2018/aikataulu-linux-palvelimet-ict4tn021-3004-ti-alkukevat-2019-5-op

“Hei maailma” kolmella kielellä: (tehtävä a)

Ensimmäisenä lähdin tulostmaan “Hello world!” Linuxin bash-skriptillä. Kirjoittamalla komentokehotteseen komennon nano helloworld.sh, loin tiedoston ja muokkasin sen seuraavaan muotoon:

Tallensin painamalla ctrl+s ja poistuin painamalla ctrl+x. Koska bash-skriptit toimivat Linuxissa automaattisesti, minun ei tarvinut asentaa mitään ajaakseni skriptin. Kirjoitin komentokehotteeseen bash helloworld.sh ja skripti tulosti tekstin “Hello world!”:

Seuraavaksi lähdin tulostamaan “Hello world!” Pythonilla. Kirjoitin komennon nano helloworld.py luodakseni tiedoston ja päästäkseni muokkaamaan sitä. Kirjoitin tiedostoon:

Tämän jälkeen jälleen tallensin tiedoston ja poistuin tiedoston muokkauksesta. Koska myös Python tulee valmiiksi asennettuna Xubuntun mukana, minun ei tarvinut asentaa tässäkään tapauksessa mitään ajaakseni koodia. Kirjoittamalla komennon python3 helloworld.py ajoin tiedoston ja se tulosti “Hello world!”:

Viimeisenä päätin kirjoittaa “Hello world” javalla. Loin jälleen tiedoston komennolla nano HelloWorld.java. Java ei ole ihan niin yksinkertainen ohjelmointikieli kuin edelliset, ja jouduin kirjoittamaan muutaman rivin enemmän:

Jotta luotu java-tiedosto voidaan ajaa ohjelmana terminaalissa, se täytyy ensin kääntää (compile). Tämä tapahtuu komennolla javac HelloWorld.java. Tässä vaiheessa testi epäonnistui, koska koneelleni ei ollut asennettu javaa. Terminaali kuitenkin osasi neuvoa millä komenolla se onnistuu, eli sudo apt-get apt-get install default-jdk.

Asennuksen jälkeen kirjoitin uudelleen javac HelloWorld.java kääntäkseni tiedoston, ja sitten java HelloWorld ajaakseni sen. Ja nyt ohjelma tulosti “Hello world!”:

Lähteet:

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

Pohjana Tero Karvinen 2012: Linux kurssi, http://terokarvinen.com

Advertisements

Viikko 5

h5
a) Asenna SSH-demoni
b) Suojaa kone tulimuurilla, mutta tee ensin reikä SSH:lle
c) Siirrä tiedostoja ssh:lla
d) Automatisoi kirjatuminen julkisen avaimen menetelmällä
j) Asenna ja konfiguroi ja käynnistä sysstat-paketti. Tarkista sar-komennolla, että se on päällä, esim. näyttää lokimerkinnän “Linux reboot…”. Anna sysstatin pyöriä päivä tai pari. Tutki kuormitushistoriaa sysstatin komennoilla sar, iostat, pidstat… Analysoi tulokset, eli selitä perusteellisesti mitä tulokset tarkoittavat.
http://terokarvinen.com/2018/aikataulu-linux-palvelimet-ict4tn021-3004-ti-alkukevat-2019-5-op

SSH:n asennus: (tehtävä a)

Asensin ensin SSH-serverin komennolla sudo apt-get install openssh-server. Asennuksen valmistuttua tein reiän palomuuriin SSH-yhteyksiä varten sudo ufw allow 22/tcp -komenolla, ja kytkin sitten palomuurin päälle komentamalla sudo ufw enable.

Otin testiksi yhteyden koulun palvelimella sijaitsevaan henkilökohtaiseen myy-asemaan komennolla ssh käyttäjätunnus@myy.haaga-helia.fi. SSH-yhteys kysyi vielä haluanko varmasti muodostaa yhteyden kyseiseen palvelimeen, johon vastasin kyllä kirjoittamalla yes. Tämän jälkeen kysyttiin salasanaani, jonka annettuani yhteys oli muodostettu.

Kirjautumisen automatisointi: (tehtävä d)

Jotta minun ei tarvitsisi kirjoittaa joka kerta salasanaa muodostaessani SSH-yhteyttä, automatisoin kirjautumisen käyttäen julkisen avaimen menetelmää.

Suljin aiemman yhteyden koulun palvelimeen komennolla exit, ja hallitsin taas omaa konettani. Sitten loin SSH-avainparin komennolla ssh-keygen. Ohjelma kysyi mihin tiedostoon haluan avaimen tallentaa, ja haluanko käyttää salasanaa. Painammalla kolme kertaa enteriä tallensin avaimen oletussijaintiin, ja jätin salasanan tyhjäksi.

jaakko@Xubu:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jaakko/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/jaakko/.ssh/id_rsa.
Your public key has been saved in /home/jaakko/.ssh/id_rsa.pub.
The key fingerprint is:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Avain oli nyt luotu. Seuraavaksi kopioin avaimen koulun palvelimelle komennolla ssh-copy-id käyttäjätunnus@myy.haaga-helia.fi. Yhteys kysyi (viimeistä kertaa) salasanaani, jonka syötettyäni ohjelma vahvisti avaimen olevan lisätty ja kehotti kokeilemaan yhteyden muodostamista ilman salasanaa. Annoin komennon ssh käyttäjätunnus@myy.haaga-helia.fi, ja yhteys koulun palvelimella sijaitsevaan henkilökohtaiseen asemaan muodostui antamatta salasanaa. Automatisointi oli onnistunut.

Tiedostojen siirto SSH:lla:

Loin testi.txt tiedoston ja siirsin sen SSH:n välityksellä kotikoneeltani koulun palvelimella sijaitsevalle henkilökohtaiselle asemalleni:

jaakko@Xubu:~$ touch testi.txt
jaakko@Xubu:~$ scp testi.txt käyttäjätunnus@myy.haaga-helia.fi:testi.txt
testi.txt 100% 0 0.0KB/s 00:00

Muodostin SSH-yhteyden henkilökohtaiseen asemaani, ja varmistin tiedoston siirtynen ls-komennolla.

jaakko@Xubu:~$ ssh käyttäjätunnus@myy.haaga-helia.fi
[käyttäjätunnus@myy-2012 ~]$ ls
Common public_html testi.txt

Tiedoston siirto onnistui.

Ulkoisen hakemiston mounttaaminen Ubuntuun:

Koulun palvelimella sijaitseva henkilökohtainen myy-asemani ja virtualinen webbipalvelimeni mountattuna Xubuntuun.

Lähteet:

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

Pohjana Tero Karvinen 2012: Linux kurssi, http://terokarvinen.com


Viikko 4

Tehtävänanto:

a) Laita hankkimallesi virtuaalipalvelimelle mahdollisuus tehdä kotisivuja normaalin käyttäjän oikeuksin.
s) Laita hankkimallesi virtuaalipalvelimelle käyttäjän kotihakemistoon tallennettu sivu näkymään Apachen oletussivuna.
y) Etsi palvelimesi lokeista esimerkkejä murtautumisyrityksistä. Voit etsiä lisätietoa IP-osoitteista ottamatta niihin yhteyttä esimerkiksi komennoilla ipcalc, geoiplookup ja whois.
b) Tee weppisivuja paikallisella koneellasi ja kopioi ne palvelimelle scp-komennolla.
c) Laita palvelimellesi jokin yksinkertainen PHP-sivu. Voit esimerkiksi tulostaa käyttäjän IP-osoitteen$_SERVER[‘REMOTE_ADDR’] tms. Ole huolellinen, jos otat vastaan syötteitä lomakkeilla (forms).

Vapaaehtoisia tehtäviä
Vinkkejä: lue linkitetyt artikkelit aikataulusta yltä ennenkuin alat tehdä tehtäviä. Muista viitata kaikkiin lähteisiin. Käytä aina hyviä salasanoja, joka hetki ja joka paikassa. 
r) Kokeile julkista virtuaalipalvelinta (VPS). Voit vuokrata palvelimen esimerkiksi Linodelta, Amazonilta, DigitalOceanilta, OVH:lta tai monista muista paikoista. Edullisinta on käyttää GitHub Education -paketista DigitalOceanin palveluita.
Vaihtoehto: jos et jostain syystä halua vuokrata virtuaalipalvelinta, voit kokeilla tehdä testipalvelimen vagrantilla, mutta tämä ei ole yhtä jännittävää.
x) Laita julkinen domain-nimi osoittamaan koneeseesi. NameCheap ja Gandi ovat tunnettuja nimien vuokraajia. GitHub Education -paketista saa NameCheapilta .me domainin ilmaiseksi vuodeksi.

Harjoitusympäristö:

Suoritin harjoitukset 5.2.2019 koulussa oppitunnin aikana, ja kirjoitin raportin myöhemmin (heikosta) ulkomuistista.

Virtuaalipalvelimen vuokraaminen:

Virtuaalipalvelimia on nykyään saatavilla lukemattomilta eri tahoilta. Itse vuokrasin palvelimen Digital Oceanilta. Korkeakouluopiskelijana olen oikeutettu GitHubEducation-pakettiin, ja sen kautta sain 50$ rahaa Digital Oceanille. Digital Oceanilla (kuten muillakin virtuaalipalvelimia tarjoavilla sivuilla) on useita eri hintaisia paketteja. Digital Oceanilla halvin paketti maksaa 5$ kuussa, ja sillä saa virtuaalikoneen, jossa on 1 GB muistia, ja 25 GB kovalevytilaa. Se riittää nykyisiin (lähinnä testailu)tarpeisiini oikein hyvin.

Rekisteröidyin Digital Oceaniin ja syötin GitHubEducationista saamani promokoodin. Valitsin haluamani edellä mainitun virtuaalikoneen, jolle valitsin palvelun tarjoamista vaihtoehdoista Ubuntu 16.04 LTS virtual server- käyttöjärjestelmän. Ja näin kone oli valmiina käyttöön.

Otin omalla tietokoneellani yhteyden palvelimeeni kirjoittamalla Linuxin terminaaliin komennon ssh root@157.230.98.155 ja syötin salasanan kysyttäessä. Näin olin sisällä virtuaalipalvelimellani.

Ensimmäiseksi tein ssh:ta varten reiän palomuuriin komennolla sudo ufw allow 22/tcp, ja sitten laitoin palomuurin päälle sudo ufw enable -komenollla.


Tämän jälkeen loin virtuaalikoneelle uuden käyttäjän komennoilla sudo adduser jaakko, sudo adduser jaakko sudo, sudo adduser jaakko adm ja sudo adduser jaakko admin. Kun uusi käyttäjä sudo-oikeuksilla oli luotu, lukitsin root-käyttäjän komennolla sudo usermod –lock root. Lisäksi komennolla sudoedit /etc/ssh/sshd_config avasin määritystiedoston, josta muokkasin PermitRootLogin no (alun perin PermitRootLogin yes). Tämä estää root-käyttäjänä kirjautumisen ssh:n kautta. Jotta asetukset tulivat voimaan annoin vielä komennon sudo service ssh restart, jollakäynnistin ssh-yhteyden uudelleen.

Alkuvalmistelujen lopuksi hain vielä uusimmat päivitykset tutuilla sudo apt-get update ja sudo apt-get upgrade -komennoilla.

Julkinen domain:

Löytyy osoitteesta: http://paikkala.com.

Kotisivujen tekeminen palvelimelle käyttäjän omaan kotikansioon:

Päästäkseni tekemään webbisivuja, asesin virtuaalipalvelmille LAMP-stackin, edellisen viikon mallin mukaisesti. Näin virtuaalipalvelimellani oli Apache-webbipalvelin, MariaDB-tietokanta ja PHP käytössä.

Komennolla sudo a2enmod userdir, annoin oikeudet normaalikäyttäjälle tehdä omia nettisivuja. Virtuaalipalvelin tuli käynnistää uudelleen systemctl restart apache2 -komennolla, jotta asetukset astuivat voimaan.

Tein käyttäjän kotikansioon public_html -kansion komennolla mkdir public_html. Siirryin kansioon ja nano index.html -komennolla loin html-tiedoston, johon kirjoitin Moikka moi vaan taas. Testatakseni menin selaimella osoitteeseen paikkala.com/~jaakko, ja kirjoittamani teksti näkyi:

Lähteet:

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

Pohjana Tero Karvinen 2012: Linux kurssi, http://terokarvinen.com



Viikko 3

Tehtävänanto: (tummenetut tehty)

Tee viisi vapaavalintaista kohtaa. Säädä vaikeustaso oikeaksi: jos olet ihan alussa ja tämä on haastavaa, tee helpoimmat a b c d i. Jos osaat jo perusteet, tee useampia tai vaikeampia kohtia. Tarkoitus on, että tehtävät tehtyäsi osaat enemmän kuin osasit ennen.
a) Asenna Apache, laita käyttäjien kotisivut (http://example.com/~tero) toimimaan. Testaa esimerkkikotisivulla.
b) Surffaa oman palvelimesi weppisivuja. Etsi Apachen lokista esimerkki onnistuneesta (200 ok) sivulatauksesta ja epäonnistuneesta (esim 404 not found) sivulatauksesta. Analysoi rivit.
c) Tee virhe weppipalvelimella ajettavaan koodiin (esim PHP tai Python), etsi se lokista ja analysoi tuo lokirivi
d) Tee virhe johonkin Apachen asetustiedostoon, etsi ja analysoi tuo rivi. Etsimiseen sopivat esimerkiksi Apachen omat lokit, syslog sekä ‘apache2ctl configtest’.
e) Asenna ja kokeile PhpMyAdmin:a tai jotain muuta valmista weppiliittymää tietokantojen hallinnointiin.
f) Tee palvelimella ajettava weppiohjelma, joka tekee käyttäjälle jonkin yksinkertaisen laskun (esim. painoindeksi BMI)
g) Tee palvelimella ajettava weppiohjelma, joka käyttää tietokantaa. Voit tehdä jonkin yksinkertaisen CRUD-ohjelman, esimerkiksi TODO-listan
h) Tee Apachelle uusi sivu, joka näkyy suoraan palvelimen pääsivulla, mutta jonka sivuja voi muokata normaalin käyttäjän oikeuksilla (name based virtual host, DocumentRoot käyttäjän kotihakemistoon).
i) Kuinka monta eri HTTP Status:ta (200, 404, 500…) saat aiheutettua lokeihin? Selitä, miten aiheutit tilanteet ja analysoi yksi rivi kustakin statuksesta.
j) Asenna LAMP (Linux, Apache, MySQL, PHP). Testaa kunkin komponentin toiminta. Testaa lopuksi kokonaisuus. (Voit aloittaa tilanteesta, jossa Linux-käyttöjärjestelmä on jo asennettu, mutta ei muita (AMP) osia.
k) Kokeile jotain Flaskin uutta ominaisuutta flask-testipalvelimessa. Voit kokeilla esim. muotteja (templates), tietokantaa tai syötteiden ottamista lomakkeilta (forms).
l) Asenna Python Flask + PostgreSQL + Apache mod WSGI. Testaa kunkin komponentin toiminta. Testaa lopuksi kokonaisuus. (vaikea)

http://terokarvinen.com/2018/aikataulu-linux-palvelimet-ict4tn021-3004-ti-alkukevat-2019-5-op#h3

Harjoitusympäristö:

Suoritin harjoitukset 3.2.2019 kotonani, käyttäen Dell Latitude E5440 -kannettavaa tietokonettani, jossa käyttöjärjestelmänä on Xubuntu.

Apachen asennus ja käyttäjien omat kotisivut: (tehtävä a + j alkaa)

Aloitin kirjautumalla Xubuntuun, avasin terminaalin ja sudo apt-get update -komennolla hain uusimmat päivitykset. Sitten lähdin asentamaan maailman suosituinta webbipalvelinta Apachea. Se tapahtui komennolla sudo apt-get install apache2. Asennus tapahtui muutamissa sekunneissa, ja palvelin oli heti toiminnassa. Testasin tämän menemällä Firefox-selaimella osoitteeseen localhost, ja koska näkyviin tuli Apache 2 Ubuntu Default page, tarkoitti se palvelimen olevan käynnissä.

Uuden palvelimen oletussivu. Kuva: Wikipedia

Seuraavaksi muutin echo moikka moi|sudo tee /var/www/html/index.html -komennolla oletussivun muotoon moikka moi.

Palvelimen oletussivun muuttaminen.

Seuraavaksi laitoin palomuurin päälle komennolla sudo ufw enable. Sen jälkeen komennoilla sudo ufw allow 22/tcp ja sudo ufw allow 80/tcp, sallin palomuurista liikenteen porttien 22 ja 80 kautta.

Sitten lähdin tekemään käyttäjille omia kotisivuja. Ensin komennolla sudo a2enmod userdir sallin käyttäjien omien sivujen luomisen, ja systemctl restart apache2 -komennolla käynnistin palvelimen uudelleen, jotta muutokset tulevan voimaan. Tämän jälkeen mkdir public_html -komennolla loin kansion sivuja varten. Lopuksi loin kyseiseen kansioon index.php tiedoston, johon kirjoitin “Jaakko”. Testasin toiminnan menemällä osoitteeseen localhost/~jaakko (käyttäjän nimi on jaakko), ja siellä luki “Jaakko”, joten operaatio oli onnistunut. Huvin ja urheilun vuoksi tein vielä Xubuntuun uuden käyttäjän nimellä “testi”. Kirjauduin sillä sisään, tein public_html -kansion ja index.php -tiedoston, johon kirjoitin “Testikäyttäjän sivut”. Testasin toiminnan menemällä osoitteeseen localhost/~testi, ja koska sivulla luki “Testikäyttäjän sivut”, oli operaatio jälleen onnistunut.


Palvelimen oletussivu ja kahden käyttäjän omat sivut.

Apachen lokitiedostot & HTTP-statukset (tehtävät b & i)

Avasin terminaalissa /var/log/apache2/ -kansiosta less acces.log -komenolla palvelimen sivujen lataustietoja sisältävän lokitiedoston:

Analysoin tässä muutaman rivin:

127.0.0.1 – – [03/Feb/2019:09:08:42 +0200] “GET /~jaakko/ HTTP/1.1” 200 263 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:65.0) Gecko/20100101 Firefox/65.0”

Ensin on palvelimen osoite, sitten päivämäärä ja kellonaika. Sitä seuraa tieto, että kyseessä on GET-pyyntö, jolla kysellään käyttäjän “jaakko” oman kotisivun perään. HTTP-status on 200, eli sivun lataus on onnistunut. Sitä seuraa tietoja käytetystä käyttöjärjestelmästä ja selaimesta.

192.168.1.92 – – [03/Feb/2019:09:10:47 +0200] “GET / HTTP/1.1” 200 293 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36”

Ensin jälleen palvelimen osoite, eri numerot koska tämän yhteyden otin toisella, samassa verkossa olevalla, koneellani. Kellonaikaa seuraa taas tieto GET-pyynnöstä. Lopuksi taas tiedot käyttöjärjestelmästä ja selaimesta, jotka ovat siis eri kuin edellisessä.


192.168.1.92 – – [03/Feb/2019:09:10:50 +0200] “GET /favicon.ico HTTP/1.1” 404 505 “http://192.168.1.186/” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36”

Tässä GET-pyynnöllä etsitään favicon-kuvatiedostoa, mutta sitä ei syystä tai toisesta löydy. Seurauksena on HTTP-status 404, joka tarkoittaa että yhteys palvelimeen on saatu, mutta haluttua (tässä tapauksessa favicon.ico-tiedosto) asiaa ei löydy.

PHP:n asennus ja testaaminen (tehtävä j jatk(tehtävä c, f + j jatkuu)

Vuorossa oli PHP:n asennus, joka tapahtui komennolla sudo apt-get install libapache2-mod-php, jonka jälkeen sudo systemctl restart apache2 –komennolla käynnistin palvelimen uudelleen.

Halusin testata PHP-ohjelman tekemistä käyttäjän omalla kotisivulla, ja tämä on oletuksena estetty asetuksissa. Komennolla sudoedit /etc/apache2/mods-available-php7.2.conf avasin asetustiedoston, ja sallin PHP:n käytön. Tämä tapahtui muuttamalla asetustiedostosta kotikansiota koskevat osat kommenteiksi #-merkeillä.

IfModule piti muuttaa kommenteiksi, jotta käyttäjän omilla sivulla saa PHP:n käyttöön.

Testatakseni PHP:n toiminnan kirjoitin alla olevan koodin (yhteenlasku 2+2) index.php -tiedostoon käyttäjän public_html -kansioon:

MariaDB

Viimeisenä osana LAMP:ia varten asennetavana oli tietokanta, eli tässä tapauksessa MariaDB. Asennus tapahtui komennolla sudo apt-get -y install mariadb-client mariadb-server.

Kirjauduin tietokantaan root-käyttäjänä, komennolla sudo mariadb -u root. Sitten loin SQL-komennoilla tietokantaan testitaulun ja siihen dataa.

CREATE DATABASE test
use test;
show tables;
+----------------+
| Tables_in_test |
+----------------+
| tests |
+----------------+
1 row in set (0.01 sec)
create table tests (id int auto_increment primary key, name varchar(1024));
insert into tests(name) VALUES ("database test");
Testitietokannan luominen MariaDB:llä.

Lopuksi vielä komennolla grant all on test.* to testuser identified by ‘123test456pass789word’;, loin testikäyttäjätunnuksen tietokannan käyttämistä varten, ja annoin sille kaikki oikeudet luomaani test-tietokantaan.

LAMP toiminnassa (tehtävä j)

Kun viimeinenkin osa oli asennettu, oli aika testata koko putken toimivuus. Tero Karvisen ohjeita noudattaen lähdin tekemään websivua, jolle tulostuisi äsken tekemäni tietokannan sisältö.

Kopioin Karvisen esimerkki PHP-koodin, ja vaihdoin siihen luomani tietokannan testikäyttäjätunnuksen ja sen salasanan. Testasin sivuston toimintaa, mutta sivulla näkyi ainoastaan valkoinen tausta. Komennolla tail /var/log/apache2/error.log avasin Apachen virhelokitiedoston, josta löytyi seuraava rivi:

[Sun Feb 03 16:42:22.249929 2019] [php7:error] [pid 14996] [client 127.0.0.1:52330] PHP Fatal error:  Uncaught PDOException: could not find driver in /home/jaakko/public_html/index.php:18\nStack trace:\n#0 /home/jaakko/public_html/index.php(18): PDO->__construct('mysql:host=loca…', 'testuser', '123test456pass7…')\n#1 {main}\n  thrown in /home/jaakko/public_html/index.php on line 18

Teksti “could not find driver” oli vahva vihje, että jotain oli jäänyt asentamatta. Hetken ohjeita luetuani, tajusin puuttuvan paketin olevan php-mysql, jonka asensin komennolla sudo apt-get install php-mysql. Käynnistin taas palvelimen uudelleen komennolla sudo systemctl restart apache2, ja latasin websivun uudelleen. Nyt sinne ilmestyi tekstinä tietokantaan tallentamani rivi, eli koko LAMP oli nyt toiminnassa:

Webbisivulle tulostui PHP-skriptin avulla tietokannan sisältämä rivi. LAMP toimii.

PHPMYADMIN (tehtävä e)

Lopuksi asensin vielä PhpMyAdmin-lisäosan. Se on selaimen kautta käytettävä tietokantojen hallintatyökalu. Asennus tapahtui komennolla sudo apt-get install -y phpmyadmin. Asennus kysyi mihin tietokantaan haluan yhdistää, ja valitsin Apache2:n. Lisäksi asennus pyysi asettamaan uuden salasanan, jolla tietokantaan kirjaudutaan sisään.

Testasin toiminnan lisäämällä luomaani tietokantaan “tests” uuden rivin, ja tarkistin että se näkyy selaimessa.

PhpMyAdmin hallintatyökalulla voi hallita tietokantoja graafisella käyttöliittymällä.

Lähteet:

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

Pohjana Tero Karvinen 2012: Linux kurssi, http://terokarvinen.com

Viikko 2


Tehtävänanto:

a) Aiheuta lokiin kaksi eri tapahtumaa: yksi esimerkki onnistuneesta ja yksi esimerkki epäonnistuneesta tai kielletystä toimenpiteestä. Analysoi rivit yksityiskohtaisesti.
b) Vapaaehtoinen kohta, ei ole opetettu vielä: Asenna SSH-demoni. Kokeile omalla ssh-palvelimellasi jotain seuraavista: ssh-copy-id, sshfs, scp tai git. (Helpoin lienee scp: ‘scp foo.txt tero@example.com:’)
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.
e) Opettele ulkoa ja harjoittele tärkeimmät komennot (tätä “opettele ulkoa” alakohtaa ei tarvitse raportoida):
http://terokarvinen.com/2009/command-line-basics-4
http://terokarvinen.com/2008/commands-for-admin-4

http://terokarvinen.com/2018/aikataulu-linux-palvelimet-ict4tn021-3004-ti-alkukevat-2019-5-op

Harjoitusympäristö:

Suoritin harjoituksen 27.1.2019 kotonani, käyttäen henkilökohtaista kannettavaa tietokonettani Dell Latitude E5440, johon on asennettuna Xubuntu-käyttöjärjestelmä.

Linuxin tapahtumalokit: (tehtävä a)

Avasin koneen ja kirjauduin Xubuntuun. Kirjoitin ensimmäisellä yrityksellä salasanan väärin, joten oli syytä olettaa että ehdin jo aiheuttaa tapatumalokiin esimerkit epäonnistuneesta, ja onnistuneesta toimenpiteestä.

Avasin komentokehotteen ja siirryin /var/log -hakemistoon:

Avasin less syslog -komennolla syslog-tiedoston, ja aloin käymään sitä läpi. En kuitenkaan löytänyt mitään epäonnistuneeseen sisäänkirjautumiseen viittavaa, vaan pelkästään normaalin oloisia Xubuntun käynnistystoimenpiteitä.

Painoin q päästäkseni pois syslogista, ja listasin log-kansiossa olevat tiedostot ls-komennolla. auth.log -niminen tiedosto herätti mielenkiintoni, joten avasin sen less auth.log -komentoa käyttäen. Sieltä löytyikin lokitietoja sekä epäonnistuneesta, että onnistuneesta kirjautimisestani.

Epäonnistunut
sisäänkirjautiminen
Onnistut sisäänkirjautiminen

Kolme ensimmäistä riviä ovat molemmissa samoja. Epäonnistuneen kirjautumisen tiedoissa neljännestä rivistä alkaen on useita epäonnistuneita yrityksiä ladata joitakin resursseja. Niiden käyttöön tarvitaan käyttäjätunnus ja sitä vastaava salasana, tai vaihtoehtoisesti käyttäjätili, jonka käyttöön ei vaadita salasanaa. Kumpikaan ehdoista ei täyty, joten resurssien lataaminen ei onnistu, ja lopuksi järjestelmä sulkee session.

Onnistuneen kirjautumisen lokitiedoissa neljännestä rivistä alkaen samat prosessit, jotka ensimmäisessä tapahtumassa epäonnistuivat, onnistuvat koska järjestelmä hyväksyi salasanan oikeaksi.

Huomasin että samasta auth.log-tiedostosta löytyi mm. myös tarkat kellonajat, jolloin olen sulkenut kannettavan tietokoneeni kannen Linuxin käynnissä ollessa:

Grep-komentoa käyttäen listattuna milloin olen avannut ja sulkenut koneeni kannen

Unelmien apt-get -komento: (tehtävä c)

sudo apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv-keys 931FF8E79F0876134EDDBDCCA87FF9DF48BF1C90 && echo deb http://repository.spotify.com stable non-free | sudo tee /etc/apt/sources.list.d/spotify.list && sudo apt-get update && sudo apt install gdebi-core wget && wget -O ~/discord.deb “https://discordapp.com/api/download?platform=linux&format=deb” && sudo gdebi –non-interactive ~/discord.deb && sudo apt-get install spotify-client && sudo apt-get -y install vlc

Ylläoleva komento asentaa Spotifyn, Discordin ja VLC:n.

Spotify ja Discord vaativat hieman enemmän komentoja. Eri komennot erotellaan &&(ja)-merkeillä, jotta kaikki voidaan ajaa yhdellä enterin painalluksella.

VLC:n asennus kysyy varmistusta, joten lisäsin -y -komennon vastamaan siihen automaattisesti “Yes”. Saman tein Discordin asennukselle, mutta koska se käyttää GDebi-asennusta, niin se tapahtui komennolla
–non-interactive.

Koska koneelleni oli kaikki ohjelmat valmiiksi jo asennettu, niin testasin varmuuden vuoksi vielä livetikulla komennon toimivuutta, onnistuneesti.

Komentorivillä toimivat ohjelmat: (tehtävä d)

Koska en tiennyt yhtäkään komentorivillä toimivaa ohjelmaa, lähdin liikkelle googlaamalla. Löysin osoitteesta https://www.linux.com/news/top-10-linux-console-applications vinkkejä suosituimmista ohjelmista.

Ensimmäisenä asensin komennolla sudo apt-get install lynx, Lynx-ohjelman, joka on tekstipohjainen web-selain. Kokeilin toiminnan googlaamalla sanan “jeejee”:

Google Lynxin läpi nähtynä

Seuraavaksi asensin Nethack-pelin komennolla sudo apt-get install nethack-console, ja testasin avaamalla pelin ja selailemalla sen eri valikoita:

Nethack-peli.

Kolmantena komentorivillä toimivana ohjelmana asensin komennolla sudo apt-get install vim, Vim-ohjelman, joka on tekstieditori. Testasin toiminnan hakkaamalla näppäimistöä ja lopuksi tallentamalla tiedoston.

Vim-tekstieditori

Lähteet:

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

Pohjana Tero Karvinen 2012: Linux kurssi, http://terokarvinen.com

Viikko 1


Tehtävänanto:

a) Tee oma Linux-livetikku. Kokeile sitä jossain muussa kuin koulun koneessa. Tämä kohta ei edellytä asentamista – jos kuitenkin asennat, ota ensin varmuuskopiot. Jos ehdit tehdä tikun jo tunnilla, voit poikkeuksellisesti raportoida muistin perusteella jälkikäteen, mutta muista silloin mainita muistinvaraisuudesta.
b) Listaa testaamasi koneen rauta (‘sudo lshw -short -sanitize’).
c) Asenna kolme itsellesi uutta ohjelmaa. Kokeile kutakin ohjelmaa sen pääasiallisessa käyttötarkoituksessa.
d) Mitä lisenssiä kukin näistä ohjelmista käyttää? Selitä lyhyesti, mitä oikeuksia ja velvolisuuksia tuosta lisenssistä seuraa.
e) Listaa käyttämäsi ohjelmat (esim. MS Word), kunkin ohjelman käyttötarkoitus (esim. Tekstinkäsittely) ja vastaava vapaa Linux-ohjelma (esim. LibreOffice Writer). Jos johonkin tarkoitukseen ei löydy vapaata Linux-ohjelmaa, listaa sekin. (Päivitetty: korjasin tämän kohdan tunnuskirjaimen d->e)
f) Vapaaehtoinen lisätehtävä: varmuuskopioi tiedostosi (voit käyttää esimerkiksi ulkoista USB-levyä) http://terokarvinen.com/2018/aikataulu-linux-palvelimet-ict4tn021-3004-ti-alkukevat-2019-5-op#h1

Harjoitusympäristö:

Suoritin harjoituksen 19.1.2019 kotonani, käyttäen kahta henkilökohtaista kannettavaa tietokonettani: Asus X540Y jossa on käyttöjärjestelmänä Windows 10 Home, ja Dell Latitude E5440 jonka käyttöjärjestelmä on Windows 10 Education.

Aloitin kello 15:15 ja lopetin kello 23:03. Tein välissä paljon muitakin asioita, joten aikaa ei oikeasti kulunut läheskään niin kauaa.

Linux-livetikun tekeminen: (tehtävä a)

Tämän vaiheen suorittamiseen käytin kannettavaa tietokonettani Asus X540Y. Aloitin Linux-livetikun tekemisen lataamalla Xubuntu 18.04 LTS-käyttöjärjestelmän osoitteesta http://ftp.lysator.liu.se/ubuntu-dvd/xubuntu/releases/18.04/release/ (xubuntu-18.04-desktop-amd64.iso). Tiedoston koko oli noin 1,3 gigatavua ja lataus kesti noin 8 minuuttia.

Seuraavaksi tarvitsin ohjelman, jolla voin luoda lataamastani levykuvasta boottaavaan USB-tikun. Latasin tätä varten ohjelman nimeltä Rufus (versio 3.4) osoitteesta https://rufus.ie/ . Ohjelma oli vain yhden megan kokoinen, ja lataus kesti alle sekunnin.

Kytkin Kingston DataTraveler 100 G3 8GB-muistitikun tietokoneeseen. Tikku käyttää USB 3.0-teknologiaa.

Käynnistin Rufus-ohjelman ja valitsin boottaustyypin valinta-kohdasta lataamaan Xubuntun levykuvatiedoston. Muut asetukset jätin oletuksiin, ja painoin aloita. Ohjelma ilmoitti, että operaation suorittaakseen sen tulisi ladata vielä kaksi tiedostoa.

Rufus

Hyväksyin tämän painamalla kyllä, ja ohjelma suoritti lataukset alle sekunnissa. Tämän jälkeen ohjelma kysyi, haluanko kirjoittaa levykuvan ISO-kuvana, vai DD-kuvana. Oletuksena valittuna ollut ISO-kuva oli ok, joten painoin ok.  Rufus varoitti vielä kaikkien USB-tikulla olevien tiedostojen katoavan, mikäli jatkan. Hyväksyin painamalla ok ja tikun luominen alkoi. Operaatio kesti 7 minuuttia 46 sekuntia.

Livetikun testaaminen: (tehtävä b)

Käynnistin tietokoneen uudelleen ja sen käynnistyessä painoin Esc-nappia päästäkseni boottimenuun. Nappi vaihtelee koneen merkistä ja mallista riippuen. Boottivalikosta valitsin haluavani käynnistää koneen luomaltani USB-tikulta. Muutaman sekunnin kuluttua aukesi Install-valikko. Painoin Try Xubuntu, koska halusin vain kokeilla liveversiota.

Xubuntun työpöytä aukesi hetkessä. Klikkasin oikeassa yläkulmassa olevasta Ubuntu-logosta avatakseni päävalikon. Sieltä valitsin Settings > Keyboard  ja aukesi näppäimistöasetusten. Menin Layout-välilehdelle, painoin Add-nappia ja valitsin auenneesta valikosta Finnish, vaihtaakseni näppäimistön suomalaiseksi. Deleteä painamalla poistin englannin kielisen näppäimistön, ja suljin valikon painamalla close.

Xubuntun näppäimistöasetuksia

Avasin Terminal Emulatorin ja kirjoitin siihen sudo lshw -short -sanitize. Komento tulosti konsoliin tiedot koneen raudasta.

Asus X540Y:n rauta

Linuxin asentaminen Windowsin rinnalle (Dual boot):

Päätin asentaa toiselle, vara- ja testailukoneena käyttämälleni, Dell Latitude E5440:lle Windows 10:n rinnalle Xubuntun, jotta voisin paremmin opetella Linuxin käyttöä. Olin ottanut varmuuskopiot (näistä kerron vielä enemmän myöhemmin) koneen tiedostoista edellisiä vaiheita suorittaessa.

Laitoin USB-tikun kiinni koneeseen ja käynnistin koneen, painaen heti F12, joka on tämän koneen taikanappi boottivalikkoon pääsemiseksi. Valitsin käynnistysmetodiksi tikun. Muutaman sekunnin päästä Install-valikon jälleen avauduttua, painoin tällä kertaa “Install Xubuntu“.

Kieleksi jätin englannin ja painoin Install Xubuntu. Näppäimistöasetteluksi valitsin Finnish. Yhdistin kotini Wlan-verkkoon. Jätin rastin kohtaan ”download updates while installing Xubuntu”. Asennusohjelma kysyi kuinka haluan asentaa Xubuntun, ja valitsin asennuksen rinnakkain Windows 10:n kanssa.

Seuraavaksi asennusohjelma valmistautui tekemään uuden osion kovalevylle Xubuntua varten.

Ennen uuden kovalevy osion luomista, asennusohjelma varmisti vielä kahteen kertaan, että haluan varmasti suorittaa operaation. Kuittasin nämä painamalla molemmilla kerroilla “Continue”. Tämän jälkeen asennus alkoi.

Asennuksen lopuksi Xubuntu tiedusteli mistä päin maapalloa olen, ja valitsin vyöhykkeeksi Suomen. Tämän jälkeen määritettiin nimeni, tietokoneen nimi, käyttäjänimi ja salasana. Sitten oli valmista. Asennus kesti noin 20 minuuttia. Tämä kone on vanha ja erittäin väsynyt.Uudemmilla koneilla asennus lienee nopeampaa.

Dell Latitude E5440:n rauta

Itselleni uusien ohjelmien asennus ja testaus ja niiden lisenssit: (tehtävät c,d)

Käynnistin asennetun Xubuntun ja aloin kunnolla tutkimaan Linux-mailmaa. Päävalikosta löytyvästä Software-osiosta lähdin etsimään ohjelmia. Samalla Software Updater tarjosi päivityksiä, ajureita ja muuta. Otin päivitykset vastaan.

Päivitysten lataillessa löysin Software-ostiosta Super Tux Kart – autopelin, jonka asensin, ja testasin pelaamalla sitä voitokkaasti.

Hassun hauska Mario Kart-tyylinen ajopeli

Super Tux Kart käyttää GNU General Public License 3.0+-lisenssiä. Se tarkoittaa pähkinänkuoressa:

Ohjelmaa saa vapaasti käyttää ja tutkia

Ohjelmaa saa jakaa edelleen, kunhan lähdekoodi ja lisenssi annetaan mukaan

Ohjelmaan saa tehdä muutoksia ja näitä muutoksia levittää edelleen, kunhan muutoksista ilmoittaa selvästi (yleensä changelog-tiedostossa), GPL-ilmoituksia ei poista ja muunnettu lähdekoodi ja lisenssi annetaan mukaan, sikäli kuin uutta versiota levitetään

Ohjelmasta saa ottaa osia ja käyttää muissa ohjelmissa, jotka käyttävät GPL-lisenssin samaa versiota, kunhan tekijät mainitaan asianmukaisesti. Monessa ohjelmassa käyttäjän annetaan valita mitä GPL:n versiota käytetään. (Linux Wiki)

Pelattuani pelin, aiemmin mainitsemani päivitykset olivat latautuneet ja asentuneet. Järjestelmä pyysi saada käynnistyä uudelleen, ja annoin sille siihen luvan.

Palasin selaamaan ohjelmia ja latasin seuraavaksi kuvankäsittelyohjelma Gimp:in. Testasin sen toiminnan piirtämällä tikku-ukon. Myös Gimp käyttää GPL 3.0+-lisenssiä.

Kolmantena itselleni uutena ohjelmana asensin Freeplane:n. Se on ohjelma, jolla voi piirtää mindmappeja. Testasin toiminnan tekemällä pari pallurraa ja yhdistämällä ne viivalla. Freeplane:n kotisivuilla kerrotaan ohjelman käyttävän GPL 2.0 tai sitä uudempaa versiota lisenssistä, eli samat säännöt päteväit, kuin edellä mainituissa.

Käyttämieni ohjelmien asennus ja testaus: (tehtävä e)

Software-osion etusivun suosituimmista löytyikin heti ensimmäinen etsimäni, eli Discord-viestintäsovellus. Testasin toiminnan kertomalla sen välityksellä koulukavereilleni pari huonoa vitsiä. Discord käyttää omisteisen ohjelmiston lisenssiä. Se tarkoittaa tiivistettynä, että ohjelmiston omistaja määrittää millä ehdoin ohjelmistoa saa käyttää, ja sitä ei ilman erillistä lupaa saa muokata tai levittää.

Microsoft Wordin vastine, LibreOffice Writer löytyi Xubuntusta valmiiksi asennettuna. Toiminnan testasin kirjoittamalla sillä tätä raporttia. LibreOfficen käyttämä lisenssi on Mozilla Public Licencse 2.0.

Seuraavaksi päätin selvittää, miten saan Windowsin BitLocker-ohjelmalla kryptatun kovalevyosion näkyviin. Googletettuani löysin Dislocker-nimisen ohjelman. Se käyttää myös GPL 2.0+ lisenssiä. Asensin ohjelman terminalin kautta.

Disclockerin asentelua

Noudattaen netistä löytämiäni ohjeita lähdin avamaan BitLocker-suojausta. Ensin listasin komennolla fdisk -l kaikki kovalevyn osiot, jotta tiedän mitä osiota lähden avamaan.

fdisk -l -komennolla kaikki kovalevyn osiot listattuna

Aseman koosta pystyin päättelemään, että etsimäni asema on /dev/sda5. Seuraavaksi syötin komennot, joilla suojaus avataan.

Komennot joilla Bitlocker suojaus avattiin. Salasanani olen luonnolisesti sensuroinut.

Menin File Manageriin katsomaan näkyikö kovalevyn osio, ja näkyihän se eli operaatio onnistui.

Ennen / jälkeen kuva File Managerista. Dislocker avasi onnistuneesti BitLocker-kryptauksen

Lopuksi asensin Software-osiosta Spotifyn, joka käyttää omisteisen ohjelmiston lisenssiä. Testasin toiminnan laittamalla musiikkia soimaan ja avasin Xubuntun mukana tulleen Sudoku-pelin. Kello 23:03.

Varmuuskopiointi: (tehtävä f)

Harrastan varmuuskopiointia. Synkronoin tiedostoni kahden käyttämäni koneen välillä. Lisäksi varmuuskopioin tiedostot kahdelle eri ulkoiselle kovalevylle. Suoritan varmuuskopioinnin säännöllisen epäsäännöllisesti, 1-2 kuukauden väliajoin. Tällä tavoin tiedostot ovat neljällä eri kovalevyllä, joten tiedostojen menettäminen laitevikojen takia on äärimmäisen epätodennäköistä. Tulipalovarma varmuuskopiojärjestelmäni ei ole, sillä varmuuskopiokovalevyt sijaitsevat omassa asunnossani, kuten tietokoneetkin suurimman osan ajasta. Osa tiedostoista, esimerkiksi koulutyöt, ovat myös tulipalolta turvassa Microsoftin OneDrive-pilvipalvelussa,

Tähän loppuun vielä omakohtainen kokemus, kun sopii täydellisesti aiheeseen.

Opin varmuuskopioinnin tärkeyden kantapään kautta, kun 6-7 vuotta sitten, kun lähes uusi kovalevyni hajosi varoittamatta. Tällöin myös otin ensi kosketukseni Linuxiin.

Kovalevy kyllä käynnistyi, kun kytkin sen USB-telakalla tietokoneeseen, mutta Windows ei sitä tunnistanut. Tuntien googlettelun ja useille päiville jakautuneen, lukuisten eri tiedostojenpalautusohjelmien kokeilemisen jälkeen, onnistuin palauttamaan joitakin tiedostoja. Ne olivat kuitenkin lähinnä Windowsin järjestelmätiedostoja, joilla en tehnyt mitään. Kovalevy oli osioitu kolmeen osaan, ja osioita joilla tärkeimmät tiedostot sijaitsivat, Windows ei havainnut millään vippaskonstilla.

Googletellessa olin useasti lukenut ihmisten kokemuksia onnistuneesta tiedostojen palautuksesta Linuxilla. Viimeisenä yrityksenäni päätinkin kokeilla sitä, vaikka aiempaa kokemusta Linuxin käytöstä ei ollut, ja aloin uskomaan kovalevyn olevan täysin mennyttä kalua.

Asensin jonkin version Ubuntusta. Yksityiskohdat ovat tässä vaiheessa hatarat, mutta melko nopeasti päiviteltyäni levylistaa File Managerissa, ilmestyi kaksi rikkinäisen kovalevyn osioista näkyviin. Sain auki kansionäkymän ja näin tiedostoni! Kokeilin avata kuvia, videoita ja tekstitiedostoja. Ne aukesivat, joskin osa tiedostoista oli osin tai kokonaan vaurioitunut.

Ryntäsin Giganttiin ostamaan ulkoisen kovalevyn ja kopioin kaiken saatavissa olleen rikkinäiseltä kovalevyltä siihen. Kokeilin vielä ottaa Ubuntulla levykuvan rikkinäisestä kovalevystä, mutta se ei onnistunut. Lisäksi kolmannen kovalevyosion tiedostoihin en päässyt käsiksi. Kovalevy oli niin pahasti rikki, että jo aiemmin löytyneet kovalevyosiot katosivat näkyvistä uudelleenkäynnistysten jälkeen. Sain kuitenkin kaikkein tärkeimmät tiedostot Linuxin avulla talteen.

Tarinan opetus: ottakaa varmuuskopioita. Ja Linux pystyy asioihin, joihin Windows ei.

Lähteet:

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

Pohjana Tero Karvinen 2012: Linux kurssi, http://terokarvinen.com