Osallistun Haaga-Helia ammattikorkeakoulussa Linux-palvelimet kurssille, jonka opettajana toimii Tero Karvinen. Kaikki tehtävät ovat hänen verkkosivuiltaan http://terokarvinen.com/.
Suoritan tehtävän pöytätietokoneellani, jossa pyörii Debian 9.8. Asetin toisaalta Virtual Boxiin Xubuntu 18.04 LTS -jakelun, koska tehtävissä tarvitsee muokata käyttäjiä, enkä halua sotkea oikeaa työasemaani. Lopulta Xubuntu levisi, niin oli otettava käyttöön Kali.
Tehtävänanto tähän viimeiseen harjoitukseen ennen luokassa suoritettavaa labraharjoitusta kuuluu seuraavasti:
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.
A.) Vanha labraharjoitus
Tarkoituksena oli tehdä aikaisemmilla kursseilla loppuharjoituksena toimiva labraharjoitus. Päädyin tähän harjoitukseen, koska se iski ensimmäisenä silmään. Sen tehtävänanto kuului seuraavasti:
NinjaTietokanta
Haluamme tehdä palvelun, jossa listataan ninjaliikkeitä makeuden, tyylisuunnan ja muiden keskeisten ominaisuuksien suhteen.
Kehittäjämme haluavat käyttää LAMP (Linux Apache MySQL PHP) -pinoa. Asenna tarvittavat ohjelmistot ja tee tietokantaa käyttävä esimerkkiohjelma.
Etätyötä
Haluamme työskennellä etäältä (kuin ninjat piiloistaan).
Käyttäjät
Työntekijämme ovat toimitusjohtaja Nakke Nertola, Håkan Värs, Einari Mikkonen, Einari Öljysaari ja Eija Vähäkäähkä. Tee kaikille käyttäjille esimerkkikotisivut.
Suuri muuri
Suojaa kone tulimuurilla.
WhoWhere
Tee kaikkien käyttäjien käyttöön komento, joka tulostaa Ninjamaisen tervehdyksen “Hello Ninja”, koneen IP-osoitteen ja komentoa ajavan käyttäjän nimen.
Etsitkö haasteita? Tähtäätkö huipputulokseen? Juuri sitä varten meillä on tarjolla:
SneakyGarden.Example.com
Virallinen ninjaliikesivumme tulee Eijan ylläpidettäväksi. Tee Eijalle valmis esimerkkisivu, jossa tietokannassa on seuraavat esimerkkiliikkeet vaikeustasoineen
- Hyppykiertopotku 27
- Kuperkeikka 3
- Karjaisu 1
Sivun tulee olla Eijan muokattavissa ja ninjaliikkeiden näkyä osoitteessa http://SneakyGarden.Example.com. Nimipalvelun toimintaa voit simuloida hosts-tiedostolla.
Uusi ylläpitäjä
Uusi ylläpitäjä on Jussi Laitavalo. Tee hänelle käyttäjätunnus jussi ja anna hänen käyttöönsä täydet pääkäyttäjän oikeudet.
Lopuksi
Moodleen palautetaan neljä tiedostoa: Screenshot*.png, lab.txt, check.log ja lab.tar.gz.
1) Laita ruudulle testit jokaisesta asiasta, jota olet tehnyt. Ota täsmälleen yksi ruutukaappaus ja tallenna se oletusnimellä Screenshot*.png (PrintScrn, enter, enter. Tähti tarkoittaa nollaa tai useampaa mitä vain merkkiä. älä laita literaalia tähteä tiedostonnimeen).
2) Kirjoita seuraavalle ylläpitäjälle lab.txt, jossa on
- Nimesi ja opiskelijanumerosi
- Linkki sivuun, josta löytyvät kaikki kotitehtäväraporttisi
- Lista toimivista, testatuista palveluista osoitteineen (URL tms)
- Lista palveluista, jotka eivät vielä toimi
- Kaikkien käyttäjien salasanat ja käyttäjätunnukset
3) Lataa labtest-ninja.py kotihakemistoosi ja aja se saadaksesi check.log:n
$ cd $ wget wget http://terokarvinen.com/wp-content/uploads//2017/10/labtest-ninja.py_.jpg $ sudo apt-get -y install curl $ sudo python3 labtest-ninja.py_.jpg > check.log $ sudo python3 labtest-ninja.py_.jpg -d >> check.log 2>&1
4) Tee tervapallo lab*.tar.gz tärkeimmistä tiedostoista
$ sudo tar --exclude .mozilla --exclude .cache --exclude lab-*.tar.gz --exclude /home/.ecryptfs -zcf lab-$(whoami)-$(date +%Y-%m-%d).tar.gz /etc/ /var/log/ /home/ $ sudo chown $(whoami) lab-*-*.tar.gz
Ensimmäisenä siis asennamme LAMP-stackin, eli Linuxin (on jo), Apachen, PHP:n ja MariaDB:n.
$ sudo apt update $ sudo apt install apache2 mariadb-server mariadb-client php7.2
Kun halutut ohjelmat ovat asentuneet, niin voimme käydä vilkaisemassa localhostia, onko Apache toiminnassa:

Kuten näemme, Apache toimii ja on luonut localhostiin Apachen oletussivun. Seuraavaksi katsomme, miten PHP toimii, mutta sitä ennen otamme tuon oletussivun pois tuolta.
$ cd /var/www/html $ ls index.html $ sudo echo moi > index.html.
Sitten katsotaan toimiko tuo:

Hyvin näyttää toimivan, joten voimme nyt asettaa hieman PHP:ta tuohon tiedostoon.
$ sudoedit index.html
Laitetaan sinne vaikka rivi <?php print(4+4) ?>. Sitten vielä $ sudo mv index.html index.php. Tämän jälkeen katsomme localhostin taas:

En odottanut tätä. Se toimii. Jos käyttäjille haluaa vielä PHP:n käyttöön, niin pitäisi editoida tiedostoa. Voimme sitäkin yrittää nyt.
$ cd $ mkdir public_html $ echo moivaan > index.php
Tämän jälkeen käymme aktivoimassa käyttäjille omat sivut.
$ cd /etc/apache2 $ grep -ir user $ a2enmod userdir $ sudo systemctl restart apache2
Tämän jälkeen käyttäjien omat sivut tulisi olla toiminnassa:

Se toimi! Nyt voimme viellä aktivoida PHP:n käyttäjien omille sivuille. Olemme siis edelleen /etc/apache2 hakemistossa.
$ grep -ir php $ cd /mods-available $ sudoedit php7.2.conf
Sieltä teemme juuri kuten kommenteissa sanotaan, eli kommentoimme pois viimeiset rivit. Tämän jälkeen testaamme laittamalla $ echo “<?php print(16*16) ?>” > /home/santeri/public_html/index.php. Sitten vielä $ sudo systemctl restart apache2. Sitten voimme käydä katsomassa sivujen toimivuuden:

Sekin toimi! Nyt meillä toimii kokonaisuus jo tähän vaiheeseen. Vielä tulee lisätä MariaDB tähän kokonaisuuteen. Tähän käytin apuna Tero Karvisen ohjetta.
$ sudo mariadb MariaDB [(none)]> create database ninja; MariaDB [(none)]> use ninja; MariaDB [(ninja)]> create user ninjamaster@localhost identified by 'pkZ7H/#%vBN'; MariaDB [(ninja)]> grant all on ninja.* to ninjamaster@localhost; MariaDB [(ninja)]> create table moves (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), category VARCHAR(255), features VARCHAR(255), rating INT); MariaDB [(ninja)]> insert into moves values(1, "Hyppykiertopotku", "Potkut", "Vaikea mutta tehokas", 27); MariaDB [(ninja)]> insert into moves values(2, "Kuperkeikka", "Pyörähdykset", "Helppo aloittelijallekin", 3); MariaDB [(ninja)]> insert into moves values(3, "Karjaisu", "Sekalaiset", "Kaikki osaavat halutessaan", 1); MariaDB [(ninja)]> select * from moves;

Otin tähän arvoiksi valmiiksi myöhemmässä vaiheessa haluttuja arvoja.
Tämän jälkeen yritin ottaa tietokantayhteyttä, mutta jotenkin se ei vain onnistu ikinä minulla. Usean tunnin jälkeen päädyin tällaiseen tulokseen, joka perustuu Tero Karvisen esimerkkiin tällä sivulla.
<?php
$user='ninjamaster';
$password='pkZ7H/#%vBN';
$database='ninja';
$dsn="mysql:host=localhost;charset=UTF8;dbname=$database";
$pdo=new PDO($dsn, $user, $password);
$pdoStatement=$pdo->prepare('SELECT * FROM moves;');
$pdoStatement->execute();
$hits=$pdoStatement->fetchAll();
foreach($hits as $row) {
echo "<p>".$row['id']." ".$row['name']." ".$row['features']." ".$row['category']." ".$row['rating']"</p>\n";
}
?>
Mutta yksinkertaisesti en vain saanut toimimaan. Katsoin vielä, että salasana, kysely, tunnus ja kanta toimivat ilman PHP:ta ja kyllä toimi, mutta sivulla näyttäminen ei vain toiminut. Virtuaalikoneessa pyörivä Xubuntuni alkoi antaa I/O erroria ja sanoo, että tila meinaa loppua, enkä voi asentaa, niin voi olla, että tämä tehtävä jää tähän, kun en saa kirjoitettua enää tiedostoihinkaan.
Loput on varmaan tehtävä virtuaalisella Kalilla, koska Xubuntu päätti levitä, enkä Debianiini haluaisi lisäillä turhia käyttäjiä.
Seuraavaksi halutaan “työskennellä etäältä”, eli SSH kuulostaa järkevimmältä vaihtoehdolta. $ sudo apt update ja sitten $ sudo apt install ssh. Noin sisään pääsee, kun tietää koneen IP-osoitteen/nimipalvelimen ja käyttäjätunnuksen jolle haluaa kirjautua.
Seuraavaksi halutaan uusia käyttäjiä. Henkilöt ovat Nakke Nertola, Håkan Värs, Einari Mikkonen, Einari Öljysaari ja Eija Vähäkäähkä. Todennäköisesti aion asettaa käyttjätunnuksiksi etunimen ensimmäisen kirjaimen ja sukunimestä niin paljon, kunnes on kahdeksan kirjainta täynnä.
Lisäsin käyttäjät komennolla $ sudo adduser<käyttäjänimi>. Tässä on lopputilanne /home-hakemistosta käyttäjistä. Laitoin koko nimeksi heidän oikean nimensä, mutta käyttäjät näyttivät tällaisilta:

Sitten olisi tarkoitus vielä asettaa kotisivut käyttäjille. Piti Kalilla vielä asettaa kotisivut normaalikäyttäjille komennolla $ a2enmod userdir. Sitten vielä $ systemctl restart apache2. Nyt testataan luoda yhdelle käyttäjälle kotisivut. Sitten valitaan joku noista käyttäjistä ja luodaan sinne public_html-kansio ja sinne jonkinlainen index.html-sivu.
$ cd emikkone $ mkdir public_html $ cd public_html $ echo Einari Mikkonen > index.html
Sitten sivut toimivat:

Tämä pitäisi käytännössä tehdä jokaiselle käyttäjälle, mutta aika meinaa olla nyt hieman lopussa, jos haluaa vielä tämän päivän aikana nukkumaan, niin en nyt ehdi tehdä muille.
Seuraavaksi pitäisi asettaa tulimuuri päälle. Kalissa ei ole UFW:tä, joten jouduin asentamaan sen $ sudo apt install ufw. Sitten asetetaan vain $ ufw enable. Noin, tulimuuri on päällä.
Tämän jälkeen olisi tarkoitus tehdä skripti, jota voi ajaa kaikki. Komennolla tulisi tulostua “Hello Ninja”, koneen IP-osoitteen ja komentoa ajavan käyttäjän nimen. $ nano hello. Siihen vain Shebang #!/bin/bash ja sitten komennot jokaiselle riville. Lopulta tulos näyttää tältä:
#!/bin/bash echo Hello Ninja hostname -I whoami
Sitten tiedostolle ajo-oikeudet $ sudo chmod ugo+x hello. Lopuksi siirretään hakemistoon, jotta se voidaan ajaa ihan komentona. $ sudo mv hello /usr/local/bin/.
# hello Hello Ninja 10.0.2.15 root
Noin, sehän toimi!
Vielä pitäisi asettaa Eijalle tietokannasta tietyt tiedot sivulle, asettaa sivulle kustomoitu osoite osoittamaan hänen sivuaan ja sen pitää olla hänen kotihakemistossaan. Tietokantaa en tee, koska oli valmiiksi sen kanssa ongelmia, niin turhaa lähteä sitä enää säätämään.
Ensiksi teimme jonkin hakemiston Eijan kotihakemistoon. Tässä tilanteessa vedin roottina, ettei koko ajan tarvitsisi sudotella.
$ sudo su # cd /home/evahakaa/ # mkdir sneakygarden # cd sneakygarden # echo toimispa tietokanta > index.html # cd /etc # nano hosts# cd /etc/apache2/sites-available/ # nano example.conf
# a2ensite example.conf # systemctl restart apache2
Tämän jälkeen lopputulos oli tämä:

Viimeisenä tehtävänä olisi vielä uuden ylläpitäjäkäyttäjän lisäys. Hänen nimensä on Jussi Laitavalo. Se on niin nopeaa, että ei tarvitse kuin tehdä nämä komennot:
$ sudo adduser jlaitava $ sudo adduser jlaitava sudo $ sudo adduser jlaitava adm
Tämän jälkeen hänellä on oikeudet tehdä mitä lystääkään.
Lopetin tehtävän noin viiden tunnin jälkeen.
# cd /etc/apache2/sites-available/
# nano example.conf
# a2ensite example.conf
# systemctl restart apache2