Labraharjoitus

Valmistautumista labraharjoitukseen vanhan tehtävän avulla.

Tehtävä.

Asenna Linux

Asennetaan Linux USB-tikulta, siten että koneelle ladataan ensin Linux USB-tikulta. Tällöin voi käyttää nettiä asennuksen ajan tiedon hakuun.

Asennuksen aikana kirjoita ylös luodut salasanat.

Asennuksen jälkeen umounttaa USB-tikku ennen poistoa USB-asemasta.

Huomioita asennuksen aikana ja jälkeen

Oma WordPress sivustolle syötetyt tunnukset ja salasanat menevät http-yhteyden yli. Jatkossa pitää opetalla https-yhteyden tekeminen.

Päivitys

Muista päivittää Ubuntu

$ sudo apt-get update

$ sudp apt-get upgrade

Kuvakaappauksia varten shutter

$ sudo apt-get install shutter

Suorituskyvyn seuranta päälle

$ sudo apt-get -y install sysstat
$ sudoedit /etc/default/sysstat
$ cat /etc/default/sysstat
ENABLED="true"
$ sar

Palomuuri päälle

$ sudo ufw allow 22/tcp

$ sudo ufw allow 80/tcp

$ sudo ufw enable

Luodaan käyttäjät tehtävän mukaan

## Työntekijät

Työntekijöitämme ovat Joe Doe, Jorma Mähkylä, Pekka Hurme, Ronaldo Smith,
Håkan Petersson ja Einari Mikkonen.

Laita einarin käyttäjätunnukseksi "einari". 

Tee kullekin käyttäjälle esimerkkikotisivu.

Skeleton käyttäjien luontiin

Kokeillaan Skeletonin käyttöä, jotta saadaan käyttäjien asetusten luonti automatisoitua. Uusien käyttäjien (‘sudo adduser user’) kotihakemistoon kopioidaan automaattisesti tiedostot /etc/skel/ alta.

$ cd /etc/skel

$ sudoedit mkdir public_html

$ cd public_html

$sudoedit index.html

<!DocTYPE html>
<HTML lang=”en”>
<HEAD>
<meta charset=”utf-8″ />
<TITLE>kotisivu</TITLE>
</HEAD>
<BODY>
Hello World!
</BODY>
</HTML>

Asennetaan SSH ja salasanojen luontia helpottava pwgen

$ sudo apt-get install ssh

$ sudo apt-get install pwgen

Luodaan tiedosto harjoituksen salasanoja varten

$ cd

$pwd

$ touch sala.txt

$ chmod og-wrx sala.txt

$ ls -l

Testataan SSH

$ ssh juha@localhost

$ ssh juha@ip-osoite

Testataan käyttäjän luonti

$ sudo adduser einari

$ ssh einari@localhost

Tiedostot ovat einarin omistuksesssa.

Asennetaan LAMP

## LAMP

Asenna LAMP - Linux, Apache, MySQL, PHP. 

Tee einarin kotihakemistoon esimerkkisovellus, joka näyttää tietueita
tietokannasta.

Apache asennus

$ sudo apt-get install apache2

Testaus

$ echo Moi | sudo tee /var/www/html/index.html

Käyttäjän kotisivut näkyviin kotihakemistosta

$ sudo a2enmod userdir

$ sudo systemctl restart apache2

MariaDB asennus

$ sudo apt-get update
$ sudo apt-get -y install mariadb-client mariadb-server
$ sudo mysql_secure_installation

Set root password? [Y/n]
New password:
Re-enter new password:
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y

Kirjaudutaan sisään MariaDB rootina

$ sudo mariadb -u root

Luodaan tietokanta ja taulu tietokantaan

MariaDB [(none)]> CREATE DATABASE animals;

MariaDB [(none)]> USE animals;

MariaDB [animals]> CREATE TABLE animals (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(1024));

MariaDB [animals]> SHOW TABLES;

Tehdään käyttäjä

MariaDB [animals]> GRANT ALL ON animals.* TO animals@localhost IDENTIFIED BY ‘salainen’;

Kirjaudutaan normaalina käyttäjä kantaan

$ mariadb -u animals -p

Lisätään muutama rivi dataa tietokantaan

Database changed
MariaDB [animals]> INSERT INTO animals(name) VALUES (“Horse”);
MariaDB [animals]> INSERT INTO animals(name) VALUES (“Cat”);
MariaDB [animals]> INSERT INTO animals(name) VALUES (“Dog”);
MariaDB [animals]> INSERT INTO animals(name) VALUES (“Snake”);

Automatisoidaan sisäänkirjautuminen

$ touch .my.cnf
$ chmod og-wxr .my.cnf
$ ls -l .my.cnf$ nano .my.cnf

$ nano .my.cnf

user=”animals”
database=”animals”
password=”salainen”

PHP asennus

$ sudo apt-get install libapache2-mod-php php-mysql

Testaus

Sallitaan PHP käyttäjille

$ sudo /etc/apache2/mods-available/php7.2.conf

Kommentoidaan nämä pois

<IfModule mod_userdir.c>
<Directory /home/*/public_html>
php_admin_flag engine Off
</Directory>
</IfModule>

Tehdään testiohjelma

$ ssh einari@localhost

$ cd public_html

$ mv index.html index.php

$ nano index.php

<!DocTYPE html>
<HTML lang=”en”>
<HEAD>
<meta charset=”utf-8″ />
<TITLE>kotisivu</TITLE>
</HEAD>
<BODY>
Hello World!
<?php
print (2+2);
?>
</BODY>
</HTML>

Ajetaan testiohjelma

Tietokantaa käyttävä PHP-ohjelma

<?php

$user='animals';
$password='salainen';

$database=$user;
$dsn="mysql:host=localhost;charset=UTF8;dbname=$database";

$pdo=new PDO($dsn, $user, $password);

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

// Print the $hits Array
foreach($hits as $row) {
 echo "<p>".$row['id']." ".$row['name']."</p>\n";
}
?>

Virtual host

Laita Einarin esimerkkisovellus näkymään osoitteesta

http://invis.example.com.

Voit simuloida nimipalvelun toimintaa hosts-tiedoston avulla.

sudoedit /etc/hosts

127.0.0.1 localhost
127.0.1.1 juha-HP
127.0.0.1 invis.example.com

Apachen konfigurointi

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

<VirtualHost *:80>

ServerName invis.example.com
ServerAlias www.invis.example.com
DocumentRoot /home/einari/public_html

<Directory /home/einari/public_html>

Require all granted

</Directory>

</VirtualHost>

$ sudo a2ensite invis.example.com

$ sudo systemctl restart apache2

Testaus

BASH-tehtävä

## mitakello

Tee uusi komento 'mitakello', joka tulostaa kellonajan. Komennon tulee
toimia kaikilla käyttäjillä, kaikista hakemistoista pelkällä nimellä
kutsuttuna.

$ nano juhatime.sh

#! /bin/bash
date –iso-8601=min

$ chmod u+x juhatime.sh

Ajetaan

./juhatime.sh

Kaikille käyttäjille

sudo cp juhatime.sh /usr/local/bin/juhatime.sh
[sudo] password for juha:

$ sudo chmod a+x juhatime.sh
/usr/local/bin$ ls -l juhatime.sh
-rwxr-xr-x 1 root root 33 loka 6 14:28 juhatime.sh

Metapaketti

Tee meille metapaketti, joka asentaa ohjelmat: git, httpie, curl, mitmproxy. 

Kuulemma "karvinen equivs" hakusanalla saattaisi löytyä ohjeita. Liitä
metapaketin
lähdekoodi palautettavan lab.txt:n loppuun.

Lähdekoodi tiedostossa juhas-pack.cfg

section: misc
Priority: optional
Standards-Version: 3.9.2
Package: juhas-pack
Version: 0.1
Depends: git, httpie, curl, mitmproxy
Description:
long description and info
.
second paragraph

 

Leave a Reply

Your email address will not be published. Required fields are marked *