h7

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

Aloitin harjoituksen tekemisen klo 10.44 / 12.44 ja lopetin n. 11.55 / 13.55.

Tein harjoituksen try ubuntu -moodissa omalla Lenovon ThinkPad-kannettavallani.

Valitsin tämän harjoituksen: http://terokarvinen.com/2016/arvioitava-laboratorioharjoitus-linux-palvelimet-ict4tn021-1-uusi-ops-alkusyksylla-2016

Käyriä

Tilastoi eri resurssien (CPU, RAM…) kuormitus koko harjoituksen ajalta. Tilastointi tulee siis aloittaa, ennenkuin teet muita harjoituksia. Kirjoita aivan lopuksi lyhyt analyysi keräämästäsi tilastosta.

  • Opettaja oli tunnilla ehdottanut Munin-ohjelman asentamista
  • Sain sen ladattua, mutta sen toimiaan laittaminen vaikutti liian hankalalta, ja olisi pitänyt ladata mysql (jonka asentaminen ei jostakin syystä onnistu käyttämälleni xubuntu-versiolle)
  • Katsoin sitten software kaupasta Gnome Systme Monitorin
    • se kertoi vain sen hetkisen tilanteen, mutta ei ottanut ylös historiaa
  • Kokeilin parin muun asentamista, mutta nekin olivat vain sen hetkisen tilanteen
  • Tässä vaiheessa päädyin siihen päätökseen, etten laita mitään tilatsointiohjelmaa pyörimään ja toivon, ettei labraharjoituksessa sitä pyydetä laittamaan (varmaan tulee, mutta se on sitten torstain Emman ongelma)
  • Avauduin myös muistiinpanoihini siitä, miten en osaa oikeasti käyttää Linuxia kunnolla, vaikka olen käynyt kurssin ja jotakin mukamas oppinut. Ehkä Linux ei vain sovi minulle käyttöjärjestelmänä sen CLI:n käytön takia. Ehkä Windowsin UI on parempi minulle
  • Joka tapauksessa siirryin urhollisesti tekemään harjoituksen seuraavaa tehtävää, vaikka tiesin, etten siinäkään onnistu.

PHP:tä kaukomailta

Asenna meille tarvittavat palvelut, jotta voimme tehdä PHP-sivuja etänä.

Käyttäjämme ovat Maija Mehilälinen, Peter Ö, Oskar Jäärä, John Do, Verner Vrij,Mikko Möttönen, Jalmari Ähkä, Håkan Swarz ja Maija Maitoparta. Tee kullekin esimerkkisivu PHP:lla.

Listaa kaikki käyttäjätunnukset ja salasanat tiedostoon lab.txt (“/home/*/lab.txt”). Suojaa tiedosto niin, etteivät muut käyttäjät voi lukea sitä.

  • Käytin tätä sivua apuna: https://www.linode.com/docs/websites/hosting-a-website-ubuntu-18-04/ vaikka ei siitä suurta apua ollut
  • tekemäni komennot:
    • sudo apt-get install apache2
    • sudo a2dissite *default
    • cd /var/www/html
    • sudo mkdir -p example.com/{public_html,log,backups}
    • sudo nano /etc/apache2/sites-available/example.com.conf
      • # domain: example.com
      • # public: /var/www/html/example.com/public_html/
      • <VirtualHost *:80>
      •   # Admin email, Server Name (domain name), and any aliases
      •   ServerAdmin webmaster@example.com
      •   ServerName  example.com
      •   ServerAlias http://www.example.com
      •   # Index file and Document Root (where the public files are located)
      •   DirectoryIndex index.html index.php
      •   DocumentRoot /var/www/html/example.com/public_html
      •   # Log file locations
      •   LogLevel warn
      •   ErrorLog  /var/www/html/example.com/log/error.log
      •   CustomLog /var/www/html/example.com/log/access.log combined
      • </VirtualHost>
    • sudo a2ensite example.com.conf
    • sudo systemctl reload apache2

Sitten olisi pitänyt mySQl asentaa tietokannaksi, mutta sen asentaminen ei jostakin syystä onnistu käyttämääni try-xubuntuun, joten yritin ladata jonkun toisen tietokannan.

Valitsin postgresql:n

  • Yritin käyttää tämän sivun ohjeita: https://tecadmin.net/install-postgresql-server-on-ubuntu/
  • käyttämäni komennot
    • sudo apt-get install postgresql postgresql-contrib
    • sudo su -postgres
      • psql
      • su – xubunbtu
  • tein varmaan jotenkin väärin, mutta tässä vaiheessa en taaskaan jaksanut enää alkaa välittää, koska olin jo päättänyt, etten osaa tai tule koskaan osaamaan käyttämään Linuxia. Toivon vain, etten tulevaisuudessa tule sitä tarvitsemaan tai ettei minun tarvitse asennella tietokantoja, joita en osaa ollenkaan käyttää tai asennella

Lopetin harjoituksen tekemisen tähän.

h6

Harjoitus löytyy kurssin sivuilta: http://terokarvinen.com/2020/linux-palvelimet-2020-alkukevat-kurssi-ict4tn021-3010/

En osannut tehdä tehtävää, mutta voin kertoa tässä, mitä sain aikaiseksi ennen kuin lopetin sen tekemisen.

Yritin tehdä tehtävää noin tunnin ajan.

a) Tietokanta wepissä. Tee oma yksinkertainen, tietokantaa käyttävä ohjelma. Ohjelmalla tulee olla jokin käyttötarkoitus. Voit tehdä ohjelman muokkaamalla Teron koodia (muista lähdeviite).

Aluksi käytin apuna näitä sivuja:

Yritin luoda Virtualnenv:in ennen SQLAlchemyn asentamista. En onnistunut sen tekemisessä. (En muista miksi)

Tässä vaiheessa käytin suosiolla muiden opiskelijoiden harjoituksia apuna:

Yritin tehdä samaa kuin mitä hän oli tehnyt. En kuitenkaan saanut sitä toimimaan.

b) Laita tietokantaohjelmasi toimimaan mod_wsgi:n kanssa.

En päässyt tähän asti.

h5

Python Flask weppisovellukset. Palvelinpään ohjelmointi, Python Flask framework. Flask-tuotantoasennus.


En ollut tunnilla, joten näiden tehtävien tekeminen oli vähän hankalaa. Tein ensin joitakin asioita väärin, mutta mielestäni sain ne kuitenkin suurilta osin tehtyä oikein. En osaa yhtään Pythonia, joten siltä osalta tehtävät olivat todella hankalia.

Tehtävät löytyvät täältä: http://terokarvinen.com/2020/linux-palvelimet-2020-alkukevat-kurssi-ict4tn021-3010/

Aloitin tehtävien tekemisen siinä 8.18./10.18 ja lopetin 10.36/12.36.

a) Hello Flask! Tee Python Flask hei maailma kehitysympäristössä. Voit siis käyttää tuotantoon sopimatonta app.run(debug=True) ajoa.

Tässä tehtävässä tein ehkä väärin: aloin tekemään sitä sille omalle palvelimelleni, vaikka sen pystyi tekemään testinä omalla päätelaitteella.

Käytin tätä sivua: https://linuxize.com/post/how-to-install-flask-on-ubuntu-18-04/ apuna Flaskin asentamisessa.

Luo virtuaaliympäristö Flaskille:

  • cd /home
  • sudo mkdir my_flask_app
  • cd my_flask_app
  • (luo virtuaaliympäristö tällä komennolla:)
    • sudo python3 -m venv venv
  • (To start using this virtual environment, you need to activate it by running the activate script:)
    • source venv/bin/activate

Command promptin käyttäjästä tuli nyt (venv) -alkuinen.

Asenna Flask:

  • $ pip install Flask
    • -> lataus ei onnistunut, tuli PermissionError
  • $ sudo apt install python-flask # for Python 2.x
  • $ sudo apt install python3-flask # for Python 3.x  
  • $ pip install Flask –user
    • -> nyt onnistui
  • TESTAUS: $ flask –version
  • -> Flask 0.12.2 Python 3.6.9 (default, Nov  7 2019, 10:44:02) [GCC 8.3.0]

Eli flaskin asennus onnistui.

Seuraavaksi luo Hello World sovellus:

  • sudo nano hello
    • from flask import Flask
    • app = Flask(__name__)
    • @app.route(’/’)
    • def hello_world():
    •     return ’Hello World!’

Testaa Development Server:

  • $ export FLASK_APP=hello
  • $ flask run

Tämä ei toiminut, vaan tuli error-viesti.

  • Error: The file/path provided (hello) does not appear to exist.  Please verify the path is correct. If app is not on PYTHONPATH, ensure the extension is .py

Korjausyritys: poista se aiempi tiedosto ja luo uusi sudo nano hello.py. Mutta tämäkään ei auttanut.

Tässä vaiheessa kilautin kaverille, joka oli ollut tunnilla. Hän sanoi, että opettana sivulla on ohjeet tälle tehtävälle. *facepalm*

http://terokarvinen.com/2020/hello-flask-python-web-app/

  • $ sudo apt-get update
  • $ sudo apt-get -y install python3-flask
  • $ sudo apt autoremove
  • $ sudo nano hello.py
    • from flask import Flask
    • app = Flask(__name__)
    • @app.route(”/”)
    • def hello():
    • return ”Learn Flask at TeroKarvinen.com!”
    • app.run(debug=True)
  • -> selaimeen localhost:5000
    • -> unable to connect

Nyt tajusin tehneeni väärin, kun tein tämän omalle palvelimelleni enkä omalle paikalliselle koneelleni. Miten oma kannettavani mukama avaisi tuon sivun, jos kirjoitan selaimeen localhost:5000? Otin järkeni käteen ja tein kaiken edellä mainitun omalle koneelleni.

Ja voila! Nyt se onnistui!


b) Tuotanto-Flask. Tee tuotantotyyppinen asennus Flaskista käyttäen Apachen WSGI-modulia. Kokeile, että pystyt muokkaamaan koodia ilman sudoa ja saat uuden version käyttöön käynnistämättä Apachea uudelleen. (’touch foo.wsgi’).

Tälle tehtävälle löytyi myös ohjeet opettajan sivuilta: http://terokarvinen.com/2020/deploy-python-flask-to-production/

Tein tämän omalle palvelimelleni, jossa oli Apache2 jo asennettuna.

  • $ echo ”sssSSSsss” |sudo tee /var/www/html/index.html
  • For security, we create a separate user for our app. 
    • $ sudo adduser krissetest
    • lukitse se
      • $ sudo usermod –lock krissetest
    • Let’s add ourselves to users own group.
      • $ sudo adduser $(whoami) krissetest
  • log out ja log in jotta ryhmä aktivoituu

Seuraavaksi Name Based Virtual Host for Python Flask:

  • $ sudoedit /etc/apache2/sites-available/krissetest.conf
  • muuta opettajan antamaa tekstiä:
    • <VirtualHost *:80>
    •      ServerName hattu.emmavaittinen.social
    •      WSGIDaemonProcess krissetest user=krissetest group=krissetest threads=5
    •      WSGIScriptAlias / /home/krissetest/public_wsgi/krissetest.wsgi
    •      <Directory /home/krissetest/public_wsgi/>
    •              WSGIScriptReloading On
    •              WSGIProcessGroup krissetest
    •              WSGIApplicationGroup %{GLOBAL}
    •              Require all granted
    •      </Directory>
    • </VirtualHost>

Sitten laitetaan sivu toimimaan:

  • $ sudo a2ensite krissetest.conf
  • $ sudo a2dissite 000-default.conf
  • $ apache2ctl configtest
    • AH00526: Syntax error on line 33 of /etc/apache2/sites-enabled/000-default-le-ssl.conf:
    • SSLCertificateFile: file ’/etc/letsencrypt/live/hattu.emmavaittinen.social/fullchain.pem’ does not exist or is empty
    • Action ’configtest’ failed.
    • The Apache error log may have more information.
  • $ sudo apt-get -y install libapache2-mod-wsgi-py
  • $ sudo systemctl restart apache2
  • $ apache2ctl configtest
    • Apache2ctl configtest should say ”Syntax OK”. Any complaints about servername blah blah localhost are harmless. If there are actual errors, this usually tells the line number, too.

Katsotaan, mitä sivu sanoo nyt:

  • $ curl localhost
    • <!DOCTYPE HTML PUBLIC ”-//IETF//DTD HTML 2.0//EN”>
    • <html><head>
    • <title>403 Forbidden</title>
    • </head><body>
    • <h1>Forbidden</h1>
    • <p>You don’t have permission to access this resource.</p>
    • <hr>
    • <address>Apache/2.4.29 (Ubuntu) Server at localhost Port 80</address>
    • </body></html>

Luodaan sinne seuraavaksi kansio ja muutetaan käyttäjien oikeuksia:

  • $ sudo mkdir /home/krissetest/public_wsg
  • $sudo chown krissetest:krissetest /home/krissetest/public_wsgi
    • fixing the permissions, because normally we don’t go around sudoing in user’s home directories
  • $ sudo chmod g=rwxs /home/krissetest/public_wsgi
    • Let all users in terowsgi group edit the directory (g+rwx), and let’s keep the terowsgi group for new files and folders (g+s).

Seuraavaksi luodaan se tiedosto (tero.wsgin tilalle se krissetest.wsgi):

  • $ nano /home/terowsgi/public_wsgi/tero.wsgi
    • import sys
    • assert sys.version_info.major >= 3, ”Python version too old in tero.wsgi!”
    • sys.path.insert(0, ’/home/terowsgi/public_wsgi/’)
    • from hello import app as application

Katsotaan, mitä sivu sanoo nyt:

  • $ curl -s localhost|grep title
    • <title>404 Not Found</title>
  • $ tail -1 /var/log/apache2/error.log
    • [Sun Mar 01 09:41:03.771760 2020] [wsgi:error] [pid 2296:tid 140010145634048] [client 127.0.0.1:36652] Target WSGI script not found or unable to stat: /home/krissetest/public_wsgi/krissetest

Sitten luodaan se hello.py -tiedosto:

  • $ nano hello.py
    • from flask import Flask
    • app = Flask(__name__)
    • @app.route(”/”)
    • def hello():
    • return ”Learn Flask at TeroKarvinen.com!\n
    • # Removed the app.run line

Katsotaan, mitä sivu sanoo nyt:

  • $ curl localhost
    • error 404

Unohdin potkaista apachea:

  • $ sudo systemctl restart apache2

Uudestaan:

  • $ curl localhost
    • 500 internal server error
  • $ tail -1 /var/log/apache2/error.log
    • [Sun Mar 01 09:51:42.918946 2020] [wsgi:error] [pid 2589:tid 140297772435200] [remote 127.0.0.1:36656] ModuleNotFoundError: No module named ’flask’

Eli modduli Flaskia ei ole aseennettu, joten asennetaan se:

  • $ sudo apt install python3-flask

Jos nyt toimisi:

  • $ curl localhost
    • ”Learn Flask at TeroKarvinen.com!”

Hurraa!


c) Lisää tuotanto-Flaskiin muotit (templates).

Tässä kohtaa voin sanoa, ettei minulla ollut oikein yhtään hajua mitä olin tekemässä. Opettajan sivuilta löytyi tekstiä muoteista, mutta ne eivät jotenkin auenneet minulle. Tein tehtävän kuitenkin jotenkin ja toivottavasti edes jotenkin oikein.

Apuna käytin: http://terokarvinen.com/2020/flask-templates/

  • $ cd /home/krissetest
  • $ sudo mkdir templates
  • $ cd templates/
  • $ sudo nano templates-flask.py
    • #!/usr/bin/python3
    • ”Return HTML templated page”
    • from flask import Flask, render_template
    • app = Flask(__name__)
    • @app.route(”/”)
    • def templated():
    • return render_template(”base.html”, greeting=”Hello Templates!”)
    • app.run(debug=True)
  • $ sudo nano base.html

Testaus:

  • $ python3 templates-flask.py
    •  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
    •  * Restarting with stat
    •  * Debugger is active!
    •  * Debugger PIN: 133-662-181

En tietenkään päässyt katsomaan sitä nyt, kun se ei ollut minun omalla koneellani pyörimässä eikä se tullut, kun menin nettisivulle.


d) Sun IP. Tee Flask-sivu, jolla näkyy tietoja käyttäjästä. Esimerkiksi request.user_agent.string, request.remote_addr. Muista ”from flask import request”.

Tämä tehtävä oli kanssa hankala, koska en osaa yhtään Pythonia. Tajusin, mitä siinä piti tehdä (samalla tavalla kuin a)-tehtävässä), mutten tiennyt, miten koodia piti muokata, jotta sen saisi toimimaan. Kokeilin tätä vähän eri tavalla. Löysin netistä valmiin koodin, jonka avulla sain jotakin tapahtumaan, kun kirjoitin selaimeen localhost:5000.

Kokeilin tällaista koodia:

from flask import rFlask
app = Flask(__name__)

@app.route(”/”)

def is_from_browser(user_agent):
return user_agent.browser in [
     ”camino”,
     ”chrome”,
     ”firefox”,
     ”galeon”,
     ”kmeleon”,
     ”konqueror”,
     ”links”,
     ”lynx”,
     ”msie”,
     ”msn”,
     ”netscape”,
     ”opera”,
     ”safari”,
     ”seamonkey”,
     ”webkit”,
 ]

app.run(debug=True)

Eli jotakin tapahtui, mutta ei kuitenkaan sitä, mitä tehtävässä käskettiin tekemään.

h4

Oma julkinen palvelin

Harjoitus löytyy kurssin sivulta: http://terokarvinen.com/2020/linux-palvelimet-2020-alkukevat-kurssi-ict4tn021-3010/

Aloitin tehtävien tekemisen klo 10.32 / 12.32 ja tein niitä tunnin ajan.

Tällä kertaa tehtävä oli helppo eikä ilmennyt mitään ongelmia. Olimme tehneet tehtävän jo tunnilla, joten sen toistaminen onnistui helposti muistiinpanoja seuraamalla.

Tein tehtävän omalla Lenovon x220 ThinkPad -kannettavallani. Avasin xubuntun livetikulta try-moodissa.

a) Tee alusta lähtien oma julkinen palvelin Internetiin.

Vinkkejä: Tee siis uusi virtuaalipalvelin (esim ”Droplet”) ja sille tarvittavat alkutoimet. Tee uusi DNS-nimi. Alanimiä voi yleensä tehdä maksutta: esim. jos hallitsee TeroKarvinen.com, voi tehdä hattu.TeroKarvinen.com. Tässä tehtävässä on tarkoitus sujuvoittaa koko prosessi, tee siis uusi A-tietue nimipalvelimeen ja uusi virtuaalipalvelin alusta lähtien, vaikka sinulla olisi jo sekä nimi että palvelin. Kun kaikki toimii ja raportti on valmis, voit poistaa turhan palvelimen ja jättää itsellesi esimerkiksi vain yhden käyttöön. Jos jäät jumiin, pyri päättelemään, mitkä osat toimivat ja mitkä eivät; ratkomme viimeiset ongelmat yhdessä tunnilla. Palautusaika on tuttuun tapaan 24h ennen seuraavaa tapaamiskertaa, eli vasta talvivapaan jälkeen.

Minulla oli aiempi palvelin digitalocean:issa, joten tein sinne uuden dropletin samalla tavalla kuin tunnilla tein sen aiemman: Distro: ubuntu; plan: standard ja 5$/month; hostname: harj4

SSH-yhteyttä varten tarvittava kertakäyttöinen salasana ilmestyi sähköpostiin ip-osoitteen kanssa.

  • ssh root@*ip-osoite*

Loin uuden salasanan nyt rootille, vaikka se kohta lukitaan, kun luomme uuden käyttäjän, jolla hallita palvelinta.

Ensiksi teimme reiän palomuuriin ssh:lle:

  • #sudo ufw allow 22/tcp
  • #sudo ufw enable

Sitten teemme käyttäjän:

  • #sudo adduser emma
  • (anna salasana), (anna Full Name, ei muita tietoja)

adduser luo käyttäjän, mikä on helpoin tapa luoda käyttäjiä. Sitten haluamme luomamme käyttäjän sudo ja adm -ryhmiin eli:

  • #sudo adduser emma suo
  • #sudo adduser emma adm

Testaus toisella terminaalilla:

  • #ssh emma@*ip-osoite*
  • (anna salasana)
  • #sudo apt-get update (testaa toimiiko) -> Toimii

Lukitse root-käyttäjä:

  • #sudo usermod –lock root

Root-käyttäjä lukitaan, koska kaikki tunkeilijat tietävät sen nimen.

Seuraavaksi luon aladomainin. Menen name.com-sivulle, jossa domain sijaitsee. Sieltä Manage DNS:

Nyt hattu.emmavaittinen.social ottaa vastaan liikennettä. Teen sille vielä weppipalvelimen. Lataan Apache2, tein palomuuriin reiän:

  • #sudo ufw allow 80/tcp
  • #sudo ufw allow 443/tcp
  • #sudo ufw allow in ”Apache Full”

Nyt sain sen ”It works” -sivun tulemaan, kun laitan selaimeen tuon osoitten.


b) Vapaaehtoinen: Etsi lokeistasi merkkejä murtautumisyrityksistä ja analysoi ne.

  • #grep ”failure” /var/log/auth.log

Sain listan epäonnistuneista kirjautumisyrityksistä.

Feb 23 10:42:53 harj4 sshd[1112]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=117.73.2.103

Kun googletin rhostin ip-osoitteen, https://www.abuseipdb.com/check/117.73.2.103 kertoi, että se on raportoitu yli 2500 kertaa ja että se sijaitsee Kiinassa.

Hetken päästä se yritti root-käyttäjänä uudestaan:

Feb 23 10:45:52 harj4 sshd[1244]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=117.73.2.103  user=root

c) Vapaaehtoinen: Laita TLS-salakirjoitus (https) toimimaan certbot ja Let’s Encrypt avulla.

Seurasin tämän sivun ohjeita: https://certbot.eff.org/lets-encrypt/ubuntubionic-apache

  1. add certbot ppa (personal package archive)
  • #sudo apt-get update
  • #sudo apt-get install software-properties-common
  • #sudo add-apt-repository universe
  • #sudo add-apt-repository ppa:certbot/certbot
  • #sudo apt-get update

2. install certbot

  • #sudo apt-get install certbot python-certbot-apache

3. Choose how you’d like to run Certbot Either get and install your certificates…

  • #sudo certbot –apache

Run this command to get a certificate and have Certbot edit your Apache configuration automatically to serve it, turning on HTTPS access in a single step.

Sitten se pyysi sähköpostiosoitetta, ToS piti hyväksyä, kysyi haluanko antaa emailin Electronic Frontier Foundationille (vastasin että ei), pyysi domain nimen: hattu.emmavaittinen.social. Lopuksi kysyi haluanko uudelleenohjata HTTP liikennettä HTTPS:ään.

Testasin, onnistuiko se:

Ilmestyi sinne se lukon kuva eli sen laittaminen onnistui!

Lopuksi #exit -komento, jotta kirjauduin ulos SSH-yhteydestä.

h3

Tehtävät ovat täältä: http://terokarvinen.com/2020/linux-palvelimet-2020-alkukevat-kurssi-ict4tn021-3010/

Tämän harjoituksen aiheena ovat Apache-weppipalvelin ja LAMP kehitysalusta. Eli harjoittelimme Apachen asentamista ja käyttämistä.

Harjoituksia piti tehdä vähintään viisi. Olimme tehneet samoja asioita jo tunnilla, joten ne olivat tuttuja. Ongelmia tuli kuitenkin vastaan.

Tein tehtävät omalla Lenovon Thinkpad x220 kannettavalla tietokoneella. Aloitin tekemään neljää ensimmäistä tehtävää klo 11.56/13.56 ja niiden kanssa meni kaksi tuntia. Viimeistä tehtävää tein vähän yli tunnin.

Avasin xUbuntun livetikultani try-moodissa. Koneen perustoiminto oli OK (näppäimistö, hiiri, näyttö ym. toimivat kuin niiden piti toimia).

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

Tämän teimme jo tunnilla, joten oli helppo vain toistaa uudestaan. Olin tehnyt muistiinpanot tunnilla ja seurasin niitä suurilta osin.

  • sudo apt-get update
  • sudo apt-get install apache2
  • TESTAUS: selaimeen localhost ja ip-osoite -> tuli ”It works!”-sivusto eli asentaminen onnistui

Tunnilla teimme reiän palomuuriin, mutta en tiennyt tarvitseeko sitä nytkin tehdä, joten en tehnyt (tämä osoittautui virheeksi!)

Seuraavaksi tein oman kotisivun käyttäjälle. Olin tehnyt muistiinpanot enkä oikein saanut kaikista kohdista selvää tai tajunnut miksi jokin asia tehtiin, mutta tein nyt miten niissä luki.

  • echo ”Emma” |sudo tee /var/www/html/index.html
  • TESTAUS: selaimeen localhost tai ip-osoite -> teksti ”Emma” näkyi:

  • sudo a2enmod userdir (#tämä enablaa userdir moduulin)
  • sudo systemctl restart apache2 (#aktivoi apache)
  • TESTAUS: selaimeen ”ip-osoite”/~xubuntu -> 403 Forbidden

Täytyy tehdä hakemisto:

  • mkdir public_html
  • TESTAUS:

Seuraavaksi loin sinne index.html tiedoston, johon kirjoitin “Emman kotisivu”. Tallennettuani sen ja päivitettyäni kotisivun sain tekstin näkymään sinne (en ottanut kuvankaappausta).

Seuraavaksi luodaan Virtual Host, jotta saa osoitteen emma.com toimimaan.

Mennään ensiksi /etc/apache2/sites-available hakemistoon, josta näkee mitä sivuja siellä on. Sieltä löytyy 000-default.conf -tiedosto, joka on automaattinen default-sivu. Haluamme nyt muuttaa sen.

Luomme uuden sivun: sudoedit emma.com.conf, johon kirjoitamme tekstin:

  • <VirtualHost *:80>
    • ServerName emma.com
    • ServerAlias http://www.emma.com
    •  
    • DocumentRoot “/home/xubuntu/public_html/”
    • </VirtualHost>

Pitää vielä muuttaa asetuksia:

  • sudo a2ensite emma.com.conf (#jotta saadaan sivu enablettua)
  • sudo systemctl restart apach2 (-> apache taas päälle)
  • *tätä ennen olisi kannattanut testata sitä komennolla apache2ctl configtest
  • sudo a2dissite 000-default.conf (#jolla sai sen sivun pois päältä)
  • sudo systemctl restart apache2

Tässä kohtaa joku meni varmaan väärin, koska, kun menin emma.com tai www.emma.com sivuille, pääsin sivulle, joka myy domain nimiä enkä sille omalle palvelimeni sivulle.

Kokeilin laittaa /etc/hosts tiedostoon kohdan *ip-osoite*/~xubuntu/ emma.com www.emma.com, mutta sekään ei auttanut.

Laitoin sitten sinne hosts-tiedostoon *ip-osoite* emma.com www.emma.com. Nyt pääsin 403 Forbidden kohtaan eli sillein onnistuin saamaan sen yhteyden MUTTA vain www.emma.com osoittella, emma.com vei sinne domainostamis sivulle. Tuo 403 Forbidden tuli varmaan jostakin aiemmasta kohdasta.

Kokeilin sudo a2ensite 000-default.conf, mutta sekään ei toiminut. Disablasin sen sitten.

Kokeilin laittaa /etc/hosts tiedostoon erikseen sen emma.com (eikä siinä jatkona), mutta sekään ei auttanut. En siis pääse edes Localhost-urliin katsomaan tiedostoa. Se oli varmaan sen takia, kun tein tuon emma-sivun, poistan sen ja katson mitä tapahtuu. Nyt pääsen *ip-osoite*/~xubuntu katsomaan sitä tekstiä.

Kokeilen sitten tämän sivun https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-16-04 ohjeilla tehdä tämän. Mutta ei onnistunut :(. Yhden sivun sain tehtyä localhostiksi. (yksi kohta raporttia varten kirjoittamista muistiinpanoistani: ”apua en tiedä mitä teen !!! labrassa onnistui todella hyvin :(”)

Olin tehnyt siis edellisessä kohdassa lisää virtual hosteja ja nettisivua (blingi.com ja http://www.blingi.com).

Palasin tekemään tehtävää ja tein sen reiän palomuuriin. (kommentti muistiinpanoistani: ”*kirosana* jos se on sen takia mennyt perseelleen” ja ”satavarmasti on”). [Tein reiän siis komennoilla: sudo ufw enable, sudo ufw allow 80/tcp]

Kuinkas ollakkaan jotakin alkoi menemään oikein: http://www.emma.com toimi (eli selaimeen tuli se sivu, jossa oli tekstiä), mutta emma.com ei toiminut. blingi.com ja http://www.blingi.com eivät toimineet. Olin ihan hukassa enkä tiennyt miten näin pääsi käymään. Varmaan on joku ilmiselvä selitys, mutten osaa sitä nyt itse sanoa.

(Olin siis siirtynyt tekemään seruaavaa tehtävää ja tehnyt sinne tuollaisen BMI-laskurin. Ajattelin, että saisin virheilmoituksia jos kirjoittaisin siihen vääriä muuttujia.)

b) Surffaa oman palvelimesi weppisivuja. Etsi Apachen lokista esimerkki onnistuneesta (200 ok) sivulatauksesta ja epäonnistuneesta (esim 404 not found) sivulatauksesta. Analysoi rivit.

Onnistunut sivulataus:

En nyt muista kirjoitinko siihen *ip-osoite*/~xubuntu vai mitä. Luultavasti tuon tai sitten localhost.

127.0.0.1 – – [06/Feb/2020:13:16:00 +0000] ”GET / HTTP/1.1” 200 854 ”-” ”Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0”

127.0.0.1 = localhostin ip-osoite

[06/Feb/2020:13:16:00 +0000] = aika, jolloin toiminto tapahtui

GET / HTTP/1.1 = GET is the request. The / is the resource we want to obtain, and the HTTP/1.0 tells the server that this is a HTTP/1.0 request

200 854 ” = 200 is the status code that the server sends back to the client. 854 = the size of the object returned to the client, not including the response headers

”Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0” = the user agent. The User-Agent request header is a characteristic string that lets servers and network peers identify the application, operating system, vendor, and/or version of the requesting user agent.


Epäonnistunut sivulataus:

Kirjoitin selaimeen väärän url:in: *ip-osoite*/~xubuntu -> ~xubunt

*ip-osoite* – – [06/Feb/2020:13:20:39 +0000] ”GET /~xubunt HTTP/1.1” 404 493 ”-” ”Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0”

Tässä on samat tiedot kuin tuossa edellisessä. Erona ovat lihavoidut kohdat. Jos status code alkaa 4:lla, virhe johtuu asiakkaasta. /~xubunt on virheellinen sivusto.

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

Tein muutoksen apachen configuration tiedostoon. Kirjoitin sinne keyboardsmash tekstiä.

  • /etc/apache2$ apache2ctl configtest

Tuloksena sain:

AH00526: Syntax error on line 2 of /etc/apache2/apache2.conf:
Invalid command ’sfsdsd#’, perhaps misspelled or defined by a module not included in the server configuration
Action ’configtest’ failed.
The Apache error log may have more information.

Nyt tätä raporttia tehdessäni tajusin, että otin väärän tiedon talteen. En mennyt katsomaan error-logista, mitä siellä luki. Mutta tuossa kuitenkin kerrotaan, että siellä config-tiedostossa on invalid command.

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

En tätä tehtävää varten tehnyt erillisiä toimintoja. Katsoin vain, mitä olin jo saanut aikaiseksi. Sain viidestä eri statuksesta ainakin yhden merkinnän.

HTTP OK 200

127.0.0.1 – – [06/Feb/2020:11:59:50 +0000] ”GET / HTTP/1.1” 200 3477 ”-” ”Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0”

Katso aiempi tehtävä, jossa analysoin samanlaisen rivin.

HTTP NOT FOUND 404

*ip-osoite* – – [06/Feb/2020:13:20:39 +0000] ”GET /~xubunt HTTP/1.1” 404 493 ”-” ”Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0”

Katso aiempi tehtävä, jossa analysoin samanlaisen rivin.

HTTP FORBIDDEN 403

*ip-osoite*- – [06/Feb/2020:12:11:37 +0000] ”GET /~xubuntu HTTP/1.1” 403 496 ”-” ”Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0”

403 = The server understood the request, but will not fulfill it due to client related issues.

HTTP NOT MODIFIED 304

*ip-osoite* – – [06/Feb/2020:13:20:23 +0000] ”GET /~xubuntu/ HTTP/1.1” 304 180 ”-” ”Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0”

304 = client redirection response code indicates that there is no need to retransmit the requested resources. It is an implicit redirection to a cached resource. 

HTTP MOVED PERMANENTLY 301

*ip-osoite* – – [06/Feb/2020:12:13:19 +0000] ”GET /~xubuntu HTTP/1.1” 301 587 ”-” ”Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0”

301 = used for permanent URL redirection, meaning current links or records using the URL that the response is received for should be updated. The new URL should be provided in the Location field included with the response.


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.

Tämän kohdan tekemisessä meni tunti. En tehnyt tätä edellisten tehtävien perään, joten jouduin aloittamaan kaiken alusta.

Sain asennettua Apachen ja PHP:n, mutta MySQL:n asennus ei onnistunut. En siis voinut käyttää koko LAMP:ia yhtenä kokonaisuutena. MySQL:n asennuksen epäonnistumisen analysointi ja debuggaus olisi vienyt varmasti todella kauan aikaa ja ongelma vaikttui suuremmalta kuin minä, joten en tehnyt sitä.

Seurasin tämän sivun: https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-ubuntu-18-04 ohjeita.

Vaihe 1 – Asenna Apache ja päivitä tulimuuri

  • sudo apt update
  • sudo apt get install apache2
  • sudo ufw enable
  • sudo ufw allow 80/tcp
  • sudo ufw allow 443/tcp
  • sudo ufw allow in ”Apache Full” (#tämä päästää HTTP ja HTTPS liikenteen sisään)
  • TESTAUS: kirjoitin ip-osoitteen selaimeen ja pääsin aloitussivulle

Vaihe 2 – Asenna MySQL

  • sudo apt install mysql-server

Tässä vaiheessa tuli jo virheilmoitus, ettei asennus onnistunut kunnolla, mutten tajunnut sitä, koska se luki siinä niiden asennusrivien kanssa samassa. Tuon ohjeen mukaan olisi pitänyt tulla joku salasanan määrittely kohta, mutta sellaista ei tullut. Päätin myös, etten tekisi niitä, koska niiden tekeminen vaikutti monimutkaiselta ja koska tämä oli vain testi.

Vaihe 3 – Asenna PHP

  • sudo apt install php libapache2-mod-php php-mysql
  • sudo nano /etc/apache2/mods-enabled/dir.conf

Alin komento tehtiin, jotta saadaan weppi palvelin antamaan index.php tiedostoja eikä .html tiedostoja ensisijaisesti. Tiedostossa siirsin index.php jonon ensimmäiseksi.

  • sudo systemctl restart apache2

Nyt kuvittelin, että kaikki kolme oli asenneettu ja että LAMP oli kasassa.

Sitten lähdin testaamaan kaikkia yksitellen:

Apache 2-testaus

Testasimme jo, että weppi sivu näkyy, kun kirjoittaa ip osoitteen selaimeen. Ohjeet ehdottivat vielä, että tekisin virtual hostin. Tein sen samalla tavalla kuin edellisessä tehtävässä. Sain sen toimimaan blingi.com, mutta en www.blingi.com. Aluksi ei toiminut, kun olin tehnyt ohjeiden mukaan. Sitten menin laittamaan etc/hosts:iin sen ip-osoite www.blingi.com blingi.com, jolloin se toimi.

PHP-testaus

Ohjeet neuvoivat, miten sen toimivuutta voi testata. Luo tiedosto aikaisemmin luotuun web-rootiin:

  • sudo nano /var/www/your_domain/info.php

jonne lisätään pieni koodin pätkä:

  • <?php
  • phpinfo();
  • ?>

TESTAUS: selaimeen ip-osoite/info.php, jolloin tuli se perussivu, joka pitäisi tulla. Eli PHP toimi.

MySQL-testaus

Tämän testaus ei onnistunut, koska se ei ollut asentunut kunnolla.

Katsoin ensiksi, onko se päällä:

  • mysqladmin -u root -p status
  • (#pyysi salasanaa, mutta en ollut antanut sellaista ja painoin vain enteriä)
  • (#sitten tuli tieto, että connect to server at localhost failed)
  • /etc/init.d/mysql status
  • active: failed
  • (mysql ei suostunut restarttaamaan)
$ systemctl status mysql.service
● mysql.service – MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; e
   Active: failed (Result: exit-code) since Tue 2020-02
  Process: 15473 ExecStartPre=/usr/share/mysql/mysql-sy

helmi 11 11:37:09 xubuntu systemd[1]: mysql.service: Se
helmi 11 11:37:09 xubuntu systemd[1]: mysql.service: Sc
helmi 11 11:37:09 xubuntu systemd[1]: Stopped MySQL Com
helmi 11 11:37:09 xubuntu systemd[1]: mysql.service: St
helmi 11 11:37:09 xubuntu systemd[1]: mysql.service: Fa
helmi 11 11:37:09 xubuntu systemd[1]: Failed to start M
lines 1-11…skipping…
● mysql.service – MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Tue 2020-02-11 11:37:09 UTC; 13s ago
  Process: 15473 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=1/FAILURE)

helmi 11 11:37:09 xubuntu systemd[1]: mysql.service: Service hold-off time over, scheduling restart.
helmi 11 11:37:09 xubuntu systemd[1]: mysql.service: Scheduled restart job, restart counter is at 5.
helmi 11 11:37:09 xubuntu systemd[1]: Stopped MySQL Community Server.
helmi 11 11:37:09 xubuntu systemd[1]: mysql.service: Start request repeated too quickly.
helmi 11 11:37:09 xubuntu systemd[1]: mysql.service: Failed with result ’exit-code’.
helmi 11 11:37:09 xubuntu systemd[1]: Failed to start MySQL Community Server.

Tässä vaiheessa yritän poistaa mySQL, mutta se ei onnistunut:

ERROR: Unable to start MySQL server:
mysqld: Can’t read dir of ’/etc/mysql/conf.d/’ (Errcode: 13 – Permission denied)
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
Please take a look at https://wiki.debian.org/Teams/MySQL/FAQ for tips on fixing common upgrade issues.
Once the problem is resolved, run apt-get –fix-broken install to retry.
dpkg: error processing package mysql-server-5.7 (–configure):
 installed mysql-server-5.7 package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 mysql-server-5.7
E: Sub-process /usr/bin/dpkg returned an error code (1)

FML

En nyt jaksa listaa tässä, mitä kaikkea kokeilin, mutta joku virhe oli jossakin mysql:n tiedostostossa.

Päätin sammuttaa koko koneen ja tehdä koko hässäkän alusta uudestaan.

Tuli taas sama ongelma sen kanssa. Seuraava on siitä asennuksen loppuosasta:

● mysql.service – MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: activating (auto-restart) (Result: exit-code) since Tue 2020-02-11 12:04:31 UTC; 10ms ago
  Process: 6797 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=1/FAILURE)
dpkg: error processing package mysql-server-5.7 (–configure):
 installed mysql-server-5.7 package post-installation script subprocess returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-5.7; however:
  Package mysql-server-5.7 is not configured yet.


dpkg: error processing package mysql-server (–configure):
 dependency problems – leaving unconfigured
Processing triggers for libc-bin (2.27-3ubuntu1) …
No apport report written because the error message indicates its a followup error from a previous failure.
                                                Processing triggers for ureadahead (0.100.0-21) …
Processing triggers for systemd (237-3ubuntu10.24) …
Errors were encountered while processing:
 mysql-server-5.7
 mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

Googletin ja löysin tällaisen: https://stackoverflow.com/questions/11990708/error-cant-connect-to-local-mysql-server-through-socket-var-run-mysqld-mysq

Tuolla oli tullut samanlainen ongelma. Eli jossakin socketissa oli joku asia väärin.

Yritin mennä katsomaan /var/lib ja sieldä cd mysql, niin en päässyt sisään. Tuli “Permission denied”

Tässä vaiheessa päätin antaa asian olla. En päässyt testaamaan LAMP:ia kokonaisuutena, mikä on harmi.

Tässä lopuksi vähän teoriaa LAMP:ista

A “LAMP” stack is a group of open-source software that is typically installed together to enable a server to host dynamic websites and web apps. 

The Apache web server is among the most popular web servers in the world. It’s well-documented and has been in wide use for much of the history of the web, which makes it a great default choice for hosting a website.

MySQL is a database management system. Basically, it will organize and provide access to databases where your site can store information.

PHP is the component of your setup that will process code to display dynamic content. It can run scripts, connect to your MySQL databases to get information, and hand the processed content over to your web server to display

(lähde: https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-ubuntu-18-04 )

h2

Tehtävien tekemiseen meni n. 2,5-3 tuntia. En tarkkaan mitannut ajankulua. Tein tehtävät omalla Lenovon Thinkpad X220 -kannettavallani.

Tehtävät löytyvät sivulta http://terokarvinen.com/2020/aikataulu-linux-palvelimet-ict4tn021-3010-torstai-aamu-alkukevat-2020-5-op

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

Tätä tehtävää tehdessäni koin pieniä ahdistuksen ja turhautumisen tunteita, koska en joko saanut lokiin merkintöjä tai sitten sain, mutten osannut lukea niitä, koska ”hauki on kala”-tyylisiä ohjeita ei oltu annettu lokien lukemisesta. Lopulta sain kuitenkin lokiin merkintöjä, jotka ymmärsin itse aiheutetuksi.

Tavallaan ymmärrän, ettei ole saatavilla yksityiskohtaisia dioja ja tekstimateriaaleja, mutta toisaalta, kun olen vielä aloittelija linuxin suhteen, kaipaisin sellaisia. Toisaalta itse googlettelemalla ja hakemalla tietoa pystyn löytämään ratkaisun ongelmiin/tehtäviin. Se, että siihen menee todella kauan aikaa, on vain turhauttavaa.

Sitten itse tehtävään. Eli tehtävänantona oli aiheuttaa onnistunut ja epäonnistunut/kielletty toimenpide lokiin ja analysoida rivi yksityiskohtaisesti.

Käytin tätä sivua: https://stackify.com/linux-logs/ tehtävän tekemisessä. Siellä neuvottiin, kuinka lokeihin pääsee käsiksi ja mitä mistäkin lokista näkee. cd/var/log -komennolla pääsi suoraan lokeihin.

Aloitetaan epäonnistuneesta ”onnistumisesta” (eli tein jotakin, mutten tiedä kirjattiinko se lokiin):

Aluksi yritin ladata Powershellin koemennolla sudo apt-get install powershell, mutta tuli ilmoitus, että sellaista pakettia ei ollut. Yritin katsoa syslogista, joko sinne olisi tullut merkintä: ei ollut (tai sitten en osannut katsoa, mikä oli merkintä tällaisesta tapahtumasta [en myöskään ottanut kopiota mistään tekstikohdasta, joten en jälkikäteen voi edes tarkastaa asiaa]). Tällein jälkikäteen mietittynä koko powershell ohjelmaa ei varmaan edes ollut saatavilla software centeristä (myöhemmin toisessa tehtävässä vastaan tuli samanlainen tilanne).

Sitten latasin onnistuneesti VLC-videontoisto-ohjelman komentorivillä. Tein taas saman virheen, enkä ottanut kopiota syslogista, kun menin sitä tarkastelemaan. Sinne varmaan tuli merkintä, mutten nähnyt/tajunnut mikä oli sen. Ongelmaksi huomasin sen, etten katsonut aikaa, jolloin tein toimintoja. Nyt kirjoitin ylös ajankohdat, jotta voisin lokeista lukea, mitä tapahtui juuri silloin. Poistin VLC-ohjelman sudo apt-get remove vlc -komennolla kello 16.58. Lokin kohta tuolta ajalta:

Feb  1 16:58:17 xubuntu systemd[1]: Starting Snappy daemon…
Feb  1 16:58:17 xubuntu snapd[6673]: AppArmor status: apparmor is enabled and all features are available
Feb  1 16:58:17 xubuntu snapd[6673]: backend.go:128: snapd enabled root filesystem on overlay support, additional upperdir permissions granted
Feb  1 16:58:17 xubuntu snapd[6673]: daemon.go:379: started snapd/2.39.2+18.04 (series 16; classic) ubuntu/18.04 (amd64) linux/5.0.0-23-generic.

Yritin googletella eri hakusanoilla vastauksia, mutta päätin, etten tuhlaa tämän asian analysointiin/selvittelyyn enempää aikaa. Teki mieli alkaa itkeä, kun ei näyttänyt mikään toimivan tai näkyvän missään. Ehkä tuossa lukee, että vlc-ohjelma poistettiin komentorivikehotteella. En nyt ala sitä sen enempää analysoimaan, vaan siirryn onnistuneisiin onnistumiseen ja epäonnistumiseen.

Päätin kokeilla jotakin muuta kuin ohjelmien asentamista. Loin kello 17.07 sudolle salasanan. En nyt yhtään muista, mitä komentoa käytin tai mistä löysin neuvon siihen (luultavasti tein komennolla passwd root, jos luen alla olevia lokeja oikein). var/log -> less auth.log lokista löytyi merkintä tapahtumasta:

Feb  1 17:04:53 xubuntu sudo:  xubuntu : TTY=pts/0 ; PWD=/var/log ; USER=root ; COMMAND=/usr/bin/apt-get install vlc
Feb  1 17:04:53 xubuntu sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Feb  1 17:04:58 xubuntu sudo: pam_unix(sudo:session): session closed for user root
Feb  1 17:07:24 xubuntu sudo:  xubuntu : TTY=pts/0 ; PWD=/ ; USER=root ; COMMAND=/usr/bin/passwd root
Feb  1 17:07:24 xubuntu sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Feb  1 17:07:28 xubuntu passwd[7000]: pam_unix(passwd:chauthtok): password changed for root
Feb  1 17:07:28 xubuntu passwd[7000]: gkr-pam: couldn’t update the login keyring password: no old password was entered
Feb  1 17:07:28 xubuntu sudo: pam_unix(sudo:session): session closed for user root

Tässä kohdassa haluan vain tuoda esille sen universaalin faktan, että omien heikkouksien ja virheiden myöntäminen on vahvuus. Tätä koko tehtävänantoa tekiessä tuli monta kertaa sellainen ”vitsi olen tyhmä” -hetki vastaan.

Ylläolevat lokit ovat siis auth.logista, jotka kopioin, mutten sen enempää analysoinut. Nyt kun niitä liitin tähän wordpressin taulukkoon, huomasin, että ihan ensimmäisellä rivillä lukee kirjaus VLC:n asentamisesta. Olin näköjään etsinyt lokimerkintää väärästä paikasta. Ehkä jossakin muualla on myös merkintä, mutta tuolla ainakin on siitä kirjaus.

Palataan salasanan muuttamiseen sudo:lle. Siitä tuli tällainen kirjaus: Feb  1 17:07:28 xubuntu passwd[7000]: pam_unix(passwd:chauthtok): password changed for root

Tämän sivun mukaan https://ackcent.com/blog/basics-linux-events-logging/ Linuxin lokimerkinnät kirjoitetaan yleensä tällaisella syntaksilla: TIMESTAMP HOSTNAME SERVICE [PID]: MESSAGE

”A PID is an acronym for process identification number on a Linux or Unix-like operating system. A PID is automatically assigned to each process when it is created. A process is nothing but running instance of a program and each process has a unique PID on a Unix-like system.” (lähde: https://www.cyberciti.biz/faq/howto-display-process-pid-under-linux-unix/)

Eli tässä tapauksessa: service = passwd & pid = numero 7000.

pam = the Pluggable Authentication Module (PAM) system. It allows programs that rely on authentication to be written independent of the underlying authentication scheme. (lähde: https://en.wikipedia.org/wiki/Pluggable_authentication_module)

pam_unix = Module for traditional password authentication (lähde: https://linux.die.net/man/8/pam_unix)

chauthtok = change authenthication token

passwd:chauthtok -kohdan analysoisin siis niin, että se ilmoittaa, mitä palvelulle tehdään eli vaihdetaan salasana tässä tapauksessa (tai annetaan sellainen).

Lokimerkintä siis ilmoittaa, että salasana vaihdettiin root:ille.

Seuraavaksi halusin kokeilla epäonnistunutta kirjautumista. Siihen tarvitsin uuden käyttäjän, jolle luon salasanan.

Loin käyttäjän komennolla sudo useradd Blingi. Seuraavat merkinnät tulivat auth.log:iin:

Feb  1 17:17:44 xubuntu sudo:  xubuntu : TTY=pts/0 ; PWD=/ ; USER=root ; COMMAND=/usr/sbin/useradd Blingi
Feb  1 17:17:44 xubuntu sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Feb  1 17:17:44 xubuntu useradd[7122]: new group: name=Blingi, GID=1000
Feb  1 17:17:44 xubuntu useradd[7122]: new user: name=Blingi, UID=1000, GID=1000, home=/home/Blingi, shell=/bin/sh
Feb  1 17:17:44 xubuntu sudo: pam_unix(sudo:session): session closed for user root

Sitten annoin käyttäjälle Blingi salasanan Blongo* komennolla sudo passwd Blingi (*tiedän, että salasana on huono, mutten nyt tässä vaiheessa jaksanut miettiä asiaa sen enempää, halusin vain päästä tehtävässä eteenpäin). Tämä sivu https://www.techwalla.com/articles/how-to-switch-users-in-a-linux-shell kertoi, miten pääsin vaihtamaan käyttäjiä eli kirjautumaan sisään Blingi-käyttäjänä. (selvennyksesi siis koirani nimi on Blingi ja Blongo on lempinimi, yhdessä ne ovat myös instagramini käyttäjänimi). Eli type ”su -” followed by a space and the target user’s username.

Sitten yritin kirjautua väärällä salasanalla:

Feb  1 17:22:00 xubuntu su[7218]: Successful su for Blingi by xubuntu
Feb  1 17:22:00 xubuntu su[7218]: + /dev/pts/0 xubuntu:Blingi
Feb  1 17:22:00 xubuntu su[7218]: pam_unix(su:session): session opened for user Blingi by (uid=999)
Feb  1 17:22:00 xubuntu su[7218]: pam_systemd(su:session): Cannot create session: Already running in a session
Feb  1 17:22:38 xubuntu su[7218]: pam_unix(su:session): session closed for user Blingi
Feb  1 17:22:49 xubuntu su[7253]: pam_unix(su:auth): authentication failure; logname= uid=999 euid=0 tty=/dev/pts/0 ruser=xubuntu rhost=  user=Blingi
Feb  1 17:22:51 xubuntu su[7253]: pam_authenticate: Authentication failure
Feb  1 17:22:51 xubuntu su[7253]: FAILED su for Blingi by xubuntu

Otetaan tuo ensimmäinen merkintä:

xubuntusu[7253]:pam_unix(su:auth)authentication failure; logname= uid=999 euid=0
tty=/dev/pts/0 ruser=xubuntu rhost=  user=Blingi
hostanameservicepidmoduuli(+ mitä tehdään palvelulle)message eli mitä tapahtui(analysoitu alla)

logname = current user’s login name

uid = user identifier

euid = effective user id

tty = ”teletypewriter”, the terminal one is using

/dev/pts/0 = shows that one is connected to the device file at /dev/pts/0

ruser ja rhost – yritin googlettaa, mutten löytänyt vastausta. Arvelen niiden olevan lyhenteet sanoista rootuser ja roothost, koska yritin tehdä käyttäjänvaihdosta xubuntu-userina.


b) Vapaaehtoinen kohta, ei ole opetettu vielä: Asenna SSH-demoni. Kokeile omalla ssh-palvelimellasi jotain seuraavista: ssh-copy-id, sshfs, scp tai git. (Helpoin lienee scp: ‘scp foo.txt tero@example.com:’)

Vaikka tämä kohta on vapaaehtoinen, yritin kuitenkin tehdä sen. (huom! yritin, en siis onnistunut omasta mielestäni). Aloitin komennolla ssh-copy-id, ennen kuin oli edes asentanut palvelinta.

xubuntu@xubuntu:/$ ssh-copy-id
Usage: /usr/bin/ssh-copy-id [-h|-?|-f|-n] [-i [identity_file]] [-p port] [[-o <ssh -o options>] …] [user@]hostname
    -f: force mode — copy keys without trying to check if they are already installed
    -n: dry run — no keys are actually copied
    -h|-?: print this help

Eli tuloksena oli neuvoja, miten tuota komentoa voi käyttää.

Sitten seurasin tämän sivun ohjeita ssh-palvelimen asentamisessa: https://www.cyberciti.biz/faq/ubuntu-linux-install-openssh-server/

  • 1.Open the terminal application for Ubuntu desktop.
  • 2. For remote Ubuntu server you must use BMC or KVM or IPMI tool to get console access
  • 3. Type sudo apt-get install openssh-server
  • 4. Enable the ssh service by typing sudo systemctl enable ssh
  • 5. Start the ssh service by typing sudo systemctl start ssh
  • 6. Test it by login into the system using ssh user@server-nam

Sain tehtyä kohdat 1.-5., mutta viimeistä kohtaa en ymmärtänyt, joten annoin tehtävän olla.


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

Tässä kohtaa olin väsertänyt tehtäviä yhtä putkeen varmaan alle sen pari tuntia, joten en henkisesti jaksanut enää miettiä unelmakomentoani. Tehtävänannossa jää myös epäselväksi, pitääkö asentaa yksi vai useampi ohjelma. Menin katsomaan, mitä kurssin muut opiskelijat olivat tehneet tässä kohtaa, joten kopioin Jussi Pelkosen vastausta (lähde: https://pelkjus.wordpress.com/2020/02/01/teht-2-komentorivi/ ), jossa hän oli samalla komennolla päivittänyt ja asentanut ohjelmat:

sudo apt-get update && sudo apt-get install vlc deluge gimp -y

(-y lopussa tarkoittaa, että assume yes)

Tämä on varmaan hyvä tapa asentaa ohjelmia.


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

Tämänkin osion tekeminen tuotti tuskaa, koska koneeni alkoi toimimaan hitaasti ja jopa pysähtyi kokonaan yhdessä vaiheessa. Sammuttamalla ja käynnistämällä koneen uudestaan se toimi taas hyvin. En nyt pysty sen enempää kertomaan, miksi näin tapahtui tai mikä aiheutti sen.

Käytin tätä sivua inspiraation lähteenä ohjelmille: https://www.tecmint.com/cool-linux-commandline-tools-for-terminal/

Aluksi yritin asentaa wikit -ohjelmaa. Tuli ilmoitus, ettei pakettia löydetty. Vianmääritystä tämän sivun ohjeiden mukaan: https://itsfoss.com/unable-to-locate-package-error-ubuntu/ Ohjelman nimi oli oikein kirjoitettu komentoriville eli se ei ollut ongelmana. Tässä vaiheessa kone alkoi toimia hitaasti (ei kirjoittanut mitään ja hiiri liikkui hitaasti). Seuraavana ohjeena oli päivittää komenolla sudo apt update, jolloin kone pysähtyi kokonaan ja jouduin sammuttamaan koneen.

Uudelleen käynnistämisen jälkeen sudo apt update -komento toimi ja kone ei hidastellut. En kuitenkaan pystynyt edelleenkään lataamaan wikit:iä. Vianmääritysohjeiden seuraavassa vaiheessa piti katsoa, mikä xubuntun versio minulla on ja yhden nettisivun kautta katsoa, onko kyseinen ohjelma saatavilla sille. Tässä vaiheessa olin jo, että perkele kun pitää näin vaikeaksi mennä. Menin sitten katsomaan software centeristä, saisinko ladattua sen sieltä. No, selvisi, ettei sitä edes ole siellä. *insert facepalm gif*

Sitten latasin sellaisia ohjelmia, jotka olivat saatavilla:

lolcat, joka muuttaa komentorivin värit sateenkaariväreiksi:

boxes, joka luo erilaisia laatikoita tekstien ympärille:

Figlet Toilet, joka muuttaa tekstin paksuiksi kirjaimiksi:


Lopulta sain kuin sainkin tehtävät tehtyä, vaikka se olikin välillä ahdistusta ja tuskaa.

Opin käyttämään ja etsimään tietoa lokeista. En ehkä osaa lukea niitä täydellisesti, mutta jotenkin ne ovat nyt vähän selkeytyneet.

Osaan tehdä vianmääritystä ja tiedän, että kannattaa aloittaa helpoimmasta syyllisestä kuin mennä vaikeamman kautta.

h1

h1

a)

Tein tämän harjoituksen omalla Lenovon Thinkpad x220 -kannettavallani.

Seurasin tämän ohjeita livetikun asentamisessa, koska opettajan ohjeet olivat vähän vajanaiset: https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-windows#0

Tein kyllä tunnilla muistiinpanoja opettajan ohjeista ja samoja asioita tuli tuossakin ohjeessa esille.

Asentaminen oli yksinkertaista:

Latasin Rufus-ohjelman, laitoin USB 3-muistitikun koneeseen kiinni, jolloin ohjelma havaitsi sen. Sitten latasin XUbuntun (xubuntu-18.04.3-desktop-amd64.iso), johon meni muutama minuutti. Rufus-ohjelmassa valitsin ladatun xubuntun ja painoin Startia. Tällöin tuli muutama varoitus: Syslinuxin versioista tuli varoituksia, että piti ladata joitakin tiedostoja, joiden avulla UXubuntu toimisi. ISOHybrid imagesta eli miten se voidaan kirjoittaa joko ISO imagena tai DD imagena. Käytin sen ehdottamaa ISO Image moodia.

Ennen desktopin avausta yritin tehdä varmennuskopion tietokoneestani varmuuden vuoksi. Tämä kohta opetti minulle sen, ettei tehtäviä kannata jättää palautusta edeltävään päivään/iltaan, sillä varmuuskopiointi kesti huomattavan kauan. Sain ainakin sitä odotellessa tehtyä muita koulutehtäviä. Käyttämäni ulkoinen kovalevy olikin viallinen, joten varmuuskopion tekeminen ei edes onnistunut. Hukkasin tähän kohtaan monta tuntia. Ehdin käydä myös salilla siinä välissä.

Olin myös ymmärtänyt tehtävän väärin. Xubuntua ei tarvinnut asentaa koneelle, vaan sitä käyttämällä try-muodossa sai tehtävät tehtyä.

b) 

Avasin terminal emulatorin, johon laitoin komennon ”sudo lshw -short -sanitize”, jolloin sain seuraavat tiedot koneestani:

H/W path                                     Device                Class                  Description

================================================================

                                                      system              4291F28

/0                                                  bus                     4291F28

/0/1                                              processor         Intel(R) Core(TM) i5-2540M

/0/1/2                                          memory            64KiB L1 cache

/0/1/3                                          memory            256KiB L2 cache

/0/1/4                                          memory            3MiB L3 cache

/0/5                                              memory            4GiB System Memory

/0/5/0                                          memory            4GiB SODIMM DDR3 Synchronou

/0/5/1                                          memory            DIMM [empty]

/0/d                                              memory            128KiB BIOS

/0/100                                         bridge                2nd Generation Core Process

/0/100/2                                     display               2nd Generation Core Process

/0/100/16                                   communication  6 Series/C200 Series Chipse

/0/100/16.3                               communication  6 Series/C200 Series Chipse

/0/100/19                                    enp0s25            network            82579LM Gigabit Network Con

/0/100/1a                                   bus                     6 Series/C200 Series Chipse

/0/100/1a/1                                usb1                   bus                     EHCI Host Controller

/0/100/1a/1/1                          bus                     Integrated Rate Matching Hu

/0/100/1a/1/1/2                        scsi6                   storage              DataTraveler 3.0

/0/100/1a/1/1/2/0.0.0            /dev/sdb   disk                            15GB DataTraveler 3.0

/0/100/1a/1/1/2/0.0.0/0         /dev/sdb   disk                            15GB

/0/100/1a/1/1/2/0.0.0/0/1  /dev/sdb1  volume                     14GiB Windows FAT volume

/0/100/1a/1/1/6                      multimedia      Integrated Camera

/0/100/1b                                   multimedia      6 Series/C200 Series Chipse

/0/100/1c                                   bridge                6 Series/C200 Series Chipse

/0/100/1c.1                                bridge                6 Series/C200 Series Chipse

/0/100/1c.1/0                             wlp3s0               network            Centrino Advanced-N 6205 [T

/0/100/1c.3                                bridge                6 Series/C200 Series Chipse

/0/100/1c.4                                bridge                6 Series/C200 Series Chipse

/0/100/1c.4/0                           generic              MMC/SD Host Controller

/0/100/1d                                   bus                     6 Series/C200 Series Chipse

/0/100/1d/1                                usb2                   bus                     EHCI Host Controller

/0/100/1d/1/1                          bus                     Integrated Rate Matching Hu

/0/100/1d/1/1/2                      input                  USB Optical Mouse

/0/100/1f                                    bridge                QM67 Express Chipset LPC Co

/0/100/1f.2                                storage              6 Series/C200 Series Chipse

/0/100/1f.3                                bus                     6 Series/C200 Series Chipse

/0/0                                               scsi0                   storage               

/0/0/0.0.0                                    /dev/sda   disk                            240GB KINGSTON SHFS37A

/0/0/0.0.0/1                                /dev/sda1  volume                    100MiB Windows NTFS volume

/0/0/0.0.0/2                                /dev/sda2  volume                    222GiB Windows NTFS volume

/0/0/0.0.0/3                                /dev/sda3  volume                    628MiB Windows NTFS volume

/1                                                  power                42T4940

c)

Kokeilin ensimmäisen ohjelman latauksessa komentoriviä. Ensiksi yritin komennolla sudo apt-get install FocusWriter, mutta se ei tunnistanut isoja kirjaimia. Pienillä se sitten onnistui. Kirjoittaminen onnistui ohjelmalla hyvin.

Yritin ladata Gnumericin (Excel-tyyppinen sovellus) software centeristä, mutta se epäonnistui, koska joku extension ei ollut saatavilla xubuntun versiolleni.

Latasin Celtx-käsikirjoitusohjelman software centerin kautta. Sen lataus onnistui ja se toimi niin kuin piti.

d)

Kaikilla kolmella ohjelmalla oli eri lisenssit.

FocusWriter:

  • Free Software
  • This means that the software can be freely run, copied, distributed, studied and modified.
  • Users are bound by the following license: GPL-3.0+
  • https://spdx.org/licenses/GPL-3.0+

Gnumeric:

  • Free Software
  • This means that the software can be freely run, copied, distributed, studied and modified.
  • Users are bound by the following license: Free Software
  • https://ubuntu.com/licensing

Celtx:

  • Free Software
  • This means that the software can be freely run, copied, distributed, studied and modified.
  • Users are bound by the following license: MPL-2.0
  • https://spdx.org/licenses/MPL-2.0

e)

Chrome, web selain, Firefox

Adobe Photoshop, kuvamuokkaus, GNU Image Manipulation Program

Google Maps, karttapalvelu, Maps

Design a site like this with WordPress.com
Aloitus