Linux Palvelimet viikko 7

Harjoitus H7

09-10-2018

a) Ratkaise valitsemasi vanha arvioitava laboratorioharjoitus tältä kurssilta. (Löytyy DuckDuckGolla tai Googlella sekä linkeistä tältä sivulta).

b) Kaikki tehtävät arvioitavaksi. Palauta linkki sivuun, josta löytyvät kaikki kotitehtäväraporttisi. Arviointi tehdään ensisijaisesti tästä linkistä. Linkki voi olla esimerkiksi blogin etusivu (jos blogissa on vain kotitehtävät) tai sivuun, jossa on linkki kuhunkin tehtävään. Kaikki tehtävät -linkin palautus Moodlessa kohtaan “Kaikki tehtävät arvioitavaksi”.

c) (vapaaehtoinen) Käytä Linuxia kurssin ulkopuolella.

d) (vapaaehtoinen) Varaa kalenteristasi viikon välein aikoja Linux-harjoitteluun kurssin jälkeen.


Suoritan tehtävät pöytäkoneellani, jonka tiedot löytyvät Viikon 1 tehtävistä. Linuxina pyörii livetikulta Xubuntu 18.04.01 LTS.


Valitsin laboratioharjoitukseksi harjoituksen keväältä 2017. Linkistä pääsee harjoituksen sivulle.

http://terokarvinen.com/2017/arvioitava-laboratorioharjoitus-%e2%80%93-linux-palvelimet-ict4tn021-2-uusi-ops-alkukevaalla-2017-p1

Tehtävä:

Haluamme tehdä PHP-kotisivuja etäältä.

Työntekijöitämme ovat Jorma Mähkylä, Pekka Hurme, Ronaldo Smith, Håkan Petersson, Einari Mikkonen, Einari Vähäkäähkä, Eija Vähäkäähkä. Tee heille HTML5-esimerkkikotisivut siten, että kunkin testisivun otsikossa lukee omistajan käyttäjätunnus.

Maija Virtanen jatkaa ylläpitoa, tee hänelle sudo-tunnus. Maija haluaa käyttäjätunnuksen “maija”.

Pekka Hurme aloittaa LAMPin opiskelun. Tee Pekalle oma tietokanta, ja muuta hänen PHP-esimerkkisivunsa näyttämään tietueita tietokannasta (eli tietokantojen “hei maailma”).

Jorma aikoo kehittää uuden sivun sleep.example.com. Laita Jorman kotisvu näkymään myös tästä osoitteesta. Voit simuloida nimipalvelun toimintaa hosts-tiedoston avulla.

Suojaa kone tulimuurilla.

Tee uusi komento ‘wowstats’, joka näyttää tietoja koneen tilasta. Sen tulee toimia jokaisella käyttäjällä työhakemistosta riippumatta.

Tee kaikki niin realistisesti, kuin se labrassa on mahdollista: käytä järkeviä käyttäjätunnuksia ja salasanoja. Testaa kaikki palvelut niin julkisilla nimillä tai IP-osoitteilla, kuin labrassa on mahdollista.


Etätyöskentely :

Ensimmäiseksi latasin ssh demonin etätyöskentelyä varten.

  • sudo apt-get -y install ssh

Reikä tulimuuriin ssh:ta varten, sekä valmiiksi http portti weppisivuja varten,

  • sudo ufw allow 22/tcp
  • sudo ufw allow 80/tcp
  • sudo ufw enable
  • sudo ufw status verbose

Verbose näytti vastaavalta:

xubuntu@xubuntu:~$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To Action From
— —— —-
22/tcp ALLOW IN Anywhere
80/tcp ALLOW IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
80/tcp (v6) ALLOW IN Anywhere (v6)

Tulimuuri valmis joten siirryin seuraavaan osaan.


Apache:

Apache asentui seuraavilla komennoilla, sekä korvasin oletussivun tekstillä:

  • sudo apt-get -y install apache2
  • echo Testisivu | sudo tee /etc/h

Selection_001Selection_002

Oletussivu korvattu onnistuneesti.

Enabloidaan käyttäjän kotisivujen ajaminen kotihakemiston kansiosta:

  • sudo a2enmod userdir
  • sudo systemctl restart apache2
  • mkdir public_html
  • cd public_html
  • nano index.html

Selection_003.png

Käyttäjän kotisivut toimivat kotihakemiston public_html kansiosta oikein.


PHP:

  • sudo apt-get -y install php

Ja jotta php:ta voitaisiin ajaa tulee sijainnista /etc/apache2/mods-available/ muokata tiedostoa php7.2.conf.

Public_html kansion indexiin kirjoitettu vastaavaa ja muutettu nimi index.php

<?php
Print “Hello World!”
?>

Lopputulos oli vastaava:

Selection_004.png

PHP näytti toimivan oikein joten siirryin seuraavaan osioon.


Käyttäjät:

Loin jokaiselle käyttäjälle omat tunnukset, Maijalle lisättiin vielä sudo oikeudet. Kaikille käyttäjille oli tarkoitus luoda omat weppisivut jonka otsikossa lukee käyttäjän nimi. Jotta jokaiselle et tarvitse luoda erikseen omaa public_html kansiota, tein ensin public_html kansion. Sitten siirsin public_html kansion /etc/skel:iin.

  • sudo cp -r public_html /etc/skel/

Käyttäjätunnuksen salasanoja varten latasin pwgen:in jolla saan generoitua vahvoja salasanoja käyttäjille.

  • sudo apt-get -y install pwgen
  • pwgen 12 10

Loin 12 merkkisiä salasanoja 10 kpl joista valitsin 6 käyttäjiä varten.

Käyttäjien kotisivuja varten tein bash scriptin jonka ajamalla käyttäjän public_html kansioon luodaan automaattisesti index.html tiedosto joka saa sivun näyttämään käyttäjätunnuksen otsikossa.

Scriptistä tuli vastaavanlainen:

#!/bin/bash
echo “<title>$(whoami)</title>” | tee public_html/index.html

Selection_005

Kuten kuvasta näkyy on sivun otsikkona käyttäjän nimi, tässä tapauksessa “xubuntu”.

Scripti toimi joten lisäsin siihen kaikille oikeuden ajaa, sekä siirsin sen /bin :iin.

  • sudo chmod ugo+x omasivu
  • sudo cp omasivu /usr/bin/

Loin ensimmäiseksi käyttäjän jorma:

  • sudo adduser jorma

Salasanaksi asetin pwgenillä luomistani 12 merkkiä pitkistä salasanoista.

Testasin käyttäjän etäkäytön ja varmistin että scripti toimii:

  • ssh jorma@localhost
  • omasivu

jorma@xubuntu:~$ omasivu
<title>jorma</title>

Selection_006.png

Otsikko on “jorma” eli scripti toimi myös oikein käyttäjällä. Seuraavaksi siirryin muiden käyttäjien luomiseen ja testaamiseen.

Loin 6 uutta käyttäjää omille nimilleen, luodut käyttäjät käyttäjänimineen alla:

  • Nimi: Jorma Mähkylä Käyttäjätunnus: jorma
  • Nimi: Pekka Hurme Käyttäjätunnus: pekka
  • Nimi: Ronaldo Smith Käyttäjätunnus: ronaldo
  • Nimi: Håkan Petersson Käyttäjätunnus: hokan
  • Nimi: Einari Mikkonen Käyttäjätunnus: einarim
  • Nimi: Einari Vähäkäähkä Käyttäjätunnus: einari
  • Nimi: Eija Vähäkäähkä Käyttäjätunnus: eija
  • Nimi: Maija Virtanen Käyttäjätunnus: maija

Maija Virtasen käyttäjästä tehtiin myös sudokäyttäjä.

  • sudo usermod -aG sudo maija

Testattu etäkäyttö kaikilla käyttäjilla ja ajettu “omasivu” scripti jolla saatu aikaan odotetut tulokset kuten jormankin käyttäjällä. Maijan käyttäjällä testattu myös että sudo oikeudet ovat perityneet.

maija@xubuntu:~$ sudo whoami
[sudo] password for maija:
root


Mariadb:

Asennettu mariadb:

  • sudo apt-get -y install mariadb-client mariadb-server

Käynnistetty mariadb sudona ja luotu uusi tietokanta jota varten oma käyttäjä:

  • sudo mariadb -u root
  • CREATE DATABASE pekkadb;
  • GRANT ALL ON pekkadb.*TO pekkadb@localhost IDENTIFIED BY ‘******’;

“*” merkkien tilalle laitettava haluttu salasana mariadb käyttäjälle.

Testattu että käyttäjälle kirjautuminen toimii, sekä että käyttäjä ei pysty luomaan tietokantoja. Ainoastaan tiettyyn tietokantaan tauluja ja muita tietoja.

  • mariadb -u pekkadb -p
  • SHOW DATABASES;
  • MariaDB [pekkadb]> CREATE DATABASE lol
    -> ;
    ERROR 1044 (42000): Access denied for user ‘pekkadb’@’localhost’ to database ‘lol’
  • use pekkadb
  • CREATE TABLE pekkapoints (id INT AUTO_INCREMENT PRIMARY KEY, move VARCHAR(1024), points FLOAT);
  • INSERT INTO pekkapoints (move, points) VALUES(“kurkipotku”, 10.0);
  • INSERT INTO pekkapoints (move, points) VALUES(“hide”, 0.0);
  • SELECT * FROM pekkapoints

SELECT * näytti vastaavalta:

MariaDB [pekkadb]> SELECT * FROM pekkapoints
-> ;
+—-+————+——–+
| id | move | points |
+—-+————+——–+
| 1 | kurkipotku | 10 |
| 2 | hide | 0 |
+—-+————+——–+
2 rows in set (0.00 sec)

Seuraavaksi testasin että CRUD toimii tietokannassa oikein:

  • UPDATE pekkapoints SET points=1 WHERE move =”hide”;

MariaDB [pekkadb]> SELECT * FROM pekkapoints
-> ;
+—-+————+——–+
| id | move | points |
+—-+————+——–+
| 1 | kurkipotku | 10 |
| 2 | hide | 1 |
+—-+————+——–+
2 rows in set (0.00 sec)

Update toimi.

Seuraavaksi DELETE:

  • DELETE FROM pekkapoints WHERE name =”hide”;

MariaDB [pekkadb]> SELECT * FROM pekkapoints;
+—-+————+——–+
| id | move | points |
+—-+————+——–+
| 1 | kurkipotku | 10 |
+—-+————+——–+
1 row in set (0.00 sec)

CRUD toimii oikein testien perusteella.

Asensin paketinhallinnasta paketin jolla voidaan php:n avulla lukea tietoja tietokannasta:

  • sudo apt-get -y install php-mysq
  • systemctl restart apache2

Seuraavaksi muokkasin pekka käyttäjän index.html tiedostoa. Koodina käytin pohjaa joka löytyy linkistä:

http://terokarvinen.com/2016/read-mysql-database-with-php-php-pdo

Koodi näytti vastaavalta kun siihen oli laitettuna tietokannan ja käyttäjän tiedot:

<title>pekka</title>

<?php
// public_html/index.php – Read MySQL from PHP
// (c) 2016 Tero Karvinen http://TeroKarvinen.com

// MySQL Login
$user=’pekkadb’;
$password=’*****’;

// Data Source Name i.e. connection details
$database=$user;
$dsn=”mysql:host=localhost;charset=UTF8;dbname=$database”;

// Open Connection, create new object of PDO class
$pdo=new PDO($dsn, $user, $password);

// Perform SQL Query
$pdoStatement=$pdo->prepare(‘SELECT * FROM pekkapoints;’);
$pdoStatement->execute();
$hits=$pdoStatement->fetchAll();

// Print the $hits Array
foreach($hits as $row) {
echo “<p>”.$row[‘id’].” “.$row[‘move’].” “.$row[‘points’].”</p>\n”;
}
?>

Testisivu näytti tiedot näin:

Selection_007.png

Eli tietojen lukeminen tietokannasta on onnistunut !


Jorman kotisivujen virtuaalihosting:

Järjestelmä ei useiden tuntien yritysten jälkeen vieläkään sallinut näyttämään jorman kotisivuja sleep.example.com sivulta.

Ongelmaksi muodostui sleep.example.com sivun ajaminen käyttäjän kotihakemistosta. /etc/apache2/sites-available/ kansioon loin uuden conf tiedoston jorman sivuja varten mutta tämän enabloitua ja apachen restarttia ajaessa antoi järjestelmä vastaavan virheen:

sudo systemctl restart apache2
Job for apache2.service failed because the control process exited with error code.
See “systemctl status apache2.service” and “journalctl -xe” for details.

Apachen lokitietojen selaaminenkaan ei tuottanut tulosta, enkä löytänyt ratkaisua tähän osioon.


wowstats:

Loin käyttäjällä tekstitiedoston wowstats.sh johon kirjoitin vastaavaa:

#!/bin/bash

echo “Hello,”
whoami

echo “Your IP is:”
hostname -i

echo “Your temps are:”
sensors -A

echo “Status of ram is:”
free -m

Lisäsin kaikille käyttäjille oikeuden suorittaa

  • sudo chmod ugo+x wowstats.sh

Ajoin scriptin omassa kotihakemistossa sudo käyttäjällä ja se toimi oikein. Nimesin scriptin uudelleen ja siirsin /usr/bin/ kansioon.

  • mv wowstats.sh wowstats
  • sudo cp wowstats /usr/bin/

Seuraavaksi otin ssh yhteyden jorman koneelle ja kotihakemistossa suoritin komennon “wowstats”:

Selection_008.png

Scripti toimii oikein käyttäjillä hakemistosta riippumatta !


1_010.png

Tässä vielä kuvakaappaus mitä pitäisi palauttaa labraharjoituksen päätteeksi eri tiedostoina.

Advertisements

Linux Palvelimet viikko 6

Harjoitus H6

01-10-2018

a) Kirjoita ja suorita “Hei maailma” kolmella kielellä. Asenna tarvittavat ympäristöt. (Uusin versio: Programming Languages on Ubuntu 18.04. Vinkkejä: vanhat kotitehtäväraportit, Hei maailmojen lista, Hello Go, osin hieman vanha Programming Languages on Linux).

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

Tehtävien suorituksessa  käytin kyseistä linkkiä apuna:

http://terokarvinen.com/2018/hello-python3-bash-c-c-go-lua-ruby-java-programming-languages-on-ubuntu-18-04


Suoritan tehtävät pöytäkoneellani, jonka tiedot löytyvät Viikon 1 tehtävistä. Linuxina pyörii livetikulta Xubuntu 18.04.01 LTS.


a) Kirjoita ja suorita “Hei maailma” kolmella kielellä. Asenna tarvittavat ympäristöt.

Ensimmäisenä loin oman hakemiston johon voin tallentaa harjoitukseen tehtävät tiedostot.

  • mkdir Testit

Python:

Varmistin että python oli asennettuna järjestelmään komennolla:

  • sudo apt-get -y install python

xubuntu@xubuntu:~/Testit$ sudo apt-get install python
Reading package lists… Done
Building dependency tree
Reading state information… Done
python is already the newest version (2.7.15~rc1-1).
0 upgraded, 0 newly installed, 0 to remove and 180 not upgraded.

Järjestelmästä löytyi jo pythoniin vaadittavat paketit joten pystyin jatkamaan tehtävää.

Loin “Testit” hakemistoon tiedoston hellow.py:

  • nano hellow.py

Seuraavaksi kirjoitin tekstitiedostoon koodia:

print(“Hello World!”)

Testasin koodia terminaalissa komennolla:

  • python3 hellow.py

Ja vastaukseksi tuli :

Selection_001.png

Koodi toimi oikein joten siirryin seuraavan kielen pariin.


Bash:

Varmistin että bash on ajantasalla:

  • sudo apt-get -y install bash

Vastaus oli sama kuin Pythonin kanssa eli ei tiedostoja ladattu tai päivitetty.

Loin uuden tekstitiedoston “Testit” hakemistoon ja kirjoitin tekstitiedostoon seuraavat asiat:

  • nano hei.sh
  • #!/bin/bash
    echo “Hello World!”

“#!/bin/bash” lisätty siksi että kyseistä koodia voitaisiin ajaa shell skriptinä kansiosta. ( tämä lisäys oli omaa harjoittelua skripteihin liittyen )

Lisäsin tiedostoon oikeuden suorittaa kaikilla käyttäjillä:

  • chmod ugo+x hei.sh

Chmod lisää oikeuksia, ja “x” on oikeus suorittaa.

Ensin testasin että koodi toimii kansiossa:

Selection_002.png

Toimi oikein eli pystyin kopioimaan koodin /usr/local/bin kansioon. Tiedoston kopiointi vaati sudo oikeudet.

  • sudo cp hei.sh /usr/local/bin/
  • cd

Cd siksi että siirryin kotihakemistoon testaamaan toimiiko koodi.

Selection_003

Skripti ja koodi toimi oikein !


PHP:

Jotta pystyin testaamaan PHP koodia selaimessa täytyi ensin asentaa apache. Asennus onnistui samalla tavalla kuin viimeviikon tehtävissä, ohjeet löytyvät täältä :

Linux Palvelimet viikko 5

Apachen asennuksen jälkeen asensin PHP:n ja enabloin sen ajon weppisivulle.

Ohjeet löytyivät tähän myös viimeviikon tehtävistä joista linkki yllä.

Kotihakemistoon loin indexitiedoston ja sinne kirjoitin php koodin:

  • nano index.php

<?php
print “Hello World!”;
?>

Seuraavaksi katsoin selaimella localhost/~xubuntu ja sivu näytti vastaavalta :

Selection_004.png

Koodi toimi oikein !


 

Linux Palvelimet viikko 5

Harjoitus H5

25-09-2018

a) Asenna LAMP (M=MariaDB).
b) Tee PHP-ohjelma, joka lukee tietueita MariaDB-tietokannasta.
c) Lisää PHP-ohjelmaasi mahdollisuus lisätä tietueita tietokantaan.
d) Pelaa SQLzoo:ta (tätä d-kohtaa ei tarvitse raportoida)


Suoritan tehtävät pöytäkoneellani, jonka tiedot löytyvät Viikon 1 tehtävistä. Linuxina pyörii livetikulta Xubuntu 18.04.01 LTS.


a) Asenna LAMP (M=MariaDB)

L = Linux, pyörii livetikulta eikä vaadi erillistä asennusta. Testattu järjestelmän toimivuutta avaamalla nettiselain ja suorittamalla google haku. Terminaalin toimivuus todettu vaihtamalla näppäinasettelu suomeksi, päivittämällä paketinhallinta, sekä asentamalla Shutter kuvakaappauksia varten.

  • setxkbmap fi – Näppäinasettelun muuttamiseksi
  • sudo apt-get update – Päivittääkseen paketinhallinta
  • sudo apt-get -y install shutter – Kuvakaappauksia varten

Kuvakaappaus vielä terminaalista shutterilla, joten todettu shutter toimivaksi oikein.

Terminal - xubuntu@xubuntu: ~_001.png


A = Apache

Asennettu Apache terminaalista komennolla:

  • sudo apt-get -y install apache2

Apache asentui oikein ja vastasi localhostista:

Apache2 Ubuntu Default Page: It works - Mozilla Firefox_002.png

Seuraavaksi poistin apachen oletussivun:

  • echo Default VEX! | sudo tee /var/www/html/index.html

Lopputulos näytti vastaavalta:

Mozilla Firefox_003.png

Seuraavilla komennoilla apacheen kotihakemisto, käyttäjän kotisivuja varten. Annettu käyttäjälle myös oikeus ajaa omia sivuja luodusta hakemistosta.

  • mkdir public_html – hakemiston luonti
  • nano index.html – public_html hakemistoon index tiedosto
  • sudo a2enmod userdir – sallii omien sivujen käytön apachessa
  • systemctl restart apache2 – tämä käynnistää apachen uudestaan jotta muutokset tulevat voimaan.

Sivu vastasi käyttäjän hakemistosta oikein:

Mozilla Firefox_004

Apache näytti toimivan testien mukaan oikein joten siirryin seuraavaan kohtaan.


M = Mariadb

Ohjelman asennus tapahtui seuraavalla komennolla:

  • sudo apt-get -y install mariadb-client mariadb-server

Järjestelmän tulimuuri oli jo päällä, eikä ssh yhteyttä ole käytössä joten reikää ssh:ta varten en tehnyt hyökkäyspinta-alan minimoimiseksi.

Käynnistin mariadb:n ja kirjauduin sisään mariadb:hen root tunnuksella

  • sudo mariadb -u root

Mariadb terminal.png

Seuraavaksi tein tietokannan “miikatodo”.

  • CREATE DATABASE miikatodo;

Ja varmistin että uusi tietokanta näkyy valikossa:

  • SHOW DATABASES;

mariadb-miikatodo.png

Sitten tein miikatodo tietokantaa varten oman käyttäjän (“*” merkkien tilalle laitetaan käyttäjälle laitettava salasana ):

  • GRANT ALL ON miikatodo.* TO miikatodo@localhost IDENTIFIED BY ‘******’

Sen jälkeen kirjauduin sisään miikatodo käyttäjälle:

  • mariadb -u miikatodo -p

mariadb-user.png

Pääsin kirjautumaan käyttäjälle, toki ensimmäisen kerran salasanaa syöttäessä näppäilyvirheen takia kirjautuminen epäonnistui.

Valitsin miikatodo käyttäjällä miikatodo tietokannan komennolla:

  • use miikatodo

Loin uuden taulun “Tasks” tietokantaan, johon voi syöttää tiedoksi tehtävän nimen ja siihen tarvittavan ajan.

  • CREATE TABLE Tasks (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(1024), time FLOAT);

VARCHAR(X) tarkoittaa että sarakkeeseen voi kirjoittaa tekstiä, maksimissaan 1024 merkin verran. FLOAT sarake ottaa vastaan lukuja.

Kirjoitin sarakkeisiin dataa:

  • INSERT INTO Tasks (name, time) VALUES (“Wash the dishes”,0.5);
  • INSERT INTO Tasks (name, time) VALUES (“Cook”,1);
  • INSERT INTO Tasks (name, time) VALUES (“Train linux excersices”,2);

Tarkistin että data on oikeasti tullut oikein tietokantaan:

  • SELECT * FROM Tasks

SELECT.png

Testasin myös tietojen päivittämisen ja poiston:

  • UPDATE Tasks SET time=0.75 WHERE name=”Cook”;
  • DELETE FROM Tasks WHERE id=2;

Näillä komennoilla sain tehtävän “Cook” ajan muutettua 0.75 ja poistettua sarakkeen jonka id oli 2, eli “Wash the dishes”.

Varmistettu että komennot toimivat:

  • SELECT * FROM Tasks

SELECT2.png

Näiden testien perusteella CRUD näytti toimivan mariadb:ssä oikein joten pääsin siirtymään seuraavaan vaiheeseen.


P = PHP

Asensin PHPn komennolla:

  • sudo apt-get -y install php

Ja jotta php:ta voitaisiin ajaa tulee sijainnista /etc/apache2/mods-available/ muokata tiedostoa php7.2.conf.

php.png

Merkatut rivit täytyi muuttaa kommenteiksi “#” merkeillä jotta Php:ta voidaan ajaa. Tiedoston muuttaminen vaati sudo oikeudet, tein muutokset seuraavalla komennolla:

  • sudoedit php7.2.conf

Selection_012.png

PHP näytti tulostavan tekstiä oikein sivulle.


b) Tee PHP-ohjelma, joka lukee tietueita MariaDB-tietokannasta.

Kyseisen tehtävän tekemiseen olen käyttänyt linkistä löytyviä ohjeita.

http://terokarvinen.com/2016/read-mysql-database-with-php-php-pdo

Ajoin seuraavan komennon terminaalista jotta php:lla pystyisi hakeman tietoa tietokannasta:

  • sudo apt-get -y install php-mysq
  • systemctl restart apache2

Apache täytyi myös käynnistää uudelleen jotta php voi tulostaa tietokannan tietoja weppisivulle.

Muutin kotihakemiston public_html kansiosta löytyvää indexin koodia vastaavanlaiseksi:

Selection_014.png

PHP onnistuneesti luki tietoa tietokannasta ja tulosti ne sivuille.


c) Lisää PHP-ohjelmaasi mahdollisuus lisätä tietueita tietokantaan.

Käytin tunnillakin käyttämäämme koodia pohjana joka löytyy linkistä:

http://terokarvinen.com/2018/php-database-select-and-insert-example-php-pdo

Muokkasin koodiin tietokannan miikatodo Tasks taulun sarakkeet ja koodi ja lopputulokset näyttivät vastaavalta:

Terminal - xubuntu@xubuntu: ~-public_html_016.png

Selection_015.png

Sain lisättyä formin kautta tietoja tietokantaan, ja ne näkyivät myös mariadb:ssä. Poistelin misclickit, kun tietojen lähetyksen jälkeen sivua päivittäessä mikäli formin laatikoissa oli tekstiä loi se automaattisesti tietokantaan taas uuden tehtävän.


 

Linux Palvelimet viikko 4

Harjoitus H4

17-09-2018

Tee nämä tehtävät alusta ja dokumentoi samalla. Tunnilla tehdyn virtuaalipalvelimen voit poistaa ja asentaa uudelleen, jotta voit dokumentoida samalla kun teet.

a) Vuokraa virtuaalipalvelin ja tee sille alkutoimet (ssh, tulimuuri, normaali sudo-käyttäjä, root lukkoon, päivitys).

b) Asenna Apache ja laita käyttäjän kotisivut näkyviin

c) Vuokraa (tai lainaa) domain-nimi osoittamaan palvelimeesi

d) Laita käyttäjän kotihakemistossa olevat sivut näkymään palvelimen etusivulla. (name based virtual hosting, default website)

e) Etsi palvelimen lokeista esimerkkejä murtautumisyrityksistä. Mistä maista ja miltä operaattoreilta murtautujat tulevat (host, geoiplookup, whois)


Suoritan tehtävät omalta pöytäkoneeltani jonka tiedot löytyvät viikolta 1. Hallittava virtuaalipalvelin on hankittu DigitalOcean:in kautta, tehoa löytyy 1 vCpu, 1gb Ram ja 25gb ssd levy. Käyttöjärjestelmänä palvelimella pyörii Ubuntu 18.04.01 LTS.

Tunnilla palvelin otettu jo onnistuneesti käyttöön ja apache saatu toimimaan, joten näiden tehtävien suorittamiseksi palvelin on palautettu defaultiksi.


a) Vuokraa virtuaalipalvelin ja tee sille alkutoimet (ssh, tulimuuri, normaali sudo-käyttäjä, root lukkoon, päivitys).

Palvelin on vuokrattu DigitalOceanin kautta, 1 vCpu, 1gb Ram ja 25gb ssd levy.

DigitalOcean - Linux Palvelimet project - Mozilla Firefox_001

Näkymä DigitalOceanissa sijaitsevan palvelimen etusivulta.

DigitalOcean Droplet Console - Mozilla Firefox_002.png

Sisäänkirjautuessa konsolin kautta virtuaalipalvelimelle näytti terminaali tältä.

Ensimmäiseksi päivitin xubuntun terminaalista komennoilla:

  • Sudo apt-get upgrade
  • Sudo apt-get update

Seuraavaksi loin reiän tulimuuriin ssh:ta varten ja varmistin että ssh demoni on käytössä. Samalla tein tulimuuriin myös reiät http liikennettä varten.

  • sudo apt-get install ssh
  • sudo ufw allow 22/tcp
  • sudo ufw allow 80/tcp
  • sudo ufw enable

Seuraavaksi loin käyttäjän “miika” jolle annoin sudon ja admin oikeudet.

  • sudo adduser miika
  • sudo adduser miika sudo
  • sudo adduser miika admin

Terminal - miika@Ubuntu-LinuxPalvelimet: ~_003

Ssh yhteys todettu toimivaksi oman xubuntuni terminaalin kautta käyttäjällä “miika”, joten seuraavaksi lukitsin root käyttäjän.

  • sudo usermod –lock root

Sekä estin root käyttäjään kirjautumisen ssh:lla.

  • sudoedit /etc/ssh/sshd_config

4.png

Kuvassa näkyvä “yes” täytyi muuttaa “no” jotta ssh yhteys rootille olisi estetty.

Muutoksen jälkeen ssh demoni täytyi käynnistää uudelleen jotta muutokset tulivat voimaan:

  • sudo service ssh restart

5.png

Muutos onnistunut, palvelin ei päästä kirjautumaan ssh:lla root käyttäjälle.


b) Asenna Apache ja laita käyttäjän kotisivut näkyviin

Asensin apache2 komennolla :

  • sudo apt-get -y install apache2

Heti alkuun korvasin apachen defaultsivun komennolla:

  • echo Defaultit VEKS! | sudo tee /var/www/html/index.html

Komennon jälkeen palvelimen kotisivu näytti tältä (ip 104.248.162.226):

Workspaces_006.png

 

Seuraavaksi loin käyttäjälleni public_html hakemiston kotihakemistoon jotta voin ajaa omia sivujani, sekä sallin omien sivujen käytön apachessa. Käytin seuraavia komentoja:

  • mkdir public_html <- hakemiston luonti
  • nano index.html <- public_html hakemistoon index tiedosto
  • sudo a2enmod userdir <- sallii omien sivujen käytön apachessa
  • systemctl restart apache2 <- tämä käynnistää apachen uudestaan jotta muutokset tulevat voimaan.

Muutosten jälkeen käyttäjän sivut löytyivät osoitteesta ” http://104.248.162.226/~miika/ “. Eli oikeuksien luonti ja public hakemisto toimi oikein.

Mozilla Firefox_001.png


 

c) Vuokraa (tai lainaa) domain-nimi osoittamaan palvelimeesi

Ohjeena tehtävän suorittamiseen käytin namecheapin sivuilta löytyvää ohjetta. https://www.namecheap.com/support/knowledgebase/article.aspx/319/2237/how-can-i-set-up-an-a-address-record-for-my-domain

Tunnilla hankkimme jo domainit namecheapin kautta. Omaksi sivukseni valikoitui ” miikazitting.me “, mutta käyttäjätunnuksen kanssa aiheutuneesta ongelmasta johtuen jouduin tehtävät suorittamaan toisella käyttäjällä ja namecheapilta ostamallani domainilla ” harjoitukset.website “. Alkuperäisen käyttäjäni ja domainin kohtalo on vielä namecheapin supportin käsissä ja suoritan kyseiset tehtävät vielä myöhemmin uudestaan oikealle domainilleni.

Namecheapin dashboardissa Domains, sieltä löytyi täppä ” Manage ” domainini kohdalla. Manage valikossa siirryin “Advanced DNS” osioon ja sieltä poistin olemassa olevat recordit painamalla “X “. Loin 2 uutta recordia, @ ja www recordit palvelimeni IP osoite hostiksi.

Päivitysten käyttöönotto kesti namecheapilla 30 min joten kerkesin suorittamaan seuraavan osion tehtävistä ja raportoin tämän osion testit loppuun.


 

d) Laita käyttäjän kotihakemistossa olevat sivut näkymään palvelimen etusivulla. (name based virtual hosting, default website)

 

Jotta saan domainini hakemaan sivut palvelimeni public_html kansiosta täytyi apachen sites available kansioon tehdä muutoksia.

Loin tekstitiedoston ” harjoitukset.website.conf ” johon sisälle laitoin seuraavan tekstin:

<VirtualHost *:80>
ServerName harjoitukset.website
ServerAlias http://www.harjoitukset.website

DocumentRoot /home/miika/public_html/

<Directory /home/miika/public_html>
Require all granted
</Directory>
</VirtualHost>

Tämä tekstitiedosto täytyi vielä laittaa korvaamaan sites-available kansiosta ” 000-default.conf ” tiedosto ja se onnistui seuraavilla komennoilla:

  • sudo a2ensite harjoitukset.website
  • sudo a2dissite 000-default.conf
  • systemctl restart apache2

Ensimmäinen enabloi harjoitukset.website sivuston palvelimen oletussivuksi. A2dissite komento disabloi 000-default.conf tiedostosta löytyvät asetukset oletussivusta. Näiden jälkeen täytyi ajaa restart jotta muutokset tulivat voimaan.

Sivu löytyy ja toimii nyt osoitteella harjoitukset.website

Sivusto näytti muutosten jälkeen tältä:

Mozilla Firefox_002.png

Tästä pystyin päättelemään että domain-nimi on onnistuneesti laitettu osoittamaan palvelinta.


e) Etsi palvelimen lokeista esimerkkejä murtautumisyrityksistä. Mistä maista ja miltä operaattoreilta murtautujat tulevat (host, geoiplookup, whois)

Jotta pystyin selvittelemään murtautumisyrittäjien lokaatiot Ip osoitteen perusteella asensin terminaalissa toimivan Geoiplookupin:

  • sudo apt-get -y install geoip-bin

Seurasin auth.logia joka löytyy /var/log/auth.log komennolla:

  • tail -f auth.log

Terminal - miika@Ubuntu-LinuxPalvelimet: -var-log_003.png

Kuten kuvasta näkyy palvelimellani on ollut useita murtautumisyrityksiä samasta ip-osoitteesta.

Geoiplookup näytti hyvin suppeasti tietoa ip-osoitteen perusteella :

  • GeoIP Country Edition: CN, China

Joten päädyin käyttämään komentoa “whois” joka vaati paketin asennuksen komennolla:

  • sudo apt-get -y install whois

Whois antoi jo huomattavasti enemmän tietoa tunkeutujasta joka näytti tältä;

Terminal - miika@Ubuntu-LinuxPalvelimet: -var-log_005.png

Murtautuja oli Kiinan Pekingistä ja operaattorina toimi CHINANET.


 

Linux Palvelimet viikko 3

Harjoitus H3

11-09-2018

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.Tee jokin seuraavista (yksi riittää, useampi vapaaehtoisena lisätehtävänä):

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)


Tehtävissä käytän pöytäkonettani, josta lisätietoja löytyy Viikko 1 tehtävistä.

Käyttöjärjestelmänä Xubuntu 18.04.01 LTS, joka pyörii livetikulta joka löytyy myös ensimmäisen viikon tehtävistä.


 

a) Asenna Apache, laita käyttäjien kotisivut (http://example.com/~tero) toimimaan. Testaa esimerkkikotisivulla.

Aloitin tehtävän asentamalla Apachen koneelleni.

  • Sudo apt-get -y install apache2

Apache2 Ubuntu Default Page: It works - Mozilla Firefox_001

Apachen asennus on onnistunut. Testattu että apachen esimerkkisivu latautuu selaimella kirjoittamalla osoitekenttään ” localhost ” , sekä localhostin osoitteella ” 127.0.0.1 “.

Seuraavaksi konsoliin seuraavat komennot jotta apachen oletussivu voidaan luoda käyttäjän public_html kansioon johon palaamme kohta. Myös käynnistin apachen uudestaan jotta muutokset tulevat voimaan.

  • ” sudo a2enmod userdir “
  •  ” sudo service apache2 restart “

Seuraavaksi poistin käytöstä apachen testisivun, ja korvasin sen omalla tekstilläni. Teksti näkyi localhost osoitteella, sekä “localhost” nimellä.

Oletussivun index.html jota muokataan löytyi /var/www/html/ ja index.html tiedoston muokkaus vaati sudoedit komentoa jotta sain muutettua oletussivua.

Mozilla Firefox_002

Seuraavaksi loin käyttäjän kotihakemistoon public_html kansion joka tulee toimimaan käyttäjän kotisivujen hakemistona. Siirryin cd komennolla kotihakemistoon ja loin seuraavilla komennoilla seuraavia asioita :

  • ” mkdir public_html ” – Loin itse “kotisivu” kansion kotihakemistoon.
  • ” cd public_html ” – Siirryin luotuun kansioon
  • ” nano index.html ” – Kotisivun index sivun luonti. Kirjoitin tekstitiedostoon ” Hello World “.

Alla kuva osoitteesta localhost/~xubuntu, myös localhostin 127.0.0.1/~xubuntu toimi ja näytti saman sivun.

Mozilla Firefox_003

Sivu toimi myös kotini wifi verkossa puhelimellani (Honor 9, selaimena chrome) ip osoitteella 192.168.1.141, tämä näytti samat sivut kuin yllä olevat kuvat.


 

b) Surffaa oman palvelimesi weppisivuja. Etsi Apachen lokista esimerkki onnistuneesta (200 ok) sivulatauksesta ja epäonnistuneesta (esim 404 not found) sivulatauksesta. Analysoi rivit.Tee jokin seuraavista (yksi riittää, useampi vapaaehtoisena lisätehtävänä):

Onnistunut haku:

Lokitietojen ymmärtämiseen käytin apachen sivujen tietopankkia lokitiedoista http://httpd.apache.org/docs/2.4/logs.html .

Apachen lokitiedot löytyvät /var/log/apache2 kansiosta josta löytyy access.log niminen lokitiedosto. Alla kuvakaappaus  komennolla “ tail access.log ” :

Terminal - xubuntu@xubuntu: -var-log-apache2_004.png

127.0.0.1 – – [11/Sep/2018:14:09:48 +0000] “GET /~xubuntu/ HTTP/1.1” 200 293 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0”

127.0.0.1 – – : Viittaa yhteyttä ottavaan koneeseen, tässä tapauksessa pöytäkoneeni joka toimii myös sivujen localhostina on merkattuna yhteyden ottajaksi. Eli yhteyttä otettu localhostista sivuille. Mikäli yhteyden ottaja käyttäisi jotain proxya yhteyden ottamiseen näkyisi tässä proxyn osoite, eikä itse koneen jolla käyttäjä on.

[11/Sep/2018:14:09:48 +0000] : Päivämäärä, aika ja aikavyöhyke.

“GET /~xubuntu/ HTTP/1.1” : GET on komento jolla asiakas pyytää, /~xubuntu on sijainti mistä pyytää ja HTTP/1.1 on protokolla jota käyttää pyynnön lähettämiseen.

” 200 293 ” : Statusviesti 200 viittaa onnistuneeseen hakuun, eli sivu on auennut asiakkaalle. 293 loppuosa 293 kertoo asiakkaalle lähetetyn objektin kokoa. Jos asiakaalle ei lähetetty mitään on tuo merkittynä “0” tai ” – “.

“Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0” : Yhteyttä ottavan asiakkaan selaimen ja käyttöjärjestelmät tietoja. Selain luovuttaa nämä identifioidakseen itsensä yhteyttä ottaessa.

Epäonnistunut haku :

Yritin siirtyä selaimella osoitteeseen http://localhost/~xubuntu/asd josta seurasi vastaavanlainen sivu : 404 Not Found - Mozilla Firefox_005.png

Tämä sivu johtuu siitä että public_html kansiosto ei löydy asd nimistä tiedostoa mitä hakea. Lokimerkintä access.log:issa näyttää vastaavalta :

127.0.0.1 – – [11/Sep/2018:14:44:32 +0000] “GET /~xubuntu/asd HTTP/1.1” 404 502 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0”

Kaikki näyttää samalta kuin aikaisemmin paitsi statusviesti on ” 404 502 “. 404 kertoo meille että kyseistä tiedostoa ei ole olemassa eikä haku sen vuoksi onnistu.


c) Tee virhe weppipalvelimella ajettavaan koodiin (esim PHP tai Python), etsi se lokista ja analysoi tuo lokirivi

Tällä komennolla sain ladattua php modin apacheen : sudo apt-get install libapache2-mod-php

/etc/apache2/mods-available kansiosta löytyy php7.2.conf tiedosto josta täytyy muuttaa asetuksia siten että käyttäjällä on mahdollisuus ajaa PHP:tä omalla sivullaan. Tiedoston muokkaaminen vaati sudoedit oikeudet.

Jotta uudet asetukset tulevat voimaan täytyy apache käynnistää uudelleen :

  • Service apache2 restart

Lisäsin public_html kansioon valmiin koodin jonka löysin githubista LINKKI.

Koodi vaatii toimiakseen calculator.php tiedoston public_html kansioon, tämän jätetin kuitenkin tarkoituksellisesti luomatta jotta sain lokiin merkinnän virheestä.

[Tue Sep 11 15:29:27.908021 2018] [php7:error] [pid 15767] [client 127.0.0.1:56748] script ‘/home/xubuntu/public_html/calculator.php’ not found or unable to stat, referer: http://localhost/~xubuntu/

[Tue Sep 11 15:29:27.908021 2018] – Kyseisen lokitapahtumat päivämäärä ja tarkka kellonaika

[php7:error] – Php7 ilmoittaa moduulin josta virheilmoitus on tullut, sekä virheilmoituksen vakavuusaste. Tässä tapauksessa vain virhe.

[pid 15767] – Pid on lyhenne Process ID ja numerot prosessin id numero.

[client 127.0.0.1:56748] – Asiakkaan ip osoite

script ‘/home/xubuntu/public_html/calculator.php’ not found or unable to stat, referer: http://localhost/~xubuntu/ – Lopuksi itse virheilmoitus. Tässä tapauksessa ilmoitus että kyseistä tiedostoa ei löydy. Referer: kenttä ilmoittaa miltä sivulta yritettiin päästä kyseiselle sivulle jota ei ollut olemassa.


 

d) Tee virhe johonkin Apachen asetustiedostoon, etsi ja analysoi tuo rivi. Etsimiseen sopivat esimerkiksi Apachen omat lokit, syslog sekä ‘apache2ctl configtest’.

Päätin tehdä muutoksia itse ports.conf tiedostoon joka löytyy /etc/apache2/

Muutokset vaativat sudo oikeudet joten oikea komento tiedoston muokkaukseen on sudoedit ports.conf.

Terminal - xubuntu@xubuntu: -etc-apache2_006.png

Kuvan oton jälkeen muutin kaikki komennot merkinnöiksi “#” risuaidalla ja käynnistin apachen uudelleen.

Uudelleenkäynnistys komennon annettuani sain terminaaliin suoraan virheilmoitusta.

Terminal - xubuntu@xubuntu: -etc-apache2_007

Job for apache2.service failed because the control process exited with error code.
See “systemctl status apache2.service” and “journalctl -xe” for details.

Katsoin virheilmoituksen antaman systemctl status apache2.service ja se näytti vastaavalta:

Terminal - xubuntu@xubuntu: -var-log-apache2_008

Tutkimisen jälkeen virhe johtuu suoraan siitä että apache ei löydä ports.conf tiedostosta mitään asetuksia, sillä kaikki asetukset ovat muutettu kommenteiksi eikä niitä oteta huomioon.

Löysin myös apachen error.log tiedostossa seuraavanlaisen tapahtuman:

[Tue Sep 11 15:58:43.982618 2018] [mpm_prefork:notice] [pid 15766] AH00169: caught SIGTERM, shutting down

Error.log:issa ei ole ilmoitusta virheestä, ainoastaan että apache on sammumassa. Päättelin tämän virheilmoituksen kellonajasta, sillä systemctl status apache2.service virheilmoitukset ovat 30 sekunttia myöhemmin. Tästä voin päätellä että virhe on tapahtunut vasta apachen uudelleen käynnistymisen yhteydessä.

Poistettuani risuaidat ports.conf tiedostosta käynnistin apachen uudestaan, tällöin lokitiedot näyttivät jälleen normaaleilta eikä uusia virheilmoituksia tullut.


 

i) Kuinka monta eri HTTP Status:ta (200, 404, 500…) saat aiheutettua lokeihin? Selitä, miten aiheutit tilanteet ja analysoi yksi rivi kustakin statuksesta.

Status 1:

127.0.0.1 – – [11/Sep/2018:19:07:36 +0000] “GET /~xubuntu/ HTTP/1.1” 200 325 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0”

127.0.0.1 – – : Kuten aikaisemmin mainittu tämä on yhteyttä ottavan IP osoite.

[11/Sep/2018:19:07:36 +0000] : Päivämäärä, aika ja aikavyöhyke.

“GET /~xubuntu/ HTTP/1.1” : GET on komento jolla asiakas pyytää, /~xubuntu on sijainti mistä pyytää ja HTTP/1.1 on protokolla jota käyttää pyynnön lähettämiseen.

” 200 325 ” : Statusviesti 200 viittaa onnistuneeseen hakuun, eli sivu on auennut asiakkaalle. 325 loppuosa kertoo asiakkaalle lähetetyn objektin kokoa.

“Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0” : Yhteyttä ottavan asiakkaan selaimen ja käyttöjärjestelmät tietoja. Selain luovuttaa nämä identifioidakseen itsensä yhteyttä ottaessa.

Status 2:

127.0.0.1 – – [11/Sep/2018:19:14:01 +0000] “GET /~xubu HTTP/1.1” 404 495 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0”

Sama muuten kuten yllä paitsi statusviesti 404 tarkoittaa ettei sivustoa löydy tai ole olemassa. Tässä yritin yhdistää http://127.0.0.1/~xubu, eli kirjoitin käyttäjän xubuntu väärin.

En valitettavasti onnistunut aiheuttamaan HTTP 500 statuksella alkavia virheilmoituksia lokitiedostoon.

 

 

Linux Palvelimet viikko 2

Harjoitus 2

04-09-2018

Tämän viikon tehtävinä ovat:

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

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

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

d) 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


Tehtävissä käytän pöytäkonettani, josta lisätietoja löytyy Viikko 1 tehtävistä.

Käyttöjärjestelmänä Xubuntu 18.04.01 LTS, joka pyörii livetikulta joka löytyy myös viimeviikon tehtävistä.

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

Onnistunut tapahtuma:

Terminal - Password 1

Kohta 1)

Onnistuneesti vaihdettu salasana “passwd” komennolla.

Kohta 2)

Seuraavassa vaiheessa tarkastelin lokitapahtumaa joka salasanan vaihdosta aiheutui.  Lokitiedosto sijaitsi /var/log/auth.log ja tuo auth.log kerää autentikaatioon ja siihen liittyviä lokitapahtumia.

” Sep 4 15:31:41 xubuntu passwd[5146]: pam_unix(passwd:chauthtok): password changed for xubuntu “

Sep 4 15:31:41 – Päiväys

xubuntu passwd[5146] – xubuntu salasana ja hakasulkujen sisällä oleva osa viittaa lokitapahtuman numeroon.

pam_unix(passwd:chauthtok) – pam_unix on autentikaatiomoduuli, jota käytetään autentikaatioon ja autentikaatioon liittyvien tehtävien suorittamiseen.

password changed for xubuntu – Salasana vaihtunut käyttäjälle.


Epäonnistunut tapahtuma:

Tässä yritin vaihtaa edellisessä vaiheessa luodun salasanan pelkäksi välilyönniksi, xubuntu ei tätä hyväksynyt. Alla kuva virheilmoituksesta auth.log:issa.

terminal3

” Sep 4 18:12:14 xubuntu passwd[6840]: pam_unix(passwd:chauthtok): authentication failure; logname= uid=999 euid=0 tty= ruser= rhost= user=xubuntu


Sep 4 18:14:30 xubuntu passwd[6882]: pam_unix(passwd:chauthtok): new password not acceptable ”

Kuten edellisessä ensin tulee päiväys ja xubuntun lokitapahtuman numero, sekä autentikaatiomoduulin tiedot.

logname= uid=999 euid=0

  • uid=999 User identifier, käyttäjän tunniste
  • euid=0 Effective user id, Käyttäjän tunniste, mikäli käyttäjää olisi vaihdettu antaisi tämä myös lukeman

 

tty= ruser= rhost= user=xubuntu

  • Käyttäjän autentikointiin tarkoitettuja parametrejä, tässä tapauksessa vain käyttäjätieto oli tarpeellinen lokitapahtumaan.

” new password not acceptable “

  • Kuten tästä näkee niin järjestelmä ei hyväksy välilyöntiä salasanaksi ja ilmoittaa sen olevan hylätty.

 

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

  • Sudo apt-get -y install shutter vlc gimp

Komento alkaa perinteisellä sudo apt-get, johon lisätään -y joka vastaa automaattisesti puolestani kyllä ja hyväksyy ohjelman latauksen ja asennuksen.

  • Shutter = Kuvankaappausohjelma, tätä esittelin jo viikolla 1. Toimii mielestäni paremmin verrattuna järjestelmän vakioon kaappausohjelmaan.
  • VLC = Musiikintoistoon, kuuntelen lähes aina musiikkia kun työskentelen koneella. VLC on tähän varsin toimiva ja helppokäyttöinen ohjelma, suoratoisto esim youtubesta toimii urlilla helposti.
  • GIMP = Kuvanmuokkaus, tässäkin blogissa olen kuviani leikannut ja merkinnyt GIMP:in avulla. Erittäin tarpeellinen blogia tehdessä.

 


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

IRSSI:

IRSSI.png

Irssi on terminaalissa toimiva chat clientti. Asennus onnistui komennolla ” sudo apt-get install irssi “

Irssin sai käynnistettyä terminaalista komennolla “irssi” jonka jälkeen pääsin muunmuassa liittymään erilaisiin keskusteluhuoneisiin.

Liityttyäni huoneeseen sain chatattua ” Hello World “, jonka jälkeen totesin että ohjelma toimi odotetusti.

Speedtest:

speedtest.png

Speedtest on terminaalissa toimiva internetyhden nopeutta mittaava ohjelma

” Sudo apt-get install speedtest-cli ” komennolla sain speedtestin asennettua.

Komennolla ” speedtest ” testasin nopeuteni ja tulos 120 Mbit/s on juuri oikein, myös upload nopeus näyttää normaalilta.

Ohjelma toimi odotusten mukaisesti ja näytti todellisen ja tarkan nopeuden.

Sensors:

sensors.png

Sensors mittaa prosessorin ytimien ja näytönohjaimen ytimen lämpötiloja.

” suo apt-get install lm-sensors ” komento näyttikin että ohjelma löytyy jo valmiina terminaalista.

Ajoin lämpötilat ” sensors ” komennolla, joka näytti yllä olevat lämpötilat. Nämä ovat hyvin niissä viitearvoissa joita yleisesti näen prosessoriltani ja näytönohjaimelta kevyessä käytössä. Testin ajohetkellä auki olivat: Mozilla Firefox, VLC (josta soi musiikki), Shutter, GIMP, sekä Terminal.

Prosessorina toimii Intel 8600k @ 3.60 GHz, prosessorijäähdyttimenä CoolerMaster Evo212.

Näytönohjain on Gigabyte Windforce GTX 980

 


 

d) Itsenäistä komentojen opiskelua 🙂

Linux Palvelimet viikko 1

Harjoitus 1

23-08-2018

A) Tee oma Linux-livetikku. Kokeile sitä jossain muussa kuin koulun koneessa

Tehtävässä luotu onnistuneesti Linux-livetikku tunnilla saadun ohjeistuksen mukaisesti.

Tikkuna toimi Kingstonin DataTraveler 16gb usb 3.0, johon Xubuntu version 18.04.01 LTS iso-tiedosto asennettiin UNetbootin avulla toimivaksi.

Livetikun toimivuutta testattu omassa pöytäkoneessani, jossa tikku toimi oikein ensimmäisellä yrittämällä.

 

b) Listaa testaamasi koneen rauta (‘sudo lshw -short -sanitize’)

Kuvasta alla selviää testikoneen rauta:

rauta

 

c) Asenna kolme itsellesi uutta ohjelmaa. Kokeile kutakin ohjelmaa sen pääasiallisessa käyttötarkoituksessa

Shutter : Latasin shutterin korvatakseni xubuntusta jo löytyvän screenshot toiminnon. Shutter käyttää GNU General Public License v3

shutter

VLC : VLC median katselua/kuuntelua varten. Käyttää GNU General Public Lisence v2.

vlc

 

Blender : 3d-mallinnus. GNU General Public License v2

Blender

 

d) Mitä lisenssiä kukin näistä ohjelmista käyttää? Selitä lyhyesti, mitä oikeuksia ja velvolisuuksia tuosta lisenssistä seuraa

Tehtävässä c) ilmoitettu kunkin ohjelman käyttämät lisenssit.

GNU General Public Lisence on vapaiden ohjelmistojen julkaisemiseen tarkoitettu lisenssi, joka antaa kenelle vain oikeuden käyttää, kopioida, muuttaa ja jakaa ohjelmia ja niiden lähdekoodia. Lisenssi mahdollistaa omien versioiden julkaisun ohjelmasta, sekä mahdollistaa sen myynnin eteenpäin palveluna.

Lisenssin versiossa 2 lisätty muutos joka kieltää jakelun, mikäli se on mahdollista vain käyttäjien vapauksia rajoittamalla.

Versio 3:n muutokset liittyvät eniten käyttöoikeuksien porsaanreikien korjaukseen.

 

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

Käyttämäni ohjelmat Windows ympäristössä ja niiden vastaavat linux ohjelmat:

Verkkoselain: Google Chrome – Mozilla Firefox

Tekstinkäsittely: Ms Word – LibreOffice Writer

Tiedostojako: uTorrent – Transmission