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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s