h7

Kurssi lisätty lähteisiin. 02.11.2018

 

Tehtävä tehty käyttöjärjestelmällä xubuntu 18.04

Valitsin tehtävän:

http://terokarvinen.com/2018/arvioitava-laboratorioharjoitus-%e2%80%93-linux-palvelimet-ict4tn021-7-tiistai-%e2%80%93-alkukevat-2018-%e2%80%93-5-op

Alkutoimet:

setxkbmap fi

sudo apt-get update

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

Tulimuuri

Aloitin suojaamalla koneen tulimuurilla, ensin tietenkin avasin sshlle portin 22.

ufw1.png

sudo ufw allow 22/tcp jonka jälkeen sudo ufw enable

Tarkistin vielä onko portti 22 auki.

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
22/tcp (v6) ALLOW IN Anywhere (v6)

Käyttäjien teko.

Latasin pwgen työkalun jolla on helppo generoida vaikeita salasanoja.

sudo apt-get install -y pwgen

Komennolla pwgen -y -n -c 10 generoidaan salasanoja joissa on 10 merkkiä ja ne sisältävät vähintään yhden erikoismerkin, numeron ja yhden ison kirjaimen. Esim. ooH8nek}ee

Tein käyttäjät komennolla sudo adduser käytin käyttäjien tunnuksina etunimiä ja salasanoina generoituja salasanoja.

Kirjoitin salasanat ylös tiedostoon salasanat.txt ja vaihdoin chmod komennolla tiedoston oikeuksia jotta kukaan muu kuin xubuntu käyttäjä ei näe niitä.

xubuntu@xubuntu:~$ chmod og-rw salasanat.txt
xubuntu@xubuntu:~$ ls -l salasanat.txt
-rw——- 1 xubuntu xubuntu 173 Oct 9 14:42 salasanat.txt

Tietenkin laitoin myös xubuntu käyttäjälle generoidun salasanan.

Sitten kokeilin toimiiko käyttäjät ssh joe@localhost

No eipä tietenkään toimi koska en ollut vielä asentanut opensshta joten komennolla sudo apt-get install -y openssh-client openssh-server asensin sen.

xubuntu@xubuntu:~$ ssh joe@localhost
The authenticity of host ‘localhost (127.0.0.1)’ can’t be established.
ECDSA key fingerprint is SHA256:bxSrYUMH/+d/PCAF1ulEJh/Grj+99ZxpMH4Pbcolzx0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘localhost’ (ECDSA) to the list of known hosts.
joe@localhost’s password:
Permission denied, please try again.
joe@localhost’s password:
Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 4.15.0-29-generic x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

joe@xubuntu:~$

Sitten se toimi!

Sitten tein jokaiselle käyttäjälle public_html kansiot ja niihin index.html tiedostot tämä olisi varmaan kannattanut tehdä lisäämälla public_html /etc/skel lin sisään ja sinne vielä index.html jotta kaikille uusille käyttäjille tulisi valmiiksi public_html kansio ja sinne sisälle index.html .

Esimerkkinä einarin etusivu.

einari@xubuntu:~$ mkdir public_html
einari@xubuntu:~$ cd public_html/
einari@xubuntu:~/public_html$ nano index.html
einari@xubuntu:~/public_html$ ls
index.html
einari@xubuntu:~/public_html$ cat index.html
Foo Loo Zoo

Einarin testi.

LAMP asennus.

Apache2

sudo apt-get install -y apache2 curl

Kokeilin toimiko apache2

4

Sitten poistin oletussivun.

xubuntu@xubuntu:~$ echo Default | sudo tee /var/www/html/index.html
Default
xubuntu@xubuntu:~$ curl localhost
Default

Sitten laitoin käyttäjien kotisivut toimimaan.

xubuntu@xubuntu:~$ sudo a2enmod userdir
Enabling module userdir.
To activate the new configuration, you need to run:
systemctl restart apache2
xubuntu@xubuntu:~$ sudo systemctl restart apache2
xubuntu@xubuntu:~$ curl localhost/~einari/
Foo Loo Zoo

Einarin testi.

MariaDB

Asensin mariadbn  komennolla

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

Kirjauduin sen jälkeen mariadb root käyttäjällä sisään ja generoin sille pwgenillä 14 merkkisen salasanan.

mariadb --user=root --password

pwgen -y -n -c 14

Sitten tein uden databasen nimeltä einarislist.

CREATE DATABASE einarislist CHARACTER SET utf8;

Sitten tein tietokannalle käyttäjän ja generoin sille pwgenillä 14 merkkisen salasanan.

pwgen -y -n -c 14

GRANT ALL ON einarislist.* TO einarislist@localhost IDENTIFIED BY 'salasana';

Sitten kokeilin toimiiko käyttäjä joten lähdin root käyttäjältä exit komennolla.

Uudelle käyttäjälle kirjauduin komennolla.

mariadb --user=einarislist --password

Sitten käyttämällä USE einarislist komentoa vaihdoin käytössä olevan tietokannan.

Sinne tein uuden taulun nimeltä mastersorders komennolla.

CREATE TABLE mastersorders(id INT AUTO_INCREMENT PRIMARY KEY, todo VARCHAR(128));

Sitten lisäilin tauluun uusia tietueita. Komennoilla:

INSERT INTO mastersorders(todo) VALUES (‘Clean the windows.’);

INSERT INTO mastersorders(todo) VALUES (‘Take out the trash.’);

INSERT INTO mastersorders(todo) VALUES (‘Walk the dogs.’);

Kokeilin mariadbn toimintaa poistamalla yhden tietueista idn perusteella.

DELETE FROM mastersorders WHERE id=3;

MariaDB [einarislist]> SELECT * FROM mastersorders;
+—-+———————+
| id | todo |
+—-+———————+
| 1 | Clean the windows. |
| 2 | Take out the trash. |
+—-+———————+
2 rows in set (0.00 sec)

Sitten menin sshlla einari käyttäjälle ja tein automaattiseen kirjautumiseennanoa käyttäen .my.cnf tiedoston johon kirjoitin

[client]
user=einarislist
password=salasana
database=einarislist

Muutin tiedoston käyttöoikeuksia chmod og-rwx .my.cnf komennolla.

Kun se oli tehty niin komennolla mariadb pääsi suoraan einarislist käyttäjälle einarin tunnuksilla.

PHP

Ensin tietenkin php pitää asentaa komennolla

sudo apt-get install -y libapache2-mod-php

Jotta phpn saa toimimaan niin pitää kommentoida ifmoduuli pois.

sudoedit /etc/apache2/mods-available/php7.2.conf

php1.png

Sitten apache2 pitää käynnistää uudelleen.

sudo systemctl restart apache2

Kun se oli tehty menin einarin kotikansioon ja muutin index.html tiedoston index.php tiedostoksi ja kokeilin toimiiko php.

ssh einari@localhost

cd ; cd public_html ; mv index.html index.php

nano index.html komennolla muokkasin tiedostoa ja kirjoitin sinne

php testi

php ei toiminut joten menin katsomaan lokitiedoista mikä on vialla poistuin tietenkin einari käyttäjältä ensin.

php2.png

cd /var/log/apache2/ ; tail error.log

Lokeissa ei ollut mitään virheitä joten menin einari käyttäjälle takaisin katsomaan public_html kansiota huomasin että olen idiootti ja tein uuden index.html tiedoston ja kirjoitin sinne php koodia.

einari@xubuntu:~$ cd public_html/
einari@xubuntu:~/public_html$ ls
index.html index.php

Poistin ylimääräisen tiedoston ja kirjoitin testin oikeaan tiedostoon index.php

php3.png

Php toimii nyt riittävän hyvin.

Tietueiden lukeminen tietokannasta phplla

Käytin tähän valmista koodia joka löytyy osoitteesta http://terokarvinen.com/2016/read-mysql-database-with-php-php-pdo

Koodi muodostaa yhteyden mariadbn kanssa ja lukee taulusta tietoja ja tulostaa ne.

php2

Ennenkuin koodi toimii pitää tietenkin asentaa php-mysql paketti

sudo apt-get install -y php-mysql

Sitten kopioin koodin einarin index.php tiedoston sisään ja muutin tarvittavia kohtia siitä jotta se toimisi. Sen jälkeen vielä ajoin sudo systemctl restart apache2 komennnon.

phpmariadb1.png

Koodi toimi oikein mainiosti!

Virtuaali isännointi invis.example.com

Ensiksi lisäsin uuden virtuaali isännän

sudoedit /etc/apache2/sites-available/invis.example.com.conf

invishosting.png

Sitten ajoin komennon sudo a2ensite invis.example.com joka ottaa sen käyttöön ja tietenkin sen jälkeen apache2 pitää käynnistää uudelleen sudo systemctl restart apache2 komennolla.

Sitten ajoin sudoedit /etc/hosts ja sinne kirjoitin
127.0.0.1 invis.example.com
127.0.0.1 http://www.invis.example.com

invisvirtualhosting.png

Virtuaali isännöinti toimi sen jälkeen.

Kello komento

Ensiksi tein tiedoston mitakello nanolla johon kirjoitin:

!/bin/bash
echo Kello on:
date

Muutin mitakelloon oikeudet chmod o+rx mitakello komennolla.

xubuntu@xubuntu:/usr/local/bin$ ls -l mitakello
-rwxr-xr-x 1 xubuntu xubuntu 33 Oct 9 17:46 mitakello

Siirsin mitakello tiedoston sudo mv mitakello /usr/local/bin/ komennolla.

Kokeilin komentoa einari käyttäjällä.

einari@xubuntu:~$ mitakello
Kello on:
Tue Oct 9 18:04:19 UTC 2018

Metapaketti

Katsoin mallia sivulta http://terokarvinen.com/2011/create-deb-metapackage-in-5-minutes

Aloitin asentamalla equivs:in

sudo apt-get install -y equivs

Tein niko-labprograms.cfg nimisen luurangon.

equivs-control nikos-labprograms.cfg

Muokkasin sitä nanolla.

nano nikos-labprograms.cfg

xubuntu@xubuntu:~$ cat nikos-labprograms.cfg
### Commented entries have reasonable defaults.
### Uncomment to edit them.
# Source:
Section: misc
Priority: optional
# Homepage:
Standards-Version: 3.9.2

Package: nikos-labprograms
Version: 0.1
# Maintainer: Your Name <yourname@example.com>
# Pre-Depends:
Depends: git, httpie, curl, mitproxy
# Recommends:
# Suggests:
# Provides:
# Replaces:
# Architecture: all
# Multi-Arch:
# Copyright:
# Changelog:
# Readme:
# Extra-Files:
# Links: # Files: #
Description: A few useful programs

Rakensin tiedostosta meta paketin.

xubuntu@xubuntu:~$ equivs-build nikos-labprograms.cfg
dh_testdir
dh_testroot
dh_prep
dh_testdir
dh_testroot
dh_install
dh_installdocs
dh_installchangelogs
dh_compress
dh_fixperms
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dpkg-deb: building package ‘nikos-labprograms’ in ‘../nikos-labprograms_0.1_all.deb’.

The package has been created.
Attention, the package has been created in the current directory,
not in “..” as indicated by the message above!

gdebi komento ei toiminut.

xubuntu@xubuntu:~$ sudo gdebi -n nikos-labprograms_0.1_all.deb
sudo: gdebi: command not found

Etsin apt-cachesta gdebiä ja sieltähän se löytyi.

xubuntu@xubuntu:~$ sudo apt-cache search gdebi
gdebi – simple tool to view and install deb files – GNOME GUI

Asensin gdebin.

sudo apt-get install -y gdebi

Yritin uudelleen, gdebi komento toimi mutta pakettia ei pystynyt asentamaan.

ubuntu@xubuntu:~$ sudo gdebi -n nikos-labprograms_0.1_all.deb
Reading package lists… Done
Building dependency tree
Reading state information… Done
Reading state information… Done
This package is uninstallable
Dependency is not satisfiable: mitproxy

En tiedä miten saan tämän toimimaan.

Virtuaali isännöinti unikarhu.example.com

Tein xubuntu käyttäjälle publicsites kansion ja sinne unikarhu.example.com kansion ja sinne index.html johon laitoin html5 pohjan ja jotain tekstiä.

eijumatatawordpressia.png

Tein uuden virtuaali isännän

sudoedit /etc/apache2/sites-available/unikarhu.example.com.conf

unikarhuhosting.png

Sitten ajoin komennon sudo a2ensite unikarhu.example.com joka ottaa sen käyttöön ja tietenkin sen jälkeen apache2 pitää käynnistää uudelleen sudo systemctl restart apache2 komennolla.

Sitten ajoin sudoedit /etc/hosts ja sinne kirjoitin

127.0.0.1 unikarhu.example.com
127.0.0.1 http://www.unikarhu.example.com

unikarhuvirtualhosting.png

Virtuaali isännöinti toimi!

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

Palautin linkin blogin etusivuun moodlessa. https://nikohakala646432229.wordpress.com/

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

Käytän linuxia jo melkein päivittäin (päivittäin jos android puhelimen käyttö lasketaan mukaan). Käytän windowsia suurimmaksi osaksi vain videopelejen pelaamiseen.

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

Viikonloppuni ovat jo varattu joko kotiläksyjen tekoon tai muuhun puuhasteluun johon sisältyy linuxin harjoittelu.

Lähteet:

http://terokarvinen.com/2011/create-deb-metapackage-in-5-minutes

https://nikohakala646432229.wordpress.com/

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

http://terokarvinen.com/2018/arvioitava-laboratorioharjoitus-%e2%80%93-linux-palvelimet-ict4tn021-7-tiistai-%e2%80%93-alkukevat-2018-%e2%80%93-5-op

http://terokarvinen.com/2018/name-based-virtual-hosts-on-apache-multiple-websites-to-single-ip-address

http://terokarvinen.com/2018/aikataulu-%E2%80%93-linux-palvelimet-ict4tn021-3003-to-8-14-alkusyksy-2018p1-%E2%80%93-5-op Lähde kurssiin.

Advertisements