Author: Simo Suominen


Palvelinten hallinta – kotitehtävät 4


Palvelinten hallinta kotitehtävät 4

Lähde  Tero Karvinen 2017: Linux kurssi, http://terokarvinen.com

Harjoitusympäristönä asennettu Xubuntu 16.04, Xenial Xerus

Harjoituskoneen tiedot:

Emolevy X79A-GD65 (8D)

Prosessori Intel(R) Core(TM) i7-3930K

16GiB RAM

 

Puppet: Master-slave.

Aloita tyhjästä koneesta. Tee yhdestä koneesta orja ja toisesta herra. Kokeile, että orja saa herralta modulin. (Voit käyttää labraa, kun se on tyhjä. Laita mukaan ‘puppet cert –list –all’, ‘tail /var/log/auth.log’, ‘tail /var/log/syslog’).

Harjoitustyön tavoitteena on toteuttaa Puppet keskitetyn hallinnan ratkaisu niin, että master-palvelima toimii virtuaalipalvelin. Master- ja orjakoneitten asetukset määritellään niin, että orja noutaa sille määritellyt moduulit virtuaalipalvelimelta.

Lähtötilanteessa virtuaalipalvelimelle on asennettu valmiiksi Ubuntu 16.04 Xenial Xerus -käyttöjärjestelmä. Palvelimen tietoturvaa on parannettu ottamalla palomuuri käyttöön ja luomalla uusi sudo-käyttäjä + lukitsemalla root-käyttäjä. Toimenpiteiden tarkempi kuvaus löytyy Linux-palvelinten kurssin kotitehtävistä. Tämän lisäksi domainin DNS-asetukset on määritelty niin, että osoite puppet.simosuominen.com osoittaa virtuaalipalvelimen IP-osoitteeseen.

Masterkoneen asetukset

Harjoitus aloitettiin määrittelemällä masterkoneen asetukset, lähteenä käytettiin Tero Karvisen artikkelia. Masterkoneelle oli otettu yhteys SSH:n kautta.

$ sudo apt-get update && sudo apt-get -y install puppetmaster //master-ohjelmiston asennus

$ sudo service puppetmaster stop //master-palvelun pysäytys


$ sudo rm -r /var/lib/puppet/ssl //vanhojen sertifikaattien poisto

$ sudoedit /etc/puppet/puppet.conf //Puppet asetustiedoston muokkaus

Master-ohjelmiston asennuksen jälkeen asennettu palvelu pysäytettiin ja luodut sertifikaatit poistettiin. Koska Puppetin asetustiedosto oli vajavainen, sertifikaateista puuttui oikea DNS-nimi. Puppet.conf -tiedostoon, [master] -rivin alle lisättiin rivi osoittamaan oikeaan DNS-osoitteeseen:

dns_alt_names = puppet.simosuominen.com

Tämän jälkeen puppetmaster -palvelu käynnistettiin uudelleen, jolloin uusi sertifikaatti luotiin automaattisesti uudelleen.

$ sudo service puppetmaster restart

Lopuksi luotiin yksinkertainen moduuli kansioon /etc/puppet/modules. Moduuli luo /tmp/helloworld.txt -tiedoston kun se ajetaan. Tämän jälkeen muokattiin vielä /etc/puppet/manifests/site.pp -tiedostoa seuraavalla rivillä:

class {"helloworld":}

Lopputuloksena kaikki masterkoneeseen yhteyttä ottavat orjakoneet ajavat helloworld -moduulin omissa laitteissaan.

Orjakoneen asetukset

Orjakoneena käytettiin ikivanhaa Asus eeePc -kannettavaa, johon oli asennettu 32-bittinen Xubuntu 16.04 LTS käyttöjärjestelmä. Orjakoneen asetusten asentaminen aloitettiin asentamalla puppet ja muokkaamalla tarvittavia asetuksia.

$ sudo apt-get update && sudo apt-get -y install puppet //puppet-ohjelman asennus

$ sudo service puppet stop //puppet-palvelun pysäytys

$ sudoedit /etc/puppet/puppet.conf //asetustiedoston muokkaus

Sekä herra- että orjakoneen asetustiedosto on saman niminen. Orjakoneen asetukset tehdään luomalla tiedostoon [agent] -rivi, jonka alle tehdään halutut asetukset.

[agent]

server = puppet.simosuominen.com

Seuraavaksi käynnistettiin puppet-palvelu uudelleen sekä testattiin asetuksia.

$ sudo service puppet start //palvelun käynnistys


$ sudo puppet agent -tvd //asetusten testaus (-tvd = --test --verbose --debug)

Testistä saatiin aikaan seuraava virheilmoitus:

Samalla hetkellä tajuttiin, että virtuaalipalvelimen palomuuriin ei ole puhkaistu reikää Puppetin oletusporttia varten. Kirjautumalla virtuaalipalvelimelle ja avaamalla tarvittava portti päästiin harjoituksessa eteenpäin. Seuraavaksi ajettiin testikomento uudestaan ja saatiin uusi ilmoitus:

Exting: no certificate found and waitforcert is disabled.

Testikomennon debug-lokeja tutkimalla saatiin selville, että orjakone oli luonut sertifikaattipyynnön herrakoneelle. Kirjauduttiin taas herrakoneelle ja tutkittiin asiaa.

$ sudo puppet cert list //avattiin sertifikaattipyynnöt, joihin ei ole vastattu

Listalta löytyi host nimi 1001px, joka tunnistettiin vanhaksi surkeaksi orjakoneeksi. Hyävksyttiin ks. sertifikaattipyyntö.

$ sudo puppet cert --sign 1001px

Sertifikaatin hyväksymisen jälkeen herra- ja orjakoneen välille on luotu luottamussuhde. Jatkettiin ajamalla vanha tuttu testikomento orjakoneella. Tuloksena kolmas, informatiivinen virheilmoitus, joka neuvoi ottamaan puppet agentin käyttöön, sillä ks. palvelu on oletuksena pois käytöstä. Ajettiin lisää komentoja:

$ sudo puppet agent --enable //puppet agentin käyttöönotto

$ sudo puppet agent -tvd //asetusten testaus

Viides kerta, ja komento saatiin ajettua ilman virheilmoutksia. Seuraavaksi tutkittiin moduulin tekemiä muutoksia orjakoneella komennolla sudo cat /tmp/helloworld.txt

Hello world! Sekä herra- että orjakoneen Puppet-asetukset saatiin onnistuneesti toimimaan.

 

 

 

 

 

 

 

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

Simo Suominen


Palvelinten hallinta – kotitehtävät 3


Palvelinten hallinta kotitehtävät 3

Lähde  Tero Karvinen 2017: Linux kurssi, http://terokarvinen.com

Harjoitusympäristönä asennettu Xubuntu 16.04, Xenial Xerus

Harjoituskoneen tiedot:

Emolevy X79A-GD65 (8D)

Prosessori Intel(R) Core(TM) i7-3930K

16GiB RAM

Modulit Gitistä. Tee skripti, jolla saat nopeasti modulisi kloonattua GitHubista ja ajettua vaikkapa liverompulle. Voit katsoa mallia terokarvinen/nukke GitHub-varastosta.

Harjoituksen tavoitteena oli varmistaa, että moduulit ovat saatavilla eri laitteilla ja nopeasti otettavissa käyttöön missä tahansa. Harjoituksen lähtötilanteessa moduuleilla oli oma Github repository puppet.

Livetikulle tallennettiin scripts -kansioon getgit -skripti. Vaihtoehtoisesti sama skripti löytyy Githubista. Skripti ajaa apt-get update -komennon, asentaa git ja puppet -paketit sekä kloonaa käyttäjän puppet-repositoryn käyttäjän kotikansioon. . Livetikkua käytettäessä moduulit saadaan käyttöön esim. seuraavasti:

$ wget https://raw.githubusercontent.com/suomisim/puppet/master/getgit

$ sudo bash getgit

Käyttäjälle oli nyt asennettu tarvittavat ohjelmat moduulien käyttöönottoa varten. Moduulien luonti, kopiointi ja ajaminen suorittiin tämän jälkeen skriptien avulla. Moduulit luodaan käyttäjän kotihakemistoon puppet/modules/ -kansioon, josta ne siirretään ajettavaksi /etc/puppet/modules/ -kansioon. Käytetyt skriptit löytyvät GitHubista.

Package-File-Server. Asenna ja konfiguroi jokin demoni package-file-server -tyyliin. Tee jokin muu asetus kuin tunnilla näytetty sshd:n portin vaihto.

Harjoitustyön tavoitteena oli asentaa LAMP. Toinen tavoite oli kerrankin suorittaa yksi pieni osa asennuksesta kerrallaan, jolloin virheiden selvittäminen olisi huomattavasti helpompaa. Tehtävän kaikki vaiheet käydään läpi, mutta yksinkertaisimpia komentoja on jätetty pois selkeyden vuoksi. Osa komennoista tehdään skriptien avulla (moduulien kansioiden luonti, moduulien kopiointi ja suorittaminen jne.)

Harjoituksen tavoite täyttyi ja moduuli asentaa LAMP -ohjelmistot onnistuneesti. Moduulia ei voi suositella laajempaan käyttöön koska se ei ole tietoturvan kannalta optimaalinen eikä sitä vielä ole testattu kuin testikokoonpanolla.

Apache asennus

Aloitettiin luomalla apache2 -paketin asennus moduuliin.

class lamp {
    
    package { 'apache2':
        ensure => 'installed',
    }
}

Moduulin suorittaminen onnistui ilman virheilmoituksia ja osoitteesta http://localhost saatiin näkyviin Apachen aloitussivu. Seuraavaksi otettiin käyttöön käyttäjän kansio, johon moduuli siirtää halutun websivun templates-kansiosta. Templates-kansioon luotiin yksinkertainen html-sivu index.html.erb. Käyttäjän kansion käyttöönottoon haettiin vinkkejä Lauri Soivin blogista. Alla päivitetty init.pp.

class lamp {
    
    package { 'apache2':
        ensure => 'installed',
    }
#
#    file { '':
#        content => template(''),
#        notify => Service[''],
#        require => Package[''],
#
#    }
#    
    service { 'apache2':
        ensure  => 'true',
        enable  => true,
        require => Package['apache2'],
    }




    file { '/home/suomisim/public_html':
        ensure => 'directory',
     
    }
    
    
    file { '/home/suomisim/public_html/index.html':
        content => template('lamp/index.html.erb'),
        require => File['/home/suomisim/public_html'],
    
    
    }
    
    file { '/etc/apache2/mods-enabled/userdir.load':
        ensure => 'link',
        target => '/etc/apache2/mods-available/userdir.load',
        notify => Service["apache2"],
        require => Package["apache2"],
    }

    file { '/etc/apache2/mods-enabled/userdir.conf':
        ensure => 'link',
        target => '/etc/apache2/mods-available/userdir.conf',
        notify => Service["apache2"],
        require => Package["apache2"],
        }




}

Moduulin ajon jälkeen websivu osoitteessa http://localhost/~suomisim näytti halutun sivun. Tämän jälkeen moduuli valitettavasti toimii ainoastaan käyttäjällä suomisim. Käyttäjästä riippumattomiin ratkaisuihin täytyy palata myöhemmin. Tässä vaiheessa ajettiin commit-skripti, jotta pystyttäisiin palaamaan toimivaan moduulin versioon tarvittaessa.

PHP asennus

Aloitettiin PHP asennus lisäämällä seuraavat rivit edelliseen init.pp -tiedostoon:

    package {'libapache2-mod-php':
        ensure => installed
    }

Tämän jälkeen moduuli ajettiin uudestaan. Tämä tehtiin siksi, että päästäisiin käsiksi asennuksen mukana tulleeseen asetustiedostoon php7.0.conf. Tämä tiedosto kopioitiin moduulin templates-kansioon ja annettiin sille jälleen .erb -pääte. Tiedostoa muokattiin niin, alla oleville riveille lisättiin kuvan mukaisesti kommenttimerkki #:

Selection_005.png

Näin saatiin PHP toimimaan myös käyttäjän kansioissa. Tämän jälkeen tehtiin tarvittavat muutokset init.pp -tiedostoon. Muutokset liittyivät /etc/apache2/mods-available/php7.0.conf -tiedoston muokkaukseen. Tämän lisäksi .html -tiedostot vaihdettiin .php tiedostoiksi sekä index.php.erb -tiedostoon lisättiin yksinkertainen php -koodi:

          <?php
              echo "Hello World!";
          ?>
class lamp {

 package { 'apache2':
 ensure => 'installed',
 }

 service { 'apache2':
 ensure => 'true',
 enable => true,
 require => Package['apache2'],
 }


 file { '/home/suomisim/public_html':
 ensure => 'directory',

 }


 file { '/home/suomisim/public_html/index.php':
 content => template('lamp/index.php.erb'),
 require => File['/home/suomisim/public_html'],


 }

 file { '/etc/apache2/mods-enabled/userdir.load':
 ensure => 'link',
 target => '/etc/apache2/mods-available/userdir.load',
 notify => Service["apache2"],
 require => Package["apache2"],
 }

 file { '/etc/apache2/mods-enabled/userdir.conf':
 ensure => 'link',
 target => '/etc/apache2/mods-available/userdir.conf',
 notify => Service["apache2"],
 require => Package["apache2"],

 }


 package {'libapache2-mod-php':
 ensure => installed
 }

 file { '/etc/apache2/mods-available/php7.0.conf':
 content => template('lamp/php7.0.conf.erb'),
 require => Package["libapache2-mod-php"],
 notify => Service["apache2"],
 }

}

Moduulin ajon jälkeen luotu index.php -tiedosto toimi osoitteessa http://localhost/~suomisim. Tässä vaiheessa tehtiin taas git commit -toimenpiteet. Moduulista otettiin git -kansioon vielä kopio nimellä phpapache, koska moduuli toimi hyvin.

MySQL asennus

Jatkettiin LAMP -asennusta asentamalla MySQL -tietokantaohjelmisto sekä tarvittavat PHP-kilkkeet (php-mysql -paketti). Ongelmana MySQL -asennuksessa oli root-käyttäjän salasanan asetus asennusvaiheessa. Tässä vaiheessa kurssia osaaminen ei riittänyt salasanan piilottamiseen mihinkään vaan se tallennettiin selkokielellä init.pp -tiedostoon. Tämä oli tietoturvariski, mutta moduuli haluttiin saada toimivaksi harjoitusta varten. Alla on nähtävissä viimeinen versio init.pp -tiedoston sisällöstä.

class lamp {

     
    package { 'apache2':
        ensure => 'installed',
    }
   
    service { 'apache2':
        ensure  => 'true',
        enable  => true,
        require => Package['apache2'],
    }

    file { '/home/suomisim/public_html':
        ensure => 'directory',

    }
    
    
    file { '/home/suomisim/public_html/index.php':
        content => template('lamp/index.php.erb'),
        require => File['/home/suomisim/public_html'],
    
    }
    
    file { '/etc/apache2/mods-enabled/userdir.load':
        ensure => 'link',
        target => '/etc/apache2/mods-available/userdir.load',
        notify => Service["apache2"],
        require => Package["apache2"],
    }

    file { '/etc/apache2/mods-enabled/userdir.conf':
        ensure => 'link',
        target => '/etc/apache2/mods-available/userdir.conf',
        notify => Service["apache2"],
        require => Package["apache2"],
    }

    package {'libapache2-mod-php':
        ensure => 'installed',
    }
    
    file { '/etc/apache2/mods-available/php7.0.conf':
        content => template('lamp/php7.0.conf.erb'),
        require => Package["libapache2-mod-php"],
        notify => Service["apache2"],
    }
    
    package {'mysql-server':
        ensure => 'installed',
    }

    $mysqlpw = "ChangeOnFirstStart!"

    exec { 'mysqlpw':
        path => ["/bin", "/usr/bin"],
        command => "mysqladmin -uroot password $mysqlpw",
        require => Package["mysql-server"],
    }
    
    service { 'mysql':
        ensure  => 'true',
        enable  => 'true',
        require => Package['mysql-server'],
    }
    
    package {'php-mysql':
        ensure => 'installed',
        require => Package['mysql-server'],
    }
        
}

Moduuli toimi ilman virheilmoituksia. Poikkeuksena käsin suoritettuun MySQL -asennukseen kirjautuminen root-tunnuksilla vaati sudo-käyttäjänä kirjautumista. Kun tietokantaan luotiin uusi käyttäjä, käyttäjänä oli mahdollista kirjautua ohjelmaan myös ilman sudo-oikeuksia. Yllä oleva koodi jäi ensimmäiseksi versioksi lamp-moduulista. Koodiin jäi kehittämistä, mm. käyttäjäsidonnaisuuden poistaminen, tietoturvan parantaminen sekä yleinen koodin siistiminen sekä riippuvuuksien korjaaminen/parantaminen.

Vapaaehtoinen: Vaihda Apachen default VirtualHost Puppetilla siten, että sivut ovat jonkun kotihakemistossa ja niitä voi muokata normaalin käyttäjän oikeuksin.

Harjoitus tuli toteutettua edellisessä harjoituksessa.

Vapaaehtoinen vaikea: Konfiguroi jokin muu demoni (kuin Apache tai SSH) Puppetilla.

 

 

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

Simo Suominen


Palvelinten hallinta – kotitehtävät 2


Palvelinten hallinta kotitehtävät 2

Lähde  Tero Karvinen 2017: Linux kurssi, http://terokarvinen.com

Harjoitusympäristönä asennettu Xubuntu 16.04, Xenial Xerus

Harjoituskoneen tiedot:

Emolevy X79A-GD65 (8D)

Prosessori Intel(R) Core(TM) i7-3930K

16GiB RAM

Näytönohjain GeForce GTX 690

Tee puppet-moduli, joka tekee asetukset jollekin komentorivi- tai graafisen käyttöliittymän ohjelmalle.

Harjoitustyön tavoitteena on tehdä käytännönläheinen moduuli muokkaamaan Xubuntun käyttöliittymää haluttuun suuntaan. Lopullisena tavoitteena on moduuli, jonka voi ajaa esim. livetikulla tai heti ensimmäisenä uudelleen asennetulle Xubuntulle. Muutokset saattavat olla pieniä, mutta niiden tekeminen erikseen joka kerta vie aikaa. Testikoneella oli tehty muutoksia mm. käynnistysvalikkoon ja työpöytään, joten kopioimalla näiden asetustiedostot moduuliin tehdyt muutokset saatiin monistettua.

Harjoitustyössä hyödynnettiin Git -versionhallintaa, joten työskentelykansiona toimi käyttäjän kotihakemisto. Näin ollen moduulit luotiin ja niitä muokattiin ilman sudo-oikeuksia. Ennen moduulien testausta ne siirrettiin /etc/puppet/modules/ -kansioon ja ajettiin sudo-oikeuksilla.

Tehtävä alotettiin ottamalla käyttöön käyttäjän Github-varasto Puppet-moduuleille:

$ git clone https://github.com/suomisim/puppet

Työpöydän asetukset

Pikaisen googletuksen perusteella Xfce4 työpöydän ja käynnistysvalikon asetukset löytyivät polulta /home//.config/xfce4/. Talteen päätettiin ottaa käynnistysvalikon asetustiedosto whiskermenu-1.rc ja komentokehotteen asetustiedosto terminalrc. Harjoituksessa luotiin Puppet-moduuli settingsmod, joka siirtää asetustiedostot oikeaan paikkaan ja näin asettaa asetukset voimaan. Asetustiedostoihin ei tehty muutoksia, koska halutut muutokset oli jo tehty graafiseen käyttöliittymään.

$ cd
$ mkdir settingsmod
$ cd settingsmod
$ mkdir manifests
$ mkdir templates
$ cd manifests
$ nano init.pp

init.pp -tiedostoon kirjattiin seuraava pätkä koodia:

class settingsmod {

    	file {'/home/suomisim/.config/xfce4/panel/whiskermenu-1.rc':
            content => template('settingsmod/whiskermenu-1.rc.erb')

    	}

    	file {'/home/suomisim/.config/xfce4/terminal/terminalrc':
            content => template('settingsmod/terminalrc.erb')

    	}


}

Seuraavaksi kopioitiin asetustiedostot template-kansioon oikeassa muodossa (.erb)

cp terminalrc /home/suomisim/puppet/settingsmod/templates/terminalrc.erb
cp whiskermenu-1.rc /home/suomisim/puppet/settingsmod/templates/whiskermenu-1.rc.erb

Lopuksi kopioitiin moduuli /etc/puppet/modules -kansioon. Ennen moduulin ajamista muokattiin komentokehotteen ja käynnistysvalikon asetuksia, jotta nähtäisiin että asetukset muuttuvat takaisin. Komentokehotteen kokoa muutettiin pienemmäksi (Preferences -> Appearance -> Default geometrics) ja käynnistysvalikosta Favourites -pikakuvakkeista poistettiin pari kuvaketta. Seuraavaksi ajettiin moduuli komennolla:

$ sudo puppet apply -e 'class {"settingsmod":}'

Moduuli toimi ilman virheilmoituksia. Avaamalla uuden komentokehotteen voitiin todeta, että muutettu asetus oli palannut takaisin “oikeaksi”. Käynnistysvalikon muutokset astuivat voimaan vasta uudelleenkäynnistyksessä, joten livetikun konfigurointiin moduuli soveltuu kehnosti. Uuudelleenkäynnistyksen jälkeen poistetut pikakuvakkeet olivat palanneet valikkoon, joten moduuli toimii ainakin jollain tasolla.

Toimiva moduuli + muut harjoitusmoduulit siirrettiin lopuksi Githubiin alla olevilla komennoilla:

$ git add *
$ git commit
$ git pull
$ git push 

Harjoitustyö on nähtävissä myös GitHubissa

 

 

 

 

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html        Simo Suominen


Palvelinten hallinta kotitehtävät 1


Palvelinten hallinta kotitehtävät 1

Lähde  Tero Karvinen 2017: Linux kurssi, http://terokarvinen.com

Harjoitusympäristönä asennettu Xubuntu 16.04, Xenial Xerus

Harjoituskoneen tiedot:

Emolevy X79A-GD65 (8D)

Prosessori Intel(R) Core(TM) i7-3930K

16GiB RAM

Näytönohjain GeForce GTX 690

Tee ja testaa moduli, joka käyttää ainakin kahta eri resurssia (esim. file ja package)

Harjoitustyön tavoiteena oli asentaa Puppet ja testata asennettua ohjelmaa luomalla yksinkertainen moduli. Aloitettiin asennuksella ja tarvittavien kansioiden luonnilla.

$ sudo apt-get update

$ sudo apt-get -y install puppet //asennus

$ sudo mkdir -p /etc/puppet/modules/simotest/manifests/ //luotiin tarvittavat kansiot


$ sudoedit /etc/puppet/modules/simotest/manifests/init.pp //avattiin muokattavaksi moduulia varten tarvittava tiedosto

Harjoitusta varten luotiin moduuli, joka loi tiedoston tmp -kansioon ja kirjoitti tiedostoon lauseen tekstiä. Lisäksi moduuli ajoi komennon apt-get update. Lopuksi moduuli asensi paketit ‘vlc’, ‘curl’ ja ‘lynx’. Jos paketit olivat jo asennettuna, moduuli varmisti, että ne ovat myös päivitetty uusimpaan versioon. Alla on nähtävissä tiedoston sisältö.

class simotest {

    file {"/tmp/hellosimo2":                #tiedoston luonti
     content => "Hello again, Simo!\n",        #tiedoston sisältö
    }

    exec { 'apt-update':                    #komento
     command => '/usr/bin/apt-get update'    #komennon polku
    }

    $paketit = [ 'vlc', 'curl', 'lynx' ]    #asennettavien pakettien kuvaus

    package { $paketit: ensure => 'latest'    #pakettien asennus

    }

}

Moduuli ajettiin komennolla sudo puppet apply -e ‘class {“simotest”:}’

Lopuksi testattiin, että moduulin tekemät muutokset toimivat. Asennetut ohjelmistot löytyivät testikoneelta ja luodun tiedoston sisältö saatiin esiin komennolla cat /tmp/hellosimo2.

Lähteet: Puppet Cookbook

Vapaaehtoinen: Tärkeimmät resurssit. Tee moduleja, jotka käyttävät resursseja package, file, service, user, exec

Harjoitusta jatkettiin käyttämällä edellisen harjoituksen modulia pohjana. Seuraavaa moduulia varten luotiin kansiot /etc/puppet/modules/simotest2/manifests/. Alkuperäiseen moduliin lisättiin user ja service resurssit. Tässä tapauksessa moduli varmistaa, että cron-palvelu on päällä ja luo testuser -käyttäjätunnuksen sekä tälle kotihakemiston.

class simotest2 {

    file {"/tmp/hellosimo2":                #tiedoston luonti
     content => "Hello again, Simo!\n",        #tiedoston sisältö
    }

    exec { 'apt-update':                    #komento
     command => '/usr/bin/apt-get update'    #komennon polku
    }

    $paketit = [ 'vlc', 'curl', 'lynx' ]    #asennettavien pakettien kuvaus

    package { $paketit: ensure => 'latest'    #pakettien asennus
    
    }

    service { 'cron':                        #palvelun nimi
     ensure => 'running',                    #varmistetaan, että palvelu on päällä ja käynnistyy uudestaan jos näin vaaditaan
    
    }
    
    user { 'testuser':                        #käyttäjätunnus
     ensure => present,
     comment => 'Testi Käyttäjä',            #koko nimi
     home => '/home/testuser',                #kotihakemisto
     managehome => true                        #kotihakemiston käyttöönotto
    }
    
}

Moduuli ajettiin komennolla sudo puppet apply -e ‘class {“simotest2”:}’

Komennolla cut -d: -f1 /etc/passwd saatiin kaikki käyttäjät näkyville ja voitiin todeta, että käyttäjä testuser löytyy listalta. Palvelun toiminnan varmistaminen testattiin pysäyttämällä palvelu komennolla sudo service cron stop. Kun moduuli ajettiin tämän jälkeen debug-tilassa komennolla puppet apply -e ‘class {“simotest2”:}’ –verbose –debug saatiin esille seuraavat rivit:

Debug: Executing '/bin/systemctl is-active cron'
Debug: Executing '/bin/systemctl start cron'
Notice: /Stage[main]/Simotest2/Service[cron]/ensure: ensure changed 'stopped' to 'running'
Debug: /Stage[main]/Simotest2/Service[cron]: The container Class[Simotest2] will propagate my refresh event
Info: /Stage[main]/Simotest2/Service[cron]: Unscheduling refresh on Service[cron]
Debug: Class[Simotest2]: The container Stage[main] will propagate my refresh event

Cron-palvelun uudelleenkäynnistyminen varmistettiin vielä komennolla sudo service cron status.

Lähteet: Puppet Cookbook

Vapaaehtoinen: Oikeaa elämää. Ratkaise jokin yksinkertainen oikean elämän ongelma Puppetilla. Esimerkiksi asenna jokin työpöytä- tai komentoriviohjelma ja tee siihen säädöt.

HUOM! Tehtävä päivitetty 13.4.2017

Ongelma: Elämä ilman mainosten estoa verkkoselaimessa on kurjaa. Ratkaisu: Yksinkertainen Puppet-moduuli, joka muokkaa Firefoxin asetuksia ja asentaa Ublock Origin -mainostenestolisäosan automaattisesti. Moduuli luotiin käyttäjän puppet-kansioon ja siirrettiin se ajettavaksi /etc/puppet/modules -kansioon. Moduuli luotiin skriptin avulla. Skripti loi annetun nimen mukaan moduulin ja tarvittavat kansiot sekä init.pp -tiedoston. Skripti make löytyy käyttäjän GitHubista. Lähteenä harjoituksessa käytettin M. Selvisen WordPress-sivua aiheesta.

init.pp -tiedoston sisältö:

class firefox { 

    package { 'xul-ext-ublock-origin':
        ensure => 'installed',
        require => Package['firefox'],
    }

    
    package { 'firefox':
        ensure => 'installed',
    }

    file { '/etc/firefox/syspref.js':
        content => template('firefox/syspref.js.erb'),
        notify => Service['firefox'],
        require => Package['xul-ext-ublock-origin'],

    }
    
    service { 'firefox':
#        ensure  => 'true',
#        enable  => 'true',
        require => Package['firefox'],
        provider => 'systemd',
    }

}

Lähteen avulla selvisi, että tiedostoon /etc/firefox/syspre.js täytyi tehtä muutoksia, jotta lisäosa asentuu ilman ongelmia. Lisäys tehtiin kopioimalla ks. tiedosto moduulin templates-kansioon .erb -päätteellä ja lisäämällä seuraava rivi uuteen tiedostoon:

user_pref(“xpinstall.signatures.required”, false);

Luotu moduuli kopioitiin skriptin avulla /etc/puppet/modules -kansioon ja ajettiin toisen skriptin avulla. Uudelleenkäynnistyksen jälkeen Ublock Origin oli otettu käyttöön selaimessa.

Katso video esim. Puppetista ja toisesta vastaavasta järjestelmästä (esim. Salt) ja kirjoita niistä analyyttinen ja vertaileva kirjoitus.

Harjoitusta varten valittiin video keskitetyn hallinnan järjestelmästä/järjestelmistä. Tämän jälkeen tutustuttiin videon sisältöön ja pyrittiin analysoimaan sen sisältöä. Kohdevideoksi valittiin Edurekan toteuttama video, jossa verrattiin neljän eri hallintajärjestelmän ominaisuuksia. Edureka on Intiassa 2011 perustettu interaktiiviseen opetukseen erikoistunut yritys, joka tarjoaa kursseja IT-ammattilaisille. (lähde). Video on julkaistu 19.12.2016, joten sitä voidaan pitää ajankohtaisena.

Videossa vertailtiin Chef, Puppet, Ansible ja SaltStack -hallintajärjestelmiä. Vertailtavat osa-alueet olivat skaalautuvuus, käyttöönoton helppous, saatavuus, hallinta ja yhteentoimivuus.

Skaalautuvuus (Scalability)

Skaalautuvuudella tarkoitettiin mahdollisuutta konfiguroida vaihtelevia määriä laitteita ja videon mukaan jokainen palvelu pystyy suoriutumaan tästä erinomaisesti.

Asennuksen helppous (Ease of Setup)

Sekä Puppet, Chef että SaltStack toimivat Master – Slave -periaatteella. Nämä järjestelmät vaativat omat ohjelmistonsa master-servereille ja orjakoneissa pyörii myös oma ohjelmisto. Ansible taas perustuu SSH-yhteyden luomiseen orjakoneille, jolloin tarvitaan ainoastaan yksi ohjelmisto master-serverille. Ansiblen käyttöönotto on näin ollen videon mukaan “A cakewalk” – eli helpompi kuin kilpailijoilla.

Saatavuus (Availability)

Saatavuudella tarkoitettiin toiminnan jatkuvuutta tilanteessa, jossa masterkone putoaa pois pelistä. Jokaisella hallintajärjestelmällä on videon mukaan useaan masteriin perustuva arkkitehtuuri, jolloin pääserverin pudotessa pois pelistä varaserveri on aina määritelty ja käytössä.

Hallinta (Management)

Hallinnan vertailussa käytiin läpi push- ja pull-metodeja laitekonfiguraatioiden siirrossa client-koneille. Puppet ja Chef toimivat videon mukaan pull-metodilla, jossa client-koneet hakevat konfiguraationsa serveriltä (master). Ansible ja SaltStack taas työntävät konfiguraationsa client-koneille.

Lisäksi viitattiin palveluiden käyttävän kielen ymmärrettävyyteen. Puppet (Puppet DSL) ja Chef (Ruby) saivat videolla risuja hankalasta DSL -kielestä, kun taas Python-pohjaiset Ansible ja SaltStack tarjosivat helpomman tavan luoda hallita konfiguraatioita.

Yhteentoimivuus(Interoperatibility)

Yhteentoimivuudella tarkoitettiin mahdollisuuksia toimia eri käyttöjärjestelmillä. Kaikkien palveluiden masterserveri täytyi olla Linux/Unix -laitteella, mutta client-koneet voivat olla myös Windows-laitteita.

Lopputulos + pohdinta

Videon loppupisteissä Ansible ja SaltStack saivat hieman korkeammat pisteet käyttöönoton ja hallinnan helppouden perusteella. Pisteytyksen jälkeen palveluita verrattiin vielä mm. GitHub-yhteisön aktiivisuuden, Google -trendien, yritysesimerkkien sekä hintojen perusteella. Videon tekijä muistuttaa videon lopussa, että loppujen lopuksi “paras” hallintaohjelmisto yrityksen käyttöön on se, joka sopii parhaiten yrityksen toimintaympäristöön ja tarpeisiin.

Video hyvin tehty ja selkeä ja käytti hyvin esimerkkejä hyödyksi. Videon sanoma oli uskottava eikä se yrittänyt kehua mitään palveluista yli muiden. Video oli äänite virtuaaliluennolta ja se sisälsi täydentäviä kysymyksiä oppilailta. Näin palvelinten hallinnan kurssin alussa en löytänyt suoranaisia asiavirheitä ja uskon, että videota voi suositella kaikille hallintaohjelmista kiinnostuneille aloitteilijoille.

 

 

 

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html        Simo Suominen


Linux palvelimet – kotitehtävät 6


Linux-palvelimet kotitehtävät 6

Lähde  Tero Karvinen 2017: Linux kurssi, http://terokarvinen.com

Harjoitusympäristönä Ubuntu 17.04 (Zesty Zapus) Daily Build

Harjoituskoneen tiedot:

Emolevy X79A-GD65 (8D)

Prosessori Intel(R) Core(TM) i7-3930K

16GiB RAM

Näytönohjain GeForce GTX 690

Ota käyttöön oma virtuaalipalvelin (VPS).

Harjoituksen tavoitteena on ottaa käyttöön oma virtuaalipalvelin Linux-käyttöjärjestelmällä ja varmistaa palvelimen tietoturva luomalla palvelimelle käyttäjä ja käynnistämällä ja konfiguroimalla palomuuri.

Virtuaalipalvelimen tarjoajaksi on valittu DigitalOcean -palvelu, joka on todettu helppokäyttöiseksi ja luotettavaksi palveluksi. Tämän lisäksi palveluun saa 50$ aloitusrahaa Github student developer -paketin kautta.

Virtuaalipalvelimen luonti

Lähtötilanteessa palveluun on rekisteröidytty ja voidaan luoda oma virtuaalipalvelin (Droplet).

Selection_016.png

Käyttöjärjestelmäksi valittiin viimeisin Ubuntun LTS (Long Term Support) versio. Palvelimen tehovaatimuksissa ensimmäisenä tulee vastaan vähäinen keskusmuistin määrä, joten halvin vaihtoehto jätettiin väliin ja valittiin 10 $/kk maksava palvelin.

Palvelimen sijaintia päätettäessä tulee miettiä mistä päin suurin osa palvelimen asiakkaista ottaa yhteyden palvelimeen. Lisäksi tietyt lain pykälät saattavat vaikuttaa palvelimen sijainnin valintaan. Harjoitustyössä palvelimen sijainniksi valittiin Frankfurt. Lopuksi valittiin palvelimien määrä (1) ja geneerinen nimi palvelimelle. Lisäpalveluita ei otettu.

Kun palvelin on luotu, käyttäjä saa sähköpostiinsa viestin, jossa on palvelimen salasana root-käyttäjälle.  Palvelimeen voi ottaa yhteyttä palvelun verkkosivun konsolin kautta tai suojatulla SSH-yhteydellä. Harjoitustyössä käytettiin SSH-yhteyttä testikoneen komentokehotteen kautta.

Palvelimen konfigurointi

$ ssh root@palvelimenip //kirjauduttiin palvelimelle

$ sudo ufw allow 80/tcp //sallittiin http-yhteys palomuurin läpi 

$ sudo ufw allow 22/tcp //sallittiin SSH-yhteydet palomuurin läpi

$ sudo ufw enable //käynnistettiin palomuuri

$ sudo adduser suomisim //lisättiin käyttäjä suomisim. HUOM. KUNNON SALASANA!

$ sudo adduser suomisim sudo //lisättiin käyttäjä ryhmään sudo

$ sudo adduser suomisim adm //lisättiin käyttäjä ryhmään adm

$ sudo adduser suomisim admin //lisättiin käyttäjä ryhmään admin

Seuraavaksi avattiin toinen komentokehote ja testattiin luotuja tunnuksia. Root-tunnuksilla jäätiin vielä palvelimelle varmistamaan, että ongelmat voidaan korjata jos niitä esiintyy. Kun sudo-tunnusten toimivuus on varmistettu, voitiin lukita root-tunnus palvelimelle.

$ ssh suomisim@palvelimenip //kirjaudutiin palvelimelle luodulla käyttäjällä

$ sudo apt-get update && sudo apt-get -y upgrade //testattiin sudo-oikeuksia

$ sudo usermod --lock root //lukittiin root-käyttäjä

Lopuksi voitiin todeta, että virtuaalipalvelin oli otettu onnistuneesti käyttöön. Aikaa operaatioon ja dokumentointiin kului  35 minuuttia.

Asenna weppipalvelin virtuaalipalvelimeesi

Harjoitusta jatkettin aiemmin asennetun ja konfiguroidun virtuaalipalvelimen kanssa. Palvelimeen asennettiin Apache 2 -webpalvelin ja muokattiin Apachen oletussivua.

$ ssh suomisim@palvelimenip //otettiin yhteys palvelimeen

$ sudo apt-get update 

$ sudo apt-get -y install apache2 //apache2 -palvelimen asennus

$ sudoedit /var/www/html/index.html //oletuswebsivun muokkaus

index.html -tiedoston sisältö korvattiin yksinkertaisella html-testisivulla. Tässä vaiheessa huomattiin, että ääkköset eivät toimineet palvelimella. Seuraavasta lähteestä löytyi apua ongelmaan, joka ratkesi seuraavilla komennoilla:

$ sudo apt-get install language-pack-fi

$ sudo locale-gen fi_FI.UTF-8

$ sudo update-locale

Tämän jälkeen siirtymällä selaimella palvelimen IP-osoitteeseen saatiin näkyviin testisivu, johon saatiin nyt lisättyä myös ääkkösiä. Aikaa Apache2 -palvelimen asennukseen ja sivun muokkaukseen kului 5 minuuttia + 15 minuuttia kieliongelmien selvittämiseen.

Selection_022.png

 Laita domain-nimi osoittamaan virtuaalipalvelimeesi

Harjoituksen tavoitteena on ottaa käyttöön domain virtuaalipalvelimelle. Harjoitusta varten valittiin Namecheap -palvelu, joka on luotettava  sekä tarjoaa opiskelijoille pientä alennusta ylempänä mainitun paketin kautta. Palvelussa varmistetaan ensin halutun domain-osoitteen saatavuus ja ostetaan haluttu osoite. Github-paketin kautta tilattuna osoitteesta saa pienen alennuksen tai vaihtoehtoisesti .me -osoitteen saa vuodeksi ilmaiseksi. Huonona puolena palvelu pakottaa .me -osoitteen ostoskoriin sekä Githubin ilmaisen ominaisuuden jollekin ostetulle domainille.

Selection_017.png

Seuraava askel vaatii rekisteröitymistä palveluun sekä luottokorttimaksua palvelusta. Namecheap tarjoaa aggressiivisesti mahdollisuutta yhteistoimintaan Githubin kautta. Kuvaan piilotetun sinisen linkin kautta päästiin kuitenkin itse konfiguroimaan asetuksia.Selection_018.png

Palvelun etusivulla voitiin huomata, että oletuksena molemmilla domaineilla ja kaikilla palveluilla oli auto-renew -toiminto päällä. Koska .me -domainia ei alun perin edes haluttu mukaan eikä sähköpostipalvelua aiottu ottaa käyttöön, pyrittiin minimoimaan ylimääräiset kulut ja jätettiin ainoastaan domain simosuominen.com auto-renew tilaan. Syystä tai toisesta simosuominen.me -domainin sähköpostin auto-renew -toiminto piti käydä erikseen poistamassa alla olevan kuvan valikosta kohdasta Manage.

Selection_020.png

simosuominen.com -domainin asetuksia päästiin siirtymällä Domain list -> Manage. Harjoituksessa käytettiin Advanced DNS -näkymää, joka oli allekirjoittaneelle selkeämpi tapa muokata asetuksia. Alla olevassa kuvassa on kuvattu yksinkertainen konfiguraatio, jolla domain simosuominen.com saatiin viittaamaan Digitaloceanin kautta käyttöön otettuun virtuaalipalvelimeen ja ylempänä tehtyyn Simon Testisivu -websivuun. Palvelimen IP-osoite on sutattu kohdasta Value.Selection_023.png

Tee weppisivu omalle virtuaalipalvelimellesi käyttäen Apachen VirtualHost-asetusta.

Jatkettiin harjoitusta samalla palvelimella ja kokoonpanolla. Tavoitteena oli toteuttaa toinen websivu samalla palvelimella käyttäen Apachen VirtualHost -asetusta. Harjoitusta varten omistettu simosuominen.me -domain oli ohjattu osoittamaan käytettyyn virtuaalipalvelimeen.

$ ssh suomisim@palvelimenip //kirjautuminen palvelimelle

$ mkdir /home/suomisim/html/simome //luotiin kansio simosuominen.me sivustolle

$ nano /home/suomisim/html/simome/index.html //luotiin websivu kansioon

$ sudoedit /etc/apache2/sites-available/simome.conf //luotiin asetustiedosto sivustolle

simome.conf -tiedostoon tehtiin tarvittavat ohjaustiedot (ks. kuva)

Terminal - suomisim@lapikas: ~-html-simome_024.png

$ sudo a2ensite simome.conf //otettiin sivu käyttöön

$ sudo service apache2 restart //käynnistettiin Apache 2 uudestaan

Harjoituksen lopputuloksena virtuaalipalvelimella pyörii kaksi eri verkkosivustoa, simosuominen.com ja simosuominen.me

Selection_025.png

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html” Simo Suominen

Linux palvelimet – kotitehtävät 4


Linux palvelimet – kotitehtävät 4

Lähde  Tero Karvinen 2017: Linux kurssi, http://terokarvinen.com

Harjoitusympäristönä Ubuntu 17.04 (Zesty Zapus) Daily Build

Harjoituskoneen tiedot:

Emolevy X79A-GD65 (8D)

Prosessori Intel(R) Core(TM) i7-3930K

16GiB RAM

Näytönohjain GeForce GTX 690

Asenna alusta lähtien LAMP. (Linux voi olla asennettu valmiiksi tai Live-USB).

AsennettinLAMP otettiin aikaa toimenpiteistä. Ensimmäinen osa on testikoneelle asennettu (L)inux Xubuntu 17.04. Seuraavaksi asennettiin Apache2 -webpalvelin.

$ sudo apt-get update

$ sudo apt-get install apache2

Seuraavaksi todettiin asennuksen onnistuneen käymällä verkkoselaimella osoitteessa http://localhost, jolloin saatiin Apache2:n oletussivu näkyville. Aikaa kului 5min 30sek (toimenpiteet + raportointi).

Selection_001.png

Seuraavaksi otettiin käyttöön käyttäjän kansio palvelimella ja luotiin käyttäjälle aloitussivu. Tähän käytettiin seuraavia komentoja:

$ sudo a2enmod userdir //käyttäjän kansion käyttöönotto

$ sudo service apache2 restart //apache2 -palvelun uudelleenkäynnistys

$ cd //siirryttiin käyttäjän kotihakemistoon

$ mkdir public_html //luotiin kansio tuleville julkisille html -tiedostoille

Linux oli asennettu testikoneelle valmiiksi ja käyttäjä (suomisim) luotu asennuksen yhteydessä. Siirtymällä osoitteeseen http://localhost/~suomisim/ päästiin kansioon, johon käyttäjän kotisivut tehtäisiin.

Selection_003.png

Palomuuri

Seuraava askel oli parantaa tietoturvaa ottamalla käyttöön palomuuri. Tähän käytettiin komentoa sudo ufw enable. Koska kokoonpanoa ei ohjattu eikä testattu etänä, jätettiin palomuuri ehjäksi eikä puhkottu siihen reikiä. Aikaa kului yhteensä 12min.

MySQL

Jatkettiin LAMP-kokoamista asentamalla MySQL -tietokantaohjelma. Samalla asennettiin seuraavissa tehtävissä tarvittavat PHP-lisäpalikat. Käytetyt komennot:

$ sudo apt-get update

$ sudo apt-get -y install mysql-server mysql-client libapache2-mod-php php-mysql

MySQL -asennus kysyi Root-käyttäjän salasanaa, salasanaksi annettiin tarpeeksi monimutkainen salasana. Seuraavaksi kirjauduttiin tietokantaan, luotiin uusi tietokanta sekä käyttäjä ks. tietokannalle.

$ mysql -u root -p //käyttäjä root, -p varmistaa, että salasanaa kysytään erikseen, jotta se pysyy poissa lokeista

create database suomisim character set utf8; //luotiin uusi tietokanta (suomisim) ja valittiin käytettävä merkkijärjestelmä UTF-8

grant all on suomisim.* to suomisim@localhost identified by 'sensuroitusalasana'; //annettiin käyttäjälle suomisim kaikki oikeudet tietokantaan suomisim(ja tuleviin tämän alaisiin tietokantoihin) annettua salasanaa vastaan.

exit //kirjauduttiin ulos root-käyttäjältä

mysql -u suomisim -p //kirjauduttiin käyttäjänä suomisim)

show databases; //näytettiin tietokannat, joihin ks. käyttäjällä on oikeus

Selection_004.png

Näin luotu käyttäjä ei pysty sotkemaan muita kuin oman tietokantansa. Seuraavaksi kokeiltiin automatisoida MySQL -kirjautumisprosessi käyttäjälle suomisim.

$ exit

$ cd

$ nano .my.cnf //luotiin tiedosto, johon kirjattiin seuraavat kirjautumistiedot:
[client]
user="suomisim"
password="sensuroitusalasana"
database="suomisim"

Kun tämän jälkeen ajettiin komento mysql, päästiin kirjautumaan oikeaan tietokantaan oikealla käyttäjällä ilman hidasta kirjautumisprosessia. Aikaa kului alusta yhteensä 29 minuuttia. Lopuksi otettiin vielä PHP käyttöön ja varmistettiin sen toimivuus:

PHP asennus ja testaus

$ cd /etc/apache2/ //siirryttiin apache2 asetuskansioon

$ grep -ir php * //haettiin ks. kansion tiedostoista merkintöjä PHP

$ sudoedit /etc/apache2/mods-available/php7.0.conf //muokattiin tiedostoa, joka löytyi edellisen haun perusteella

Tiedostosta otettiin alla olevat asetukset pois päältä lisäämällä rivien eteen kommenttimerkin #.

Selection_005.png

$ sudo service apache2 restart 

$ cd

$ cd public_html

$ nano index.php

Lisättiin index.php -tiedostoon seuraava rivi: <?php print(2+2+”\n\n”); ?>

http://localhost/~suomisim/ -sivulla näkyi PHP-koodilla kirjoitetun laskutoimituksen tulos -> PHP toimii. Kokomaisaika LAMP-harjoituksen läpikäyntiin ja raportointiin oli n. 45 minuuttia.

Tee weppisivu, joka lukee PHP:lla rivejä tietokannasta.

Harjoitukseen käytettiin edellisessä tehtävässä asennettua LAMP:ia. Aloitettiin harjoitus luomalla tietokantataulu käyttäjälle suomisim. Tämän jälkeen lisättiin tietoja ja varmistettiin, että tiedot tallentuivat tietokantaan.

$ mysql //kirjauduttiin sisään

use suomisim; //valittiin oma tietokanta

create table pizza(id int auto_increment primary key, name varchar(1024), taste varchar(1024)); //luotiin tietokanta pizza ja siihen arvot id, name, taste

insert into pizza(name) values ('Kinkku'); //lisättiin tietokantaan pizza tietue kinkku

insert into pizza(name) values ('Tonnikala');

insert into pizza(name) values ('Ananas');

update pizza set taste="Herkullinen" where name="Kinkku"; //lisättiin tietueelle kinkku arvo Herkullinen

update pizza set taste="OK" where name="Tonnikala";

update pizza set taste="Menettelee" where name="Tonnikala";

select * from pizza; 

Selection_006.png

Näin varmistettiin, että tietokannan tiedot ovat ajan tasalla. Seuraavaksi luotiin websivu, joka hakee tiedot tietokannasta. Harjoituksen vuoksi luotiin ja muokattiin tiedosto Geany-tekstieditorilla, joka toimi erinomaisesti. Lähteenä PHP-koodille käytettiin w3schools.com -sivua. Koodia muokattiin omaan tietokantaan soveltuvaksi alla olevan kuvan mukaisesti.

-PHPo.php - -home-suomisim-public_html - Geany_007.png

Lopputuloksena tuotantoon valmis websivu, joka hakee pizzojen tiedot MySQL -tietokannasta. Alla kuvankaappaus sivusta.

Selection_008.png

Laita liitteeksi tai linkiksi raporttiisi tällä komenolla kerätty log.txt:

tail /var/log/syslog /var/log/auth.log /etc/lsb-release /var/log/apache2/*.log /proc/uptime >log.txt

==> /var/log/syslog <==
Feb 12 20:25:30 thor anacron[1281]: Job `cron.daily’ terminated
Feb 12 20:25:30 thor anacron[1281]: Normal exit (1 job run)
Feb 12 20:27:26 thor kernel: [ 421.746964] [UFW BLOCK] IN=eno1 OUT= MAC=d4:3d:7e:01:b0:4b:30:59:b7:8b:f5:60:08:00 SRC=192.168.1.112 DST=192.168.1.87 LEN=515 TOS=0x00 PREC=0x00 TTL=128 ID=24564 PROTO=UDP SPT=1900 DPT=59052 LEN=495
Feb 12 20:27:27 thor kernel: [ 422.991959] [UFW BLOCK] IN=eno1 OUT= MAC=d4:3d:7e:01:b0:4b:30:59:b7:8b:f5:60:08:00 SRC=192.168.1.112 DST=192.168.1.87 LEN=515 TOS=0x00 PREC=0x00 TTL=128 ID=24565 PROTO=UDP SPT=1900 DPT=59052 LEN=495
Feb 12 20:27:28 thor kernel: [ 423.897291] [UFW BLOCK] IN=eno1 OUT= MAC=d4:3d:7e:01:b0:4b:30:59:b7:8b:f5:60:08:00 SRC=192.168.1.112 DST=192.168.1.87 LEN=515 TOS=0x00 PREC=0x00 TTL=128 ID=24566 PROTO=UDP SPT=1900 DPT=59052 LEN=495
Feb 12 20:27:29 thor kernel: [ 424.973855] [UFW BLOCK] IN=eno1 OUT= MAC=d4:3d:7e:01:b0:4b:30:59:b7:8b:f5:60:08:00 SRC=192.168.1.112 DST=192.168.1.87 LEN=515 TOS=0x00 PREC=0x00 TTL=128 ID=24567 PROTO=UDP SPT=1900 DPT=59052 LEN=495

==> /var/log/auth.log <==

==> /etc/lsb-release <==
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=17.04
DISTRIB_CODENAME=zesty
DISTRIB_DESCRIPTION=”Ubuntu Zesty Zapus (development branch)”

==> /var/log/apache2/access.log <==

==> /var/log/apache2/error.log <==
[Sun Feb 12 20:25:29.382208 2017] [mpm_prefork:notice] [pid 1442] AH00163: Apache/2.4.23 (Ubuntu) configured — resuming normal operations
[Sun Feb 12 20:25:29.382233 2017] [core:notice] [pid 1442] AH00094: Command line: ‘/usr/sbin/apache2’

==> /var/log/apache2/other_vhosts_access.log <==

==> /proc/uptime <==
461.12 5351.63

Tee pinta-alan laskuri PHP:lla. Eli käyttäjä syöttää lomakkeella (form) pellon pituuden ja leveyden, laskuri kertoo weppisivulla pellon alan.

Pinta-ala-ohjelma toteutettiin Geany-tekstieditorilla, jolla luotiin kaksi .php tiedostoa, pala.php (pääsivu) ja pala-action.php.

pala.php

<!doctype html>

<html lang="en">
<head>
 <meta charset="utf-8">
 <title>Pinta-ala-Ohjelma</title>
 <meta name="author" content="Simo Suominen">
 <link rel="stylesheet" href="css/styles.css?v=1.0">

</head>

<body>
 http://js/scripts.js
 
 
 <form action="pala-action.php" method="post">
 <p>Anna pellon leveys metreissä: <input type="number" name="leveys" /></p>
 <p>Anna pellon pituus metreissä: <input type="number" name="pituus" /></p>
 <p><input type="submit" /></p>
</form>
 
</body>
</html>

pala-action.php

Pellon leveys on <?php echo htmlspecialchars($_POST['leveys']); ?> metriä
<p></p>
Pellon pituus on <?php echo htmlspecialchars($_POST['pituus']); ?> metriä

<p></p>
Pellon kokonaispinta-ala on

<?php

$first_number = htmlspecialchars($_POST['leveys']);
$second_number = htmlspecialchars($_POST['pituus']);
$sum_total = $second_number * $first_number;

print ($sum_total);

?>

neliömetriä.

Lopputuloksena oli yksinkertainen websivu, joka kysyi käyttäjältä pellon pituutta ja leveyttä ja laski niiden perusteella pellon pinta-alan.

Selection_010.png

Selection_012.png

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html” Simo Suominen

Linux palvelimet – kotitehtävät 3


Linux palvelimet – kotitehtävät 3

Lähde  Tero Karvinen 2017: Linux kurssi, http://terokarvinen.com

Harjoitusympäristönä Ubuntu 17.04 (Zesty Zapus) Daily Build

Harjoituskoneen tiedot:

Emolevy X79A-GD65 (8D)

Prosessori Intel(R) Core(TM) i7-3930K

16GiB RAM

Näytönohjain GeForce GTX 690

Apache2 -webpalvelimen asennus

Asenna apache2 weppipalvelin. Lataa jokin sivu omalta palvelimeltasi, vaikka testisivu. Etsi sivulatauksesta syntynyt lokirivi.

Aloitettiin harjoitus asentamalla Apache2 komentokehotteessa komennoilla

$ sudo apt-get update

$ sudo apt-get install apache2.

Asennuksen onnistuminen voitiin varmentaa selvittämällä ensin oma IP-osoite. Tähän käytettiin komentoa ip addr.  Kun saatu osoite kirjoitettiin selaimen osoitekenttään saatiin seuraava tulos:

Selection_003.png

Seuraavaksi etsittiin lokitiedostoa, johon sivulataus tallentuu. Hakuun käytetiin seuraavia komentoja:

cd /var/log //siirryttiin kansioon, jossa lokeja yleensä säilytetään

ls //listattiin tiedostot/kansiot

cd apache2 //siirryttiin Apachen omaan kansioon

ls //listattiin tiedostot/kansiot

tail -f access.log //laitettiin ks. loki seurantaan)

Seuraavaksi suoritettiin sivulataus uudestaan jotta voitiin varmistaa, että sivulataus kirjautuu lokiin. Kirjaus näytti seuraavalta:

sensuroituIP - - [04/Feb/2017:16:59:16 +0200] "GET / HTTP/1.1" 200 3477 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"
Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html” Simo Suominen


Linux palvelimet – kotitehtävät 2

Lähde  Tero Karvinen 2017: Linux kurssi, http://terokarvinen.com

Harjoitusympäristönä Ubuntu 17.04 (Zesty Zapus) Daily Build

Harjoituskoneen tiedot:

Emolevy X79A-GD65 (8D)

Prosessori Intel(R) Core(TM) i7-3930K

16GiB RAM

Näytönohjain GeForce GTX 690

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

Avattiin terminal emulator. Tutkittiin /var/log/apt/history.log -tiedostoa, johon tallentui asennettujen ja päivitettyjen ohjelmien asennustietoja. Annettiin komento tail -F /var/log/apt/history.log. Komento näytti 10 viimeistä riviä ks. tiedostosta ja päivittyi tämän jälkeen automaattisesti ruudulle, jos tiedosto muuttuu. Jätettiin loki seurantaan ja avattiin toinen terminal emulator.

Asennettiin Shutter (komennot sudo apt-get update + sudo apt-get install shutter). History.log päivittyi automaattisesti seuraavalla litanialla:

Start-Date: 2017-01-26 17:27:21
Commandline: apt-get install shutter
Requested-By: xubuntu (999)

Install: libglade2-0:amd64 (1:2.6.4-2, automatic), libimage-magick-perl:amd64 (8:6.9.6.6+dfsg-1ubuntu3, automatic), libgnomecanvas2-common:amd64 (2.30.3-3, automatic), libgnomeui-0:amd64 (2.24.5-3.1, automatic), libxml-sax-base-perl:amd64 (1.07-1, automatic), libgoo-canvas-perl:amd64 (0.06-2ubuntu2, automatic), libhttp-server-simple-perl:amd64 (0.51-1, automatic), libimage-magick-q16-perl:amd64 (8:6.9.6.6+dfsg-1ubuntu3, automatic), libgnome2-perl:amd64 (1.046-3build1, automatic), libgnome2-vfs-perl:amd64 (1.082-1build3, automatic), libgtkimageview0:amd64 (1.6.4+dfsg-1.1, automatic), libjson-perl:amd64 (2.90-1, automatic), libxml-sax-perl:amd64 (0.99+dfsg-2ubuntu1, automatic), libgtk2-unique-perl:amd64 (0.05-2ubuntu2, automatic), libindicator7:amd64 (16.10.0+16.10.20160913-0ubuntu1, automatic), libdata-random-perl:amd64 (0.12-1, automatic), libextutils-pkgconfig-perl:amd64 (1.15-1, automatic), libwww-mechanize-perl:amd64 (1.83-1, automatic), libpath-class-perl:amd64 (0.37-1, automatic), libbonobo2-common:amd64 (2.32.1-3, automatic), libgnome2-wnck-perl:amd64 (0.16-3build3, automatic), libnet-dropbox-api-perl:amd64 (1.9-1, automatic), libgoocanvas-common:amd64 (1.0.0-1, automatic), libbonoboui2-common:amd64 (2.24.5-4, automatic), libgtk2-imageview-perl:amd64 (0.05-2build3, automatic), libpango-perl:amd64 (1.227-1build1, automatic), libjson-xs-perl:amd64 (3.030-1, automatic), shutter:amd64 (0.93.1-1.3), libcairo-perl:amd64 (1.106-1build2, automatic), libgd-perl:amd64 (2.53-3build1, automatic), libclass-method-modifiers-perl:amd64 (2.12-1, automatic), libx11-protocol-other-perl:amd64 (29-2, automatic), libgnomeui-common:amd64 (2.24.5-3.1, automatic), libgnome2-gconf-perl:amd64 (1.044-6build1, automatic), libcrypt-openssl-rsa-perl:amd64 (0.28-5, automatic), libtypes-serialiser-perl:amd64 (1.0-1, automatic), libgnome-2-0:amd64 (2.32.1-5ubuntu1, automatic), libcrypt-openssl-bignum-perl:amd64 (0.07-2, automatic), libglib-perl:amd64 (3:1.323-1, automatic), libappindicator1:amd64 (12.10.1+17.04.20161129-0ubuntu1, automatic), libxml-namespacesupport-perl:amd64 (1.11-1, automatic), libcommon-sense-perl:amd64 (3.74-2, automatic), libxml-libxml-perl:amd64 (2.0128+dfsg-1build1, automatic), libbonoboui2-0:amd64 (2.24.5-4, automatic), libgnome2-canvas-perl:amd64 (1.002-4build1, automatic), libnet-oauth-perl:amd64 (0.28-2, automatic), libsort-naturally-perl:amd64 (1.03-1, automatic), libgnomevfs2-common:amd64 (1:2.24.4-6.1ubuntu2, automatic), libclass-data-inheritable-perl:amd64 (0.08-2, automatic), libmouse-perl:amd64 (2.4.6-1, automatic), libgoocanvas3:amd64 (1.0.0-1, automatic), libgtk2-appindicator-perl:amd64 (0.15-1build4, automatic), libxml-sax-expat-perl:amd64 (0.40-2, automatic), libgnomevfs2-0:amd64 (1:2.24.4-6.1ubuntu2, automatic), libextutils-depends-perl:amd64 (0.405-1, automatic), libproc-simple-perl:amd64 (1.32-1, automatic), liborbit-2-0:amd64 (1:2.14.19-2, automatic), libgnomecanvas2-0:amd64 (2.30.3-3, automatic), libbonobo2-0:amd64 (2.32.1-3, automatic), perlmagick:amd64 (8:6.9.6.6+dfsg-1ubuntu3, automatic), libgtk2-perl:amd64 (2:1.2499-1, automatic), libgnome2-common:amd64 (2.32.1-5ubuntu1, automatic), libproc-processtable-perl:amd64 (0.53-2, automatic), libgnomevfs2-extra:amd64 (1:2.24.4-6.1ubuntu2, automatic), libfile-which-perl:amd64 (1.21-1, automatic), libxml-simple-perl:amd64 (2.22-1, automatic)

End-Date: 2017-01-26 17:27:29

Lokissa näkyi operaation aloitusaika, annettu komento ja komennon antaja (livetikun oletuskäyttäjä Xubuntu). Itse ohjelman lisäksi asennettiin tarvittavat kirjastot, joista lokissa voitiin nähdä eri kirjastojen nimet, asennettu versionumero sekä alustaversio (amd64). Lopussa näkyi operaation lopetusaika.

Virheilmoitus saatiin /var/log/auth.log -tiedostoon otettaessa SSH-yhteyttä omaan palvelimeen ja tarjoamalla väärää salasanaa kirjautuessa.

Jan 26 19:36:40 xubuntu sshd[7572]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=sensuroituiposoite  user=simppa
Jan 26 19:36:42 xubuntu sshd[7572]: Failed password for simppa from sensuroituiposoite port 48348 ssh2
Jan 26 19:36:50 xubuntu sshd[7572]: message repeated 2 times: [ Failed password for simppa from sensuroituiposoite port 48348 ssh2]
Jan 26 19:36:50 xubuntu sshd[7572]: Connection closed by sensuroituiposoite port 48348 [preauth]
Jan 26 19:36:50 xubuntu sshd[7572]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=sensuroituiposoite user=simppa

Lokissa näkyi operaation aloitus- ja lopetusaika sekä tarkempi virheilmoitus. Lisäksi siitä kävi ilmi kirjautumista yrittäneen tahon käyttäjätunnus ja ip-osoite sekä käytetty portti.

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:’)

Asennettiin demoni komennoilla sudo apt-get update + sudo apt-get install ssh.

Koska kyseessä oli livetikku, käytössä oli oletuskäyttäjä (Xubuntu) eikä salasanaa oltu määritetty. Luotiin uusi käyttäjä komennolla sudo adduser simppa. Seuraavaksi täytettiin käyttäjän tiedot, mm. vahva salasana.

Tämän jälkeen selvitettiin oma ip-osoite komennolla ip addr show. Kun IP-osoite oli selvä voitiin kirjautua myös SSH:n avulla, komennolla ssh simppa@sensuroituiposoite ja antamalla äsken luotu vahva salasana. Seuraavaksi kokeiltiin siirtää tiedosto SCP-komennon avulla, alla suora mutta ip-sensuroitu kopio terminal emulatorista:

simppa@xubuntu:~$ ls
 simppa@xubuntu:~$ exit
 logout
 Connection to sensuroituip closed.
 xubuntu@xubuntu:~$ ls
 Desktop Downloads Music Public Videos
 Documents foo.txt Pictures Templates
 xubuntu@xubuntu:~$ scp foo.txt simppa@sensuroituip:
 simppa@sensuroituip's password: 
 foo.txt 100% 12 63.5KB/s 00:00 
 xubuntu@xubuntu:~$ ssh simppa@sensuroituip
 simppa@sensuroituip's password: 
 Welcome to Ubuntu Zesty Zapus (development branch) (GNU/Linux 4.9.0-12-generic x86_64)

* Documentation: https://help.ubuntu.com
 * Management: https://landscape.canonical.com
 * Support: https://ubuntu.com/advantage
 Last login: Thu Jan 26 19:43:22 2017 from sensuroituip
 simppa@xubuntu:~$ ls
 foo.txt

Eli harjoituksessa kopioitiin onnistuneesti käyttäjän Xubuntu kansiosta tiedosto foo.txt käyttäjän simppa kansioon SSH-demonin avulla. ls -komennolla varmistettiin alussa, että käyttäjän kotikansiossa ei ollut foo.txt tiedostoa ja lopuksi sama komento varmisti, että tiedosto oli siirtynyt kotikansioon.

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

Alla olevalla komennolla asennettiin päivittäin tarvittavat ohjelmat + LAMP-alusta testikoneelle asennettuun Linuxiin. Komentoa päivitetään sitä mukaa, kun tutustutaan uusiin hyödyllisiin ohjelmiin.

sudo apt-get update && sudo apt-get -y install vlc shutter geany ssh gimp tree alsa-utils unity-tweak-tool apache2 mysql-client mysql-server libapache2-mod-php php-mysql curl lynx

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

Testikoneen kanssa oli aluksi suuria ongelmia äänentoiston kanssa. Asensin ongelmia ratkaisemaan Alsamixer -ohjelman komennoilla sudo apt-get update -> sudo apt-get install alsa-utils. Tämän jälkeen käynnistin ks. ohjelman komennolla alsamixer.

Terminal - xubuntu@xubuntu: ~_001.png

Alsamixerillä valittiin oikea äänikortti painamalla F6 (Xonar DGX) ja muutettiin nuolinäppäimillä analogisen ulostulon arvoksi Multichannel, jolloin sain äänet toimimaan kuulokkeiden kautta.

Seuraavaksi asennettiin Nethack, komennoilla sudo apt-get install nethack-console. Peliä pelataan numpadin avulla, joten numpad otettiin käyttöön pelissä komennolla echo “OPTIONS=number_pad:1”>$HOME/.nethackrc (lähde). Peli käynnistyy komennolla nethack. Peli toimi mainiosti, mutta allekirjoittanut vannoo ADOM nimeen Nethackin sijaan.

Terminal - suomisim@Thor: ~_001.png

Lopuksi asennettiin Lm-sensors seuraamaan testikoneen raudan lämpötiloja. Lähteenä asennukseen käytettiin tätä ohjetta ja suoritettiin seuraavat komennot:

$ sudo apt-get install lm-sensors // itse ohjelman asennus

$ sudo sensors-detect //ohjelma kävi läpi laitetietoja ja kysyi lisätietoja. Painettiin ENTER, jolloin hyväksyttiin oletusvalinnat

$ sudo sensors  //saatiin lämpötilatiedot komentokehotteeseen

Terminal - suomisim@Thor: ~_002.png

Ratkaise Over the wire: Bandit, tasot 0 ja 1.
http://overthewire.org/wargames/bandit/bandit0.html

Harjoitus aloitettiin käynnistämällä terminal emulator ja asentamalla SSH komennolla sudo apt-get update + sudo apt-get install ssh. Seuraavaksi otettiin SSH-yhteys bandit0 käyttäjänä serveriin bandit.labs.overthewire.org, käytetty komento oli ssh bandit0@bandit.labs.overthewire.org. Näin selvitettiin taso 0.

Salasana seuraavalle tasolle oli piilotettu serverille /home/readme -tiedostoon. Salasana löytyi komennolla cat /home/bandit0/readme. Seuraavaksi kopioitiin salasana leikepöydälle ja poistuttiin edelliseltä tasolta komennolla exit. Kirjauduttiin seuraavalle tasolle ohjeiden mukaan komennolla ssh bandit1@bandit.labs.overthewire.org ja annettiin salasanaksi edellisessä kohdassa kopioitu salasana.

Seuraavan salasanatiedoston nimeksi oli asetettu “-“. Tällöin tiedostoa käsiteltäessä esim. cat-komennolla on käytettävä tiedoston koko polkua (lähde). Seuraava salasana selvisi siis komennolla cat /home/bandit1/-

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html” Simo Suominen

Linux palvelimet – kotitehtävät 1


Linux palvelimet – kotitehtävät 1

Lähde  Tero Karvinen 2017: Linux kurssi, http://terokarvinen.com

Tee oma Linux-livetikku. Kokeile sitä jossain muussa kuin koulun koneessa.

Livetikku tehtiin Windows 7 käyttöjärjestelmällä UNetbootin -ohjelmalla (ohjelmistoversio 6.25). Xubuntu levykuva haettiin osoitteesta Xubuntu.org ohjelmalla qBittorrent.Harjoitusta varten ladattiin uusin Xubuntun LTS (long term support) versio joka testaushetkellä oli 16.04.

Harjoitusta varten tikkua testattiin muutaman vuoden vanhalla pöytäkoneella, joka oli aikoinaan huipputehokasta rautaa (tarkemmat tiedot seuraavassa tehtävässä). Koneessa  oli kiinni 2 näyttöä ja 1 televisio + välissä vielä AV-vahvistin.

Ennen tietokoneen uudelleenkäynnistystä varmistettiin Google-haun avulla boottia varten tarvittava näppäinkomento, joka oli F11.Tikulle boottaaminen onnistui ongelmitta.

Linux käynnistyi ongelmitta, tietokoneessa on kiinni 2 näyttöä ja TV ja kuva näkyi kaikissa oikealla resoluutiolla. Ääntä en saanut toimimaan, tietokoneen äänen tulisi siirtyä joko kaiuttimille tai vahvistimelle mutta kumpikaan ulostulo ei toiminut. On mahdollista, että äänikortin (Asus Xonar DGX) ajurit pitäisi asentaa erikseen. Hiiri ja Internet-yhteys toimivat mainiosti. Näppäimistö toimi ja Suomi-asetukset näppäimistöön löytyivät Settings -> Keyboard -> Layout takaa.

Päätin kokeilla onnistuuko ääniongelman korjaaminen uudemmalla Xubuntun versiolla 17.04 (Zesty Zapus) Daily Build. Tikun tekoon käytettiin tällä kertaa Windows 10 käyttöjärjestelmää UNetbootin ohjelman versio pysyi samana.

Livetikku luotiin tällä kertaa lataamatta erillistä ISO-tiedostoa. Sen sijaan sijaan valittiin levykuvan sijaan Jakelu ja valittiin haluttu versio Linuxista.

capture

unetbootin

Boottaus onnistui ongelmitta, mutta äänet eivät vieläkään toimineet. Google-haun avulla selvisi, että Xubuntu tunnistaa kyllä äänikortin, eli ongelma on muualla. Loppujen lopuksi sain äänet kuulumaan analogisesta 3,5mm portista kuulokkeisiin tämän ohjeen avulla. Asensin ensin Alsamixer -ohjelman komennoilla sudo apt-get update -> sudo apt-get install alsa-utils. Tämän jälkeen käynnistin ks. ohjelman komennolla alsamixer.

Terminal - xubuntu@xubuntu: ~_001.png

Alsamixerillä valittiin oikea äänikortti (Xonar DGX) ja muutettiin analogisen ulostulon arvoksi Multichannel. Onnistumisesta innostuneena jatkoin digitaalisen ongelman selvittämistä. Pian löysin Ubuntun foorumeilta yksittäisen vinkin, jonka perusteella sain digitaalisen ulostulon toimimaan seuraavalla konfiguraatiolla:

Volume Control_002.png

Selection_003.png

Jostain syystä äänikortin digitaalinen ulostulo oli vielä mutella (ks. kuva)

Omaksi ilokseni kokeilin tikkua vielä Lenovon pari vuotta vanhalla läppärillä (Lenovo Yoga 2). Ongelmaksi muodostui läppärin kosketusnäyttö, näppäimistö ja touchpad. Ainoastaan kosketusnäyttö toimi, mutta näppäimistö ja touchpad eivät toimineet. Ongelma ratkesi kun päivitin livetikun Xubuntun versioon 17.04.

Listaa testaamasi koneen rauta (‘sudo lshw -short -sanitize’)

Ajettiin alla oleva komento Terminal emulatorissa:

$ sudo lshw -short -sanitize

H/W path Device Class Description
==============================================================
system MS-7760 (To be filled by O.E.
/0 bus X79A-GD65 (8D) (MS-7760)
/0/0 memory 64KiB BIOS
/0/4 processor Intel(R) Core(TM) i7-3930K CP
/0/4/5 memory 384KiB L1 cache
/0/4/6 memory 1536KiB L2 cache
/0/4/7 memory 12MiB L3 cache
/0/24 memory 16GiB System Memory
/0/24/0 memory 4GiB DIMM DDR3 1333 MHz (0.8
/0/24/1 memory DIMM Synchronous [empty]
/0/24/2 memory 4GiB DIMM DDR3 1333 MHz (0.8
/0/24/3 memory DIMM Synchronous [empty]
/0/24/4 memory 4GiB DIMM DDR3 1333 MHz (0.8
/0/24/5 memory DIMM Synchronous [empty]
/0/24/6 memory 4GiB DIMM DDR3 1333 MHz (0.8
/0/24/7 memory DIMM Synchronous [empty]
/0/100 bridge Xeon E5/Core i7 DMI2
/0/100/1 bridge Xeon E5/Core i7 IIO PCI Expre
/0/100/2 bridge Xeon E5/Core i7 IIO PCI Expre
/0/100/2/0 bridge PEX 8747 48-Lane, 5-Port PCI
/0/100/2/0/8 bridge PEX 8747 48-Lane, 5-Port PCI
/0/100/2/0/8/0 display GK104 [GeForce GTX 690]
/0/100/2/0/8/0.1 multimedia GK104 HDMI Audio Controller
/0/100/2/0/10 bridge PEX 8747 48-Lane, 5-Port PCI
/0/100/2/0/10/0 display GK104 [GeForce GTX 690]
/0/100/2/0/10/0.1 multimedia GK104 HDMI Audio Controller
/0/100/3 bridge Xeon E5/Core i7 IIO PCI Expre
/0/100/3/0 bridge PEX 8747 48-Lane, 5-Port PCI
/0/100/3/0/8 bridge PEX 8747 48-Lane, 5-Port PCI
/0/100/3/0/8/0 display GK104 [GeForce GTX 690]
/0/100/3/0/8/0.1 multimedia GK104 HDMI Audio Controller
/0/100/3/0/10 bridge PEX 8747 48-Lane, 5-Port PCI
/0/100/3/0/10/0 display GK104 [GeForce GTX 690]
/0/100/3/0/10/0.1 multimedia GK104 HDMI Audio Controller
/0/100/5 generic Xeon E5/Core i7 Address Map,
/0/100/5.2 generic Xeon E5/Core i7 Control Statu
/0/100/5.4 generic Xeon E5/Core i7 I/O APIC
/0/100/11 bridge C600/X79 series chipset PCI E
/0/100/16 communication C600/X79 series chipset MEI C
/0/100/19 eno1 network 82579V Gigabit Network Connec
/0/100/1a bus C600/X79 series chipset USB2
/0/100/1a/1 usb1 bus EHCI Host Controller
/0/100/1a/1/1 bus Integrated Rate Matching Hub
/0/100/1a/1/1/6 input Razer DeathAdder
/0/100/1b multimedia C600/X79 series chipset High
/0/100/1c bridge C600/X79 series chipset PCI E
/0/100/1c/0 bus VT6315 Series Firewire Contro
/0/100/1c.1 bridge C600/X79 series chipset PCI E
/0/100/1c.1/0 bus uPD720200 USB 3.0 Host Contro
/0/100/1c.1/0/0 usb4 bus xHCI Host Controller
/0/100/1c.1/0/1 usb3 bus xHCI Host Controller
/0/100/1c.2 bridge C600/X79 series chipset PCI E
/0/100/1c.2/0 bus uPD720200 USB 3.0 Host Contro
/0/100/1c.2/0/0 usb6 bus xHCI Host Controller
/0/100/1c.2/0/1 usb5 bus xHCI Host Controller
/0/100/1c.4 bridge C600/X79 series chipset PCI E
/0/100/1c.4/0 storage ASM1062 Serial ATA Controller
/0/100/1c.6 bridge C600/X79 series chipset PCI E
/0/100/1c.6/0 bridge ASM1083/1085 PCIe to PCI Brid
/0/100/1c.6/0/4 multimedia CMI8788 [Oxygen HD Audio]
/0/100/1d bus C600/X79 series chipset USB2
/0/100/1d/1 usb2 bus EHCI Host Controller
/0/100/1d/1/1 bus Integrated Rate Matching Hub
/0/100/1d/1/1/1 scsi8 storage DataTraveler 2.0
/0/100/1d/1/1/1/0.0.0 /dev/sdd disk 15GB SCSI Disk
/0/100/1d/1/1/1/0.0.0/1 /dev/sdd1 volume 14GiB Windows FAT volume
/0/100/1d/1/1/5 input Corsair K70R Gaming Keyboard
/0/100/1e bridge 82801 PCI Bridge
/0/100/1f bridge C600/X79 series chipset LPC C
/0/100/1f.2 storage C600/X79 series chipset 6-Por
/0/100/1f.3 bus C600/X79 series chipset SMBus
/0/8 generic Xeon E5/Core i7 QPI Link 0
/0/8.3 generic Xeon E5/Core i7 QPI Link Reut
/0/8.4 generic Xeon E5/Core i7 QPI Link Reut
/0/9 generic Xeon E5/Core i7 QPI Link 1
/0/9.3 generic Xeon E5/Core i7 QPI Link Reut
/0/9.4 generic Xeon E5/Core i7 QPI Link Reut
/0/a generic Xeon E5/Core i7 Power Control
/0/a.1 generic Xeon E5/Core i7 Power Control
/0/a.2 generic Xeon E5/Core i7 Power Control
/0/a.3 generic Xeon E5/Core i7 Power Control
/0/b generic Xeon E5/Core i7 Interrupt Con
/0/b.3 generic Xeon E5/Core i7 Semaphore and
/0/c generic Xeon E5/Core i7 Unicast Regis
/0/c.1 generic Xeon E5/Core i7 Unicast Regis
/0/c.2 generic Xeon E5/Core i7 Unicast Regis
/0/c.6 generic Xeon E5/Core i7 Integrated Me
/0/c.7 generic Xeon E5/Core i7 System Addres
/0/d generic Xeon E5/Core i7 Unicast Regis
/0/d.1 generic Xeon E5/Core i7 Unicast Regis
/0/d.2 generic Xeon E5/Core i7 Unicast Regis
/0/d.6 generic Xeon E5/Core i7 Integrated Me
/0/e generic Xeon E5/Core i7 Processor Hom
/0/e.1 generic Xeon E5/Core i7 Processor Hom
/0/f generic Xeon E5/Core i7 Integrated Me
/0/f.1 generic Xeon E5/Core i7 Integrated Me
/0/f.2 generic Xeon E5/Core i7 Integrated Me
/0/f.3 generic Xeon E5/Core i7 Integrated Me
/0/f.4 generic Xeon E5/Core i7 Integrated Me
/0/f.5 generic Xeon E5/Core i7 Integrated Me
/0/f.6 generic Xeon E5/Core i7 Integrated Me
/0/10 generic Xeon E5/Core i7 Integrated Me
/0/10.1 generic Xeon E5/Core i7 Integrated Me
/0/10.2 generic Xeon E5/Core i7 Integrated Me
/0/10.3 generic Xeon E5/Core i7 Integrated Me
/0/10.4 generic Xeon E5/Core i7 Integrated Me
/0/10.5 generic Xeon E5/Core i7 Integrated Me
/0/10.6 generic Xeon E5/Core i7 Integrated Me
/0/10.7 generic Xeon E5/Core i7 Integrated Me
/0/11 generic Xeon E5/Core i7 DDRIO
/0/13 generic Xeon E5/Core i7 R2PCIe
/0/13.1 generic Xeon E5/Core i7 Ring to PCI E
/0/13.4 generic Xeon E5/Core i7 QuickPath Int
/0/13.5 generic Xeon E5/Core i7 Ring to Quick
/0/13.6 generic Xeon E5/Core i7 Ring to Quick
/0/1 scsi0 storage
/0/1/0.0.0 /dev/sda disk 240GB Corsair Force 3
/0/1/0.0.0/1 /dev/sda1 volume 78GiB Windows NTFS volume
/0/1/0.0.0/2 /dev/sda2 volume 144GiB Windows NTFS volume
/0/2 scsi1 storage
/0/2/0.0.0 /dev/sdb disk 120GB Samsung SSD 840
/0/2/0.0.0/1 /dev/sdb1 volume 299MiB Windows NTFS volume
/0/2/0.0.0/2 /dev/sdb2 volume 99MiB Windows FAT volume
/0/2/0.0.0/3 /dev/sdb3 volume 127MiB reserved partition
/0/2/0.0.0/4 /dev/sdb4 volume 110GiB Windows NTFS volume
/0/2/0.0.0/5 /dev/sdb5 volume 449MiB Windows NTFS volume
/0/3 scsi4 storage
/0/3/0.0.0 /dev/sdc disk 2TB ST2000DM001-9YN1
/0/3/0.0.0/1 /dev/sdc1 volume 30GiB Windows NTFS volume
/0/3/0.0.0/2 /dev/sdc2 volume 78GiB Windows NTFS volume
/0/3/0.0.0/3 /dev/sdc3 volume 869GiB Extended partition
/0/3/0.0.0/3/5 /dev/sdc5 volume 869GiB HPFS/NTFS partition
/0/3/0.0.0/4 /dev/sdc4 volume 885GiB Windows NTFS volume
/1 power To Be Filled By O.E.M.

Litaniasta käy ilmi mm. testikoneen emolevy X79A-GD65 (8D), prosessori (Intel(R) Core(TM) i7-3930K), RAM-muistin määrä (16GiB), näytönohjaimen malli (GeForce GTX 690) sekä kovalevyjen merkkejä + osiointitietoja.

Asenna kolme itsellesi uutta ohjelmaa. Kokeile kutakin ohjelmaa sen pääasiallisessa käyttötarkoituksessa

Harjoitusta varten asennettiin VLC player (median katselu/kuuntelu), Shutter (kuvankaappausohjelma) ja Geany (tekstieditori)

Aloitettiin harjoitus ajamalla komennot:

$ sudo apt-get update //saatavilla olevien APK-pakettien listan päivitys

$ apt-cache search video player //etsittiin harjoituksen vuoksi ohjelmia hakusanalla "video player"

$ sudo apt-get install vlc //asennettiin VLC media player + tarvittavat kirjastot

$ sudo apt-get install shutter //asennettiin Shutter

$ sudo apt-get install geany //asennettiin Geany

Vaihtoehtoisesti kaikki kolme olisi voitu asentaa kerralla komennolla:

$ sudo apt-get install vlc shutter geany

VLC media playerin kanssa ääniongelmat luonnollisesti jatkuivat. Ilmeisesti Linux ei tunnista erillisen äänikortin ajureita automaattisesti. Muuten ohjelma toimi nopeasti ja sujuvasti.

Testitiedosto oli Gravity elokuvan trailerivideo, joka oli pakattu H.264 -tekniikalla.

Video Type: 2048×858 (2K), 23.967 FPS, Level 4.1

Audio Type: AAC, 2.0 Channel

Shutter on edistyneempi versio Windowsin mukana tulevasta Snipping tool -kuvankaappausohjelmasta. Ohjelma toimi helposti ja monipuolisia toimintoja saattaa tulla ikävä Windows-käyttäjänä. Kaikki harjoitustehtävieni ruudunkaappaukset on tehty ks. ohjelmalla.

Geany -tekstieditori löytyi Googlettamalla “Notepad++ alternatives”. Kyseessä on siis monipuolisempi tekstieditori, esimerkiksi kevyeen koodaamiseen tai koodin tutkimiseen (kuva alla, kuvankaappaus otettu Shutterin avulla). Ohjelma toimi niin kuin piti.

artifacts.xml - -media-xubuntu-42A098ECA098E7A5-Program Files-Java-eclipse - Geany_001.png

Mitä lisenssiä kukin näistä ohjelmista käyttää? Selitä lyhyesti, mitä oikeuksia ja velvolisuuksia tuosta lisenssistä seuraa

VLC media player käyttää GPL versiota 2, eli käyttäjällä on oikeus käyttää ohjelmaa miten tahtoo, tutustua ohjelman sisältöön ja muokata sitä sekä jakaa kopioita ohjelmasta alkuperäisenä tai muokattuna versiona – myös maksua vastaan. (Lähde: VLC legal )

Shutter käyttää GPL versiota 3, joka tarjoaa samat vapaudet kuin edellinen versio mutta paikkaa tiettyjä porsaanreikiä (Lähde).

Geany käyttää VLC media playerin tapaan GPLv2 -lisenssiä.(Lähde: Geany manual)

Listaa käyttämäsi ohjelmat (esim. MS Word), kunkin ohjelman käyttötarkoitus (esim. Tekstinkäsittely) ja vastaava vapaa Linux-ohjelma (esim. LibreOffice Writer). Jos johonkin tarkoitukseen ei löydy vapaata Linux-ohjelmaa, listaa sekin

MS Office (tekstinkäsittelu, taulukot, esitykset jne.): Libre Office

Infranview (kevyt kuvienkäsittely): XnView

Snipping tool (kuvankaappaus): Shutter

Photoshop (raskas kuvienkäsittely): GIMP

VPN (suojattu verkkoyhteys): OpenVPN

Spotify (musiikki): Toimii myös Linuxilla

Onedrive, Dropbox (pilvitallennus): Dropbox toimii Linuxilla, OneDriveä ei virallisesti tueta, mutta ohjeiden avulla on mahdollista synkronoida tiedostot myös Linuxilla (Lähde)

Chrome (verkkoselain): Firefox, Chromium

qBittorrent (bittorrent): qBittorrent löytyy myös Linuxille.

PC-pelaaminen: Osa toimii – osa ei.

VLC media player (mediatoistin): VLC toimii myös Linuxilla

WinRar (pakkaus/purkuohjelma): WinRar löytyy Linuxille

Vapaaehtoinen lisätehtävä: varmuuskopioi tiedostosi (voit käyttää esimerkiksi ulkoista USB-levyä)

Harjoitusta varten käytiin läpi tärkeät tiedostot pöytäkoneelta ja varmistettiin, että mitään tärkeitä tietoja ei pääsisi katoamaan muita harjoituksia tehtäessä. Varmuuskopiointia on harrastettu jo ennen kurssin alkua, eikä allekirjoittaneella loppujen lopuksi ole yhtäkään tiedostoa, jonka menetys olisi korvaamatonta. Harjoituksen vuoksi tärkeät tiedostot kuitenkin kopioitiin yhteen kansioon, pakattiin WinRar -ohjelmalla ja siirrettiin pakattu tiedosto ulkoiselle kovalevylle.

Jos varmuuskopioinnille olisi kriittinen ja jatkuva tarve, käyttäisin esim. COMODO Backup -ohjelmaa, jonka avulla voi automatisoida varmuuskopiointiprosessin. Windows 10 sisältää myös automaattisen varmuuskopioinnin, mutta ohjelma ei ymmärrä kopioida kuin tietyissä kansiossa ja kirjastoissa olevat tiedostot. Tärkeimmät tekstitiedostot tietokoneellani on tallennettu pilveen, joten ne ovat turvassa. Valokuvat ja muu media on tallennettu omalle kovalevylleen tai vähintään levyn osiolle. Nämä tiedostot eivät toki ole turvassa jos laite hajoaa.

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html” Simo Suominen