Linux projekti – Loppuraportti

Tässä raportissa kerromme, miten projektimme eteni, mitä haasteita meillä oli, ja millaiseen lopputilanteeseen pääsimme.

Vaihe 1: Androidin roottaaminen

Ensimmäinen tavoitteemme projektissa oli onnistuneesti rootata Android-puhelin ja dokumentoida tämä. Tämä onnistuikin helposti löydettyämme xda-developersin foorumeilta selkeät, oikealle puhelinmallille räätälöidyt ohjeet.

Vaihe 2: Etäyhteys SSH:lla

Seuraavaksi ryhdyimme käsittelemään varsinaisia aiheitamme, eli puhelimen etäkäyttöä. Pyrimme luomaan SSH-yhteyden puhelimelta puhelimelle ja tietokoneelta puhelimelle.

Aluksi tämä vaikutti erittäin haastavalta, sillä lukuisia eri ohjeita seurattuamme tyssäsi yrityksemme aina erilaisiin virheilmoituksiin. Lopulta saimme kuitenkin operaattorin tarjoaman vaihtuvan IP:n avulla yhteyden toimimaan ilman sen suurempia ongelmia tai asetusten muutoksia.

SSH-yhteyteen käyttämämme ohjelmat:

DropBear SSH Server /palvelin, jolle etäyhteys luodaan

ConnectBot /yhteyden muodostamiseen käytettävä ohjelma Androidilla

Terminal /tietokoneelta luotavaan yhteydenottoon

Vaihe 3: Androidin keskitetty hallinta

Viimeinen ja selkeästi haastavin tavoitteemme oli Androidin keskitetty hallinta. Alunperin olimme suunnitelleet tutustuvamme Puppetiin ja toteuttavamme hallinnan sillä. Tiesimme kuitenkin alusta saakka, että tämä tulisi olemaan erittäin haastavaa tai jopa mahdotonta. Etsimmekin Internetistä tietoa aiheesta ja yritimme mm. selvittää, onko kukaan muu aiemmin onnistunut tässä. Selvisi, että ilmeisesti tällä hetkellä ei ole ainoatakaan avoimen lähdekoodin ratkaisua, jonka avulla hallinta onnistuisi. Ainakaan emme onnistuneet tällaista mistään löytämään.

Meille ehdotettiinkin, että yrittäisimme tämän sijaan saada jonkinlaista hallintaa aikaan esimerkiksi fabricin avulla. Aloimmekin siis tutustumaan tähän, ja ratkaisu vaikutti huomattavasti lupaavammalta onnistumisen suhteen. Fabric on siis Python-kirjasto ja -komentorivityökalu, jonka avulla voidaan yksinkertaisesti hallinnoida komentoja.

Fabricin asennus tapahtui seuraavasti

$ sudo software-properties-gtk -e universe

$ sudo apt-get update

$ sudo apt-get install python-pip

$ pip install fabric

Käytimme pip:iä siksi, että Fabricin omalla sivulla suositellaan tekemään näin. Tämä siksi, että pip:n avulla asentuu aina viimeisin versio. Tämän jälkeen Fabricin piti siis olla asennettuna, mutta testatessamme sitä saimme virheilmoituksen, jonka mukaan näin ei ollut.

Annettiin siis vielä peruskomento

$ sudo apt-get install fabric

jonka jälkeen testattiin uudelleen:

$ nano fabfile.py

def hello():

print(”Hello world!”)

$ fab hello

Hello world!

Nyt Fabric siis toimi, ja päästiin perehtymään siihen, miten sillä voisi hallinnoida puhelinta SSH:n yli. Aloitimme selvittämällä, miten Fabricilla luodaan SSH-yhteys. Tämä tapahtuu seuraavasti:

$ nano fabfile.py

from fabric.api import *
env.user ’root’
env.hosts = [’193.66.xx.xx’]
env.password = {’salasana123’}

def deploy():
run(’echo Hello World!’)

$ fab deploy

Ajaessamme tämän vaikutti siltä, että yhteys kyllä syntyi, mutta jostain syystä emme kuitenkaan saaneet vastausta. Testasimme Fabricin toimintaa myös kahden koneen välisessä SSH-yhteydessä. Ajoimme äskeistä esimerkkiä vastaavan fabfilen (tietenkin toista tietokonetta vastaavilla ip-osoitteella ja käyttäjätunnuksella/salasanalla), ja tällöin yhteys onnistuikin heti. Ilmeisesti vika oli siis jälleen jollain tapaa mobiiliverkossa.

Päätimme myös testata meille tunnilla ehdotettua mosh;ia. Mosh on siis mobile ssh-clientti, jonka olisi tarkoitus nopeuttaa ssh-yhteyttä puhelimen ja ssh-palvelimen välillä. Ongelmaksemme tuli kuitenkin se, että Androidille on tarjolla vain moshin client-versio, olisimme tarvinneet server-version, jotta siitä olisi hyötyä tarvitsemallamme tavalla.

Pyrimme vielä jatkamaan ongelman selvittämistä keskiviikon esitystuntiin saakka.

Ajankäyttö:

Viikko 43: Aiheen ja ryhmän valinta ✔
Viikko 44: Projektisuunnitelman palautus ✔
Viikko 45: Aiheeseen tutustuminen, käytettävien sovellusten valinta ✔
– n.5h/henkilö. Tutustuimme itsenäisesti aiheeseen. Otimme selvää eri tavoista rootata puhelin, sekä myös ohjelmista, joita roottauksen jälkeen voisimme käyttää SSH-yhteyden luomiseen.

Viikko 46: Roottaus valmis, jatkoon perehtyminen. Väliraportin laatiminen ja esitys. ✔
– 4h/henkilö. Vietimme yhden opetuskerran roottaamisen suorittamiseen ja rootatun puhelimen ihmettelemiseen.

Viikko 47: SSH-palvelimen asennus ja konfigurointi, onnistumisesta riippuen testailua. ✔
– n. 10h/henkilö. Itsenäisen työskentelyn lisäksi kokoonnuimme kahdesti konfiguroimaan ja testaamaan.

Viikko 48-49: Keskitetty hallinta. Alkuperäisestä suunnitelmasta eroten päädyimme puppetin sijaan tutkimaan Fabricin tarjoamia mahdollisuuksia.
– n.25h/henkilö. Itsenäistä työskentelyä oli noin 8h/henkilö. Kokoonnuimme viitenä päivänä pähkäilemään yhdessä, ensin puppetia ja sen hylättyämme fabricia. Tämä näyttääkin lupaavalta, mutta emme kuitenkaan vielä tämän ajan puitteissa onnistuneet löytämään ratkaisua ongelmien ratkaisemiseksi. ✔

Viikko 50: Esitys luokassa.

Linux projekti – väliraportti vk48

Tähän mennessä Linux-projektissa aikaansaamamme asiat on selitetty edellisissä blogimerkinnöissä:

https://jaakkovalja.wordpress.com/2012/11/07/linuxprojekti-androidin-roottaaminen/

https://jaakkovalja.wordpress.com/2012/11/21/linux-projekti_ssh-yhteyden-luomine/

Projektin tavoitteet:
Projektillamme oli kolme tavoitetta. Ensin pyrimme selvittämään Androidin roottausta.

Roottasimmekin onnistuneesti minun Samsung Galaxy Ace -puhelimeni ensimmäisen viikon aikana.

 

Tämän jälkeen aloimme keskittymään projektimme työläämpään osa-alueeseen eli SSH-yhteyden luomiseen puhelimesta puhelimeen ja puhelimesta tietokoneelle.

Saimmekin tuon yhteyden lopulta toimimaan Saunalahden tarjoaman IP:n ansiosta.

 

Viimeisenä tavoitteena meillä oli tutustua ja mahdollisesti toteuttaa Androidin keskitettyä hallintaa puppetin avulla. Kiireellisen aikataulun johdosta toteutus ei kuitenkaan näillä näkymin tule onnistumaan. Pyrimme kuitenkin vielä tulevan viikon aikana tutustumaan aiheeseen ja dokumentoimaan tätä niin paljon kuin mahdollista.

Aikataulu ja toteutuminen:
Viikko 43: Aiheen ja ryhmän valinta ✔
Viikko 44: Projektisuunnitelman palautus ✔
Viikko 45: Aiheeseen tutustuminen, käytettävien sovellusten valinta ✔
Viikko 46: Roottaus valmis, jatkoon perehtyminen. Väliraportin laatiminen ja esitys. ✔
Viikko 47: SSH-palvelimen asennus ja konfigurointi, onnistumisesta riippuen testailua. ✔
Viikko 48: Mikäli SSH-palvelin on nopeasti saatu onnistumaan, perehdytään ja yritetään saada
toimimaan keskitetty hallinta. Muussa tapauksessa jatketaan SSH-palvelimen kimpussa.
Viikko 49: Viimeistellään projektia ja raporttia, palautus.
Viikko 50: Esitys luokassa.

Linux-projekti – SSH-yhteyden luominen

Androidin roottaamisen jälkeen aloimme ratkomaan projektimme seuraavaa ongelmaa: SSH-yhteyden muodostaminen puhelimen ja tietokoneen välille. SSH (Secure Shell)-yhteydes tarkoittaa käytännössä salattua yhteyttä kahden eri laitteen välillä, olivat ne sitten missä verkossa tahansa. Toinen laitteista toimii aina palvelimena ja toinen asiakkaana. SSH-yhteys on erittäin käytännöllinen, sillä sen avulla mahdollistuu turvallinen tiedon ja tiedostojen siirto laitteelta toiselle ilman muita ulkoisia apuvälineitä.

Viikolla 46 pidimme lyhyen esityksen siitä, mitä olimme tähän mennessä saaneet projektissamme aikaan. Lisäksi tutustuimme itsenäisesti lisää eri SSH-ohjelmiin ja tutkimme taustatietoa siitä, miten yhteys saataisiin muodostettua.

Löysimme mielestämme lupaavalta vaikuttavat ohjeet Cyanogenmodin sivuilta, joita aloimme seuraamaan.

Yritimme ensin noudattaa ohjeita niin, että Tommin puhelin (Samsung Galaxy S2) oli yhdistettynä koneeseen. Loimme koneella julkinen/yksityinen-salasanaparin ja kopioimme nämä myös puhelimen sdcardille. Tämä siksi, että vain oikean avaimen sisältävät koneet voivat ottaa yhteyden puhelimeen. Ennen tätä sdcard täytyi kuitenkin mountata saadaksemme rw-oikeudet, jotta tiedoston kopiointi onnistuisi.

Tämä onnistui komennoilla

$ adb shell

# mount -o remount rw /sdcard

Tämän jälkeen saimme siis tiedoston kopioitua sdcardille. Seuraavaksi täytyi ohjeiden mukaisesti luoda kansio, siirtää ko. tiedosto sinne ja tehdä joitain muokkauksia sen käyttöoikeuksiin. Törmäsimme kuitenkin kerta toisensä jälkeen virheilmoitukseen siinä vaiheessa, kun yritimme suorittaa komentoa

dropbearkey -t rsa -f /data/dropbear/dropbear_rsa_host_key

Ilmeisesti virheilmoitus johtui siitä, että ohjeissa oletettiin dropbearin olevan systeemissä valmiiksi asennettuna, kun taas todellisuudessa olemme jälkiläteen asentaneet sen siihen.

Yritimme siis seuraavaksi tehdä saman minun puhelimellani (Samsung Galaxy Ace), sillä flashasin siihen roottaamisen jälkeen CyanogenModin käyttöjärjestelmän, johon tuo dropbear oletuksena kuuluu. Tällä kertaa ohjeita seurattuamme pääsimmekin ohi tuon kohdan ja jatkamaan ohjeissa eteenpäin.

Komennolla

# ifconfig wlan0

saimme tietää puhelimeni ip-osoitteen (joka toki näkyy myös Dropbearissa puhelimessa) ja yritimme ottaa yhteyden koneelta puhelimeen. Jostain syystä tämä ei kuitenkaan toiminut puhelinverkon tai wlaninkaan kautta, ja vaikka yritimme monia säätöjä ja etsiä ohjeita eri lähteistä, ei mikään auttanut.

Lopulta päädyimme yrittämään yksinkertaisinta vaihtoehtoa, jota itse en ollut tullut edes ajatelleeksi. Koska molemmilla on Saunalahden liittymät, saa Oma Saunalahti-sivustolta vaihdettua asetuksen, jolla puhelinverkko alkaa käyttää IPv4-protokollaa. Tommi vaihtoi tämän asetuksen päälle ja puhelimessaan muutti vielä saunalahden APN:ää ja voilà!

Tämän jälkeen yhteyden muodostaminen onnistui välittömästi ilman ongelmia, yhteys pyysi vain rootin salasanan (oletuksena ”43”, vaihdoimme kuitenkin hieman monimutkaisempaan turvallisuden säilyttämiseksi) ja kaikki puhelimen tiedostot olivat saatavilla. Testasimme vielä, onnistuuko tätä kautta koneelta lisäämään esimerkiksi kansion puhelimelle. Annettuamme uudelleen tuon luku- ja kirjoitusoikeudet myöntävän komennon tämäkin onnistui ja kansio ”Testi” ilmestyi puhelimen File Manageriin. Yritimme myös yhdistää minun puhelimeni mobiiliverkon kautta Tommin puhelimeen SSH-yhteydellä käyttäen puhelimeni ConnectBot-ohjelmaa. Tämäkin yhteys onnistui ja pääsin selaamaan hänen tiedostojaan.
Ensi kerralla pyrimme vielä saamaan ”oikean” yhteyden toimimaan ilman Saunalahden tarjoamaa helpotusta, jonka jälkeen alamme selvittämään, onnistuisiko puppetin avulla useamman puhelimen keskitetty hallinta.

Linuxin keskitetty hallinta, kotitehtävä 2

Tein tehtävät HP:n Elitebookilla, Ubuntun versiolla 11.10.

Tehtävänä oli lukea Learning Puppetin kappaleet Ordering ja Modules and classes (part one). Näistä kummastakin tuli tehdä vähintään yksi esimerkkiohjelma.

Ordering

Kappaleessa käsiteltiin aihetta, joka on mielestäni koodikielelle erittäin epätavallista: puppetissa resursseja ei välttämättä ajeta siinä järjestyksessä, jossa ne koodissa esiintyvät. Järjestykseen voi kuitenkin tietenkin vaikuttaa komennoilla.

Aloitin antamalla komennon

$ nano ordering.pp

Sen sisällöksi loin seuraavaa:

file {’/home/example/esim1’:
mode => 0644,
content => ’this is an example’,
require => User[’example’],
}

user { ’example’:
ensure => present,
uid => ’2133’,
gid => ’admin’,
home => ’/home/example’,
password => ’esim223’,
shell => ’/bin/bash’,
managehome => true,
}

Tallennuksen jälkeen ajoin sen komennolla

$ sudo puppet apply ordering.pp
ja sain ilmoituksen, että luonti onnistui. Kävin myös tarkistamassa, ja tiedostokin oli luotu.
Modules and classes (part one)

Kappaleessa käsiteltiin luokkia, joilla voidaan kerralla kutsua useampia ohjelmakomentoja.

$ nano teht1.pp

class esimerkki {
file {’testi’:
path => ’/home/jaakko/puppet/classes/testi’,
ensure => present,
mode => 0664,
content => ”luokkien testausta”,
}
}

class {’esimerkki’:}

Määritellään siis ensin luokka ja sen sisälle komennot. Tämän jälkeen kutsutaan luokkaa jotta se ajettaisiin.

Tallennuksen jälkeen ajetaan komennolla

$ sudo puppet apply teht1.pp

notice: /Stage[main]/Esimerkki/File[testi]/ensure: created
notice: Finished catalog run in 0.04 seconds

Onnistui siis. Tarkistin vielä, että ko. tiedosto oli luotu, ja olihan se.

Linux-projekti – Androidin roottaaminen

Androidin roottaamisella tarkoitetaan sitä, että pystyy käyttämään puhelintaan root-oikeuksin. Käytännössä tämä tarkoittaa mahdollisuutta hallinnoida eri sovelluksia ja ominaisuuksia, joita tavallinen käyttäjä ei pysty muokkaamaan. Root-oikeuksin pystyy siis esimerkiksi poistamaan puhelimen mukana tulleita oletussovelluksia, jotka katsoo itselleen tarpeettomiksi.

Roottauksesta on muitakin hyötyjä: Akun kestoa pystyy pidentämään poistamalla tai jäädyttämällä turhia taustaohjelmia, ulkonäköä pystyy muokkaamaan entistä tehokkaammin sekä itse Androidin version päivitys mahdollistuu täysin uudella tavalla. Toki roottauksesta voi syntyä myös haittoja: Vahingossa saattaa tulla poistaneeksi jonkun oleellisen sovelluksen, jonka seurauksena puhelin tai jokin sen ominaisuus ei enää toimikaan kunnolla, tai voi tulla vahingossa sallineeksi jonkun sellaisen ohjelman, joka sisältää viruksia/haittaohjelmia.

Aloimme työparini kanssa tutkimaan puhelimeni (Samsung Galaxy Ace) roottaamismahdollisuuksia. Parin linkin jälkeen päädyimme XDA-Developersin foorumeille, josta löysimme selkeät ohjeet miten tämä toteutetaan:

1. Ladattiin sivustolta tiedosto upd_1.zip ja kopioitiin se sd-kortille.

2. Sammutettiin puhelin  ja käynnistettiin se recovery modessa home+power -napeilla.

3. Valittiin update from sdcard ja sieltä tuo ladattu zip-paketti.

4. Päivityksen jälkeen käynnistettiin puhelin normaalisti ja tarkistettiin, oliko roottaus onnistunut.

Ensimmäiseksi oli huomattavissa, että sovellusten joukkoon oli ilmestynyt uusi ohjelma, Superuser. Tämän työkalun avulla voidaan hallinnoida uusia asennettavia ohjelmia ja määritellä saavatko ne root-oikeudet.

Seuraavaksi testasimme ladata Google Play -sovelluskaupasta Titanium Backup -ohjelman. Tämän avulla ohjelmista voidaan ottaa varmuuskopioita ohjelmista ja poistaa niitä, siis myös sellaisia oletusohjelmia joita ei yleensä olisi pystynyt hallinnoimaan. Testasinkin poistaa muutaman (News & Weather, Yahoo! Finance), joka onnistuikin. Ainoa outo puoli oli se, että puhelin käynnisti itsensä uudelleen jokaisen poistetun sovelluksen jälkeen. Joka tapauksessa olimme siis saaneet onnistuneesti rootattua puhelimeni.
Aloimme seuraavaksi pohtia ei vaihtoehtoja SSH-yhteyden luomiseksi puhelimelta toiseen tai tietokoneelta puhelimeen. Latasimme seuraavat ohjelmat testi- ja vertailumielessä:

– ConnectBot

– DropBear

– SSHDroid

– SSHconnect

 

Linuxin keskitetty hallinta, kotitehtävä 1

Tehtävänä oli lukea sivulta http://docs.puppetlabs.com/learning/ kappaleet ”Resources and the RAL” sekä ”Manifests”.

Molemmista tuli sitten tehdä myös esimerkkikomentoja.

Resources and the RAL:

Kappaleessa käsiteltiin mm. uuden käyttäjän luomista, josta oli myös esimerkki. Lähdin siis yrittämään samaa.

$ nano user.pp

user { ’esimerkki’:
ensure => present,
uid => ’123’,
gid => ’admin’,
home => ’/home/esimerkki’,
password => ’esim123’,
shell => ’/bin/bash’,
managehome => true,
}

Tallennettuani tiedoston ajoin sen komennolla

$ sudo puppet apply user.pp

sain kuitenkin virheilmoituksen, jossa sanottiin, ettei uid ollut uniikki. Muokkasin sitä siis niin, että 123:n sijaan arvoksi tuli 1123, ja yritin uudelleen. Nyt komento onnistui ja sain ilmoituksen

notice: /Stage[main]//User[esimerkki]/ensure: created
notice: Finished catalog run in 0.40 seconds

Tarkistin vielä, että esimerkiksi määrittelemäni kotikansio oli luotu, ja näin olikin tapahtunut.

Manifests:

Kappaleessa käsiteltiin erilaisia tiedostoja, niiden luontia ja ajamista.

Päätin kokeilla helpolta vaikuttavaa esimerkkiä, jossa yhdellä .pp-tiedostolla saadaan luotua useita tiedostoja .pp ajamalla.

loin siis ensin tiedoston komennolla

$ nano 1.file.pp

Tämän tiedoston sisällöksi annoin seuraavaa:

file {’/home/esimerkki/esim1’:
ensure => directory,
mode => 0644,
}

file {’/home/esimerkki/esim2’:
ensure => present,
content => ”Tämä on esimerkkitiedosto”,
}

notify {”Tämä on huomautus”:}

Rehellisyyden nimissä täytyy myöntää, että tuon viimeisen huomautuksen funktiota en vielä ihan sisäistänyt, kunhan nyt seurasin esimerkin ohjeistusta.

Tallentamisen jälkeen ajoin tiedoston komennolla

$ sudo puppet apply 1.file.pp

sain seuraavia ilmoituksia:

notice: /Stage[main]//File[/home/esimerkki/esim2]/ensure: created
notice: /Stage[main]//File[/home/esimerkki/esim1]/ensure: created
notice: Tämä on huomautus
notice: /Stage[main]//Notify[Tämä on huomautus]/message: defined ’message’ as ’Tämä on huomautus’
notice: Finished catalog run in 0.06 seconds

Ilmeisesti tuo antamani notify ainakin tässä vaiheessa näkyi, lieneekö sitten jokin huomautus, jonka voi lisätä .pp-tyyppisiä tiedostoja ajaville käyttäjille nähtäväksi lisäinfoksi.

Tässä tapauksessa olisi siis voinut kirjoittaa esim. ”Tämä luo kansion ja tiedoston polkuun /home/esimerkki”.

Kävin vielä tarkistamassa kansion, johon olin tuon tiedoston ja alikansion määritellyt luotavaksi, ja sieltähän nuo löytyivät.

Testasin vielä myös komennolla

$ cat /home/esimerkki/esim2

ja sain vastaukseksi tulostuksen
Tämä on esimerkkitiedosto

Lähteet:

http://docs.puppetlabs.com/learning/ral.html

http://docs.puppetlabs.com/learning/manifests.html

www.terokarvinen.com

Linux-projekti ict4tn018-1 projektisuunnitelma

Tässä on projektisuunnitelmamme Tero Karvisen kurssille Linux-projekti. Aiheen projektiin sai itse valita.

Aihe:

Androidin roottaaminen, etäkäyttö SSH:lla ja keskitetty hallinta.

Valitsimme tämän aiheen, koska olemme molemmat kiinnostuneita Android-maailmasta. Itselleni lisäkiinnostusta tuo myös mahdollisuus projektin aikana suoritettavasta oman puhelimeni roottauksesta. Lisäksi etäkäyttö ja keskitetty hallinta puhelimissa ovat aiheita, joihin ei juuri ole perehdytty ja joista ei ylipäänsä tiedetä kovin paljon.

Ryhmän jäsenet:
Tommi Stadius, kokemusta Androidin roottauksesta, toimii tämän aihealueen vastuuhenkilönä.
Jaakko Väljä, vastuualue SSH-palvelimeen perehtyminen ja toteutus.
Keskitettyyn hallintaan tutustuminen ja sen toteutus toteutetaan kokonaisuudessaan yhdessä.

Projektin tavoite:
Projektillamme on kolme tavoitetta. Ensin pyrimme selvittämään ja toteuttamaan Android-
puhelimen roottauksen. Tämän jälkeen asennamme puhelimelle SSH-palvelimen ja yritämme
konfiguroida sen niin, että SSH-yhteys puhelimeen ja puhelimesta toimii. Viimeisenä tutkimme
mahdollisia keskitetyn hallinnan sovelluksia ja sitä, onko käytännössä mahdollista toteuttaa
puhelimien välistä keskitettyä hallintaa.

Laitteisto & ohjelmisto:

Projektin toteutuksessa käytämme omia puhelimiamme, Samsung Galaxy Ace Android version 2.3.6
ja Samsung Galaxy S2 Android version 4.0.4. Roottaus-vaiheessa tulemme mahdollisesti käyttämään
esimerkiksi sovelluksia SuperSU ja STweaks. SSH-palvelinsovelluksia on useita, tällä hetkellä olemme harkinneet ainakin seuraavia: DropBear SSH-server, ConnectBot, SSHDroid, Quick SSHd ja SSH Autotunnel.

Aikataulu:
Viikko 43: Aiheen ja ryhmän valinta
Viikko 44: Projektisuunnitelman palautus
Viikko 45: Aiheeseen tutustuminen, käytettävien sovellusten valinta
Viikko 46: Roottaus valmis, jatkoon perehtyminen. Väliraportin laatiminen ja esitys.
Viikko 47: SSH-palvelimen asennus ja konfigurointi, onnistumisesta riippuen testailua.
Viikko 48: Mikäli SSH-palvelin on nopeasti saatu onnistumaan, perehdytään ja yritetään saada
toimimaan keskitetty hallinta. Muussa tapauksessa jatketaan SSH-palvelimen kimpussa.
Viikko 49: Viimeistellään projektia ja raporttia, palautus.
Viikko 50: Esitys luokassa.

Linux palvelimena – verryttely

Ubuntun lataaminen koneelle

Aloitin tehtävän toteuttamisen sunnuntaina 22.1.2012. Käyttöjärjestelmänä toimi Windows 7, internetselaimena Google Chrome. Aloitin hakemalla google.fi -sivustolta hakusanalla “Ubuntu”. Valitsin ensimmäisen tuloksen, “ubuntu-fi.org/”, jonka etusivulta jatkoin painamalla linkkiä “LATAA UBUNTU” ja sen jälkeen valitsemalla kohdan 2, “Kirjoita lataamasi tiedosto USB-tikulle” Linkistä auenneelta sivulta latasin Ubuntu-käyttöjärjestelmän painamalla ohjeita seuraten Ubuntun latauslinkkiä.

Ubuntun asennus USB-muistitikulle

Samalta sivustolta, jolta lataaminen tapahtui, jatkoin 2. kohdan ohjeiden mukaan. Valitsin “I would like to create a: USB stick” ja painoin “Show me how”, jota seuraavalta sivulta latasin “DOWNLOAD”-painikkeella Universal USB-installerin. Seurasin asennusohjelman ohjeita ja valitsin ensin asennettavan Ubuntun version, seuraavaksi tiedoston polun, ja viimeiseksi USB-portin, johon tikkuni oli yhdistetty. Tämän jälkeen jatkoin painamalla “Create” ja vahvistamalla valintani “Kyllä” -painikkeella

Liverompulta boottaaminen

Asennuslevykkeen USB-tikulle tallentamisen jälkeen aloitin varsinaisen tehtävän eli liverompulta boottaamisen.  Boottasin tietokoneen, ja ennen multiboot-ikkunan aukeamista painoin Esc-näppäintä. Seuraavassa valikossa painoin F9-näppäintä, jolloin USB-tikku käynnisti automaattisesti tikulle tallentamani Ubuntu 11.10:ä.

SSH-palvelimen luonti

Ubuntun käynnistyttyä avasin terminaalin kirjoittamalla Dash Home searchiin terminal ja avaamalla ensimmäisen vaihtoehdon. Tämän jälkeen kirjoitin komentoriville ”sudo apt-get install openssh-server” (väliviivat tulivat nollan oikealla puolella olevasta + -näppäimestä). SSH:n lataamisen ja asennuksen aikana jouduin kerran valitsemaan [y/n] vaihtoehdoista y:n, jonka jälkeen asennus olikin valmis. Loin uuden käyttäjän ”jaakko” kirjoittamalla komennon ”sudo adduser jaakko”. Tämän jälkeen jouduin vielä kirjoittamaan kahdesti käyttäjälle salasanan.

Linux palvelimena – LAMP

Tehtävänä oli asentaa LAMP (= Linux, Apache, MySQL, PHP).

Tein tehtävän koulun läppärillä ja aiemmin tätä kurssia varten tekemälläni Ubuntu liverompulla (tai USB-tikulla).

LINUX

Boottasin koneen, mutta ilmeisesti en ole asettanut USB:tä ensisijaiseksi käynnistysvaihtoehdoksi, sillä kone meni automaattisesti multiboot-valikkoon.

Käynnistin siis koneen uudelleen, painoin ESC:iä, ja auenneessa valikossa F9, jolla pääsin boottaamaan tikultani.

Ubuntun käynnistyessä minulla olisi ollut mahdollisuus asentaa Ubuntu, mutta tätä harjoitusta varten päätin vain kokeilla sitä asentamatta.

APACHE

Apachen asentamiseksi annoin seuraavat komennot:

– sudo apt-get update

– sudo apt-get install apache2

Aikoessani testata Apachen toiminnan komennolla:

– firefox ”http://localhost”

eteeni osui ongelma. Käyttämäni Ubuntun versio oli ilmeisesti suunniteltu erilaiselle näppäimistölle, eikä minulla ollut hajuakaan miten saan ”-merkin nykyisillä asetuksilla. Etsin siis Googlesta hakusanalla ”Ubuntu keyboard layout” ohjetta asetusten muuttamiselle, ja pian löysinkin komennon:

– sudo dpkg-reconfigure keyboard-configuration

Tämä avasi valikon, josta sain valita käyttämäni näppäimistön (EliteBookia ei listasta löytynyt, joten valitsin toisen HP:n läppärin), kieleksi ja asetteluksi suomen, ja sain näppäimistön toimimaan niin kuin sen mielestäni kuuluukin.

Kirjoitin siispä tuon edellä mainitsemani komennon firefoxin avaamiseksi. Tässä vaiheessa terminaaliin tuli joitain virheilmoituksia, mutta Firefox kuitenkin aukesi ja localhost-sivu ilmoitti ”It works!”

Omien sivujen luomiseksi annoin seuraavaksi komennot

– sudo a2enmod userdir

– sudo /etc/init.d/apache2 restart

Nyt kun käyttäjäsivu on otettu käyttöön, loin kansion public_html, siirryin ko. kansioon, ja loin sinne tiedoston index.html:

– mkdir public_html

– cd public_html

– nano index.html

Kirjoitin index.html:ään vain ”Tämä on testi”, tallensin tiedoston, ja siirryin firefoxilla osoitteeseen localhost/~ubuntu, jossa luki tuo antamani teksti. Sivu siis toimi!

MySQL ja PHP

Yritin antaa komennon

– sudo apt-get install mysql-server phpmyadmin

mutta sain aina virheilmoituksen siitä, että phpmyadmin ei löydy. Aikani aihetta tutkittuani netistä, selvisi että universe pitää olla aktivoituna. Komennolla

– sudo software-properties-gtk -e universe homma alkoi toimimaan. Annoin asennuskomennon uudelleen, ja asennus onnistui. Asennuksen yhteydessä valitsin, että phpmyadim konfiguroi itsenstä automaattisesti Apachea varten.

Jotta PHP toimisi Apachella, täytyi minun muokata tiedostoa

– sudo nano /etc/apache2/mods-enabled/php5.conf

Kommentoituani vaaditut rivit käynnistin vielä Apachen uudestaan komennolla

– sudo /etc/init.d/apache2 restart

Muokkasin aiemmin luomaani index.html tiedostoa lisäämällä siihen yksinkertaisen php-pätkän

<?php

print (2+2)

?>

Ja muutin tiedoston nimen index.php:ksi.  Firefoxilla avasin sivun localhost/~ubuntu, jolla oli nyt ”Tämä on testi” -tekstin lisäksi numero neljä. Succes!

Apuna käytin:

http://www.howtoforge.com/changing-language-and-keyboard-layout-on-various-linux-distributions

terokarvinen.com

Linux palvelimena – Metapaketteja

1. Metapaketin luominen

Lähdin toteuttamaan tehtävää etsimällä internetin ihmemaailmasta ohjeita, kuinka tämä tehdään.

Ohjeet löydettyäni kirjoitin ensin seuraavan komennon:

– sudo apt-get install equivs

Tämän jälkeen loin uuden kansion ”metapaketti”, ja siirryin ko. kansioon:

– mkdir metapaketti

– cd metapaketti

Seuraavaksi loin tiedoston ja avasin sen muokkausta varten:

– equivs-control paketti.cfg

– nano paketti.cfg

Muokkasin tiedoston seuraavanlaiseksi:

Package: paketti
# Version: 1.0
# Maintainer: Jaakko Väljä <jaakko.valja@gmail.com>
# Pre-Depends: <comma-separated list of packages>
# Depends: chromium-browser, vlc, openssh-server
# Recommends: <comma-separated list of packages>
# Suggests: <comma-separated list of packages>
# Provides: <comma-separated list of packages>
# Replaces: <comma-separated list of packages>
# Architecture: all
# Copyright: <copyright file; defaults to GPL2>
# Changelog: <changelog file; defaults to a generic changelog>
# Readme: <README.Debian file; defaults to a generic one>
# Extra-Files: <comma-separated list of additional files for the doc directory>
# Files: <pair of space-separated paths; First is file to include, second is de$
#  <more pairs, if there’s more than one file to include. Notice the starting s$
Description: pari ohjelmaa harjoitusta varten
.
second paragraph

Tallennettuani ja suljettuani tiedoston muunsin sen pakettimuotoon ja lopuksi testasin sen toimivan:

– equivs-build paketti.cfg (joka loi tiedoston paketti_1.0_all.deb)

– sudo gdebi -n paketti_1.0_all.deb

2. Metapaketti dependicer:illa

Latasin dependicer:in komennolla:

– wget http://terokarvinen.com/wp-content/uploads//2011/09/dependicer-0.1-alpha.tar.gz

Tämän jälkeen purin paketin ja aloin tutkia sen erästä tiedostoa:

– tar -xvf dependicer-0.1-alpha.tar.gz

– nano dependicer-packages.dpd

Kyseinen tiedosto sisälsi seuraavat rivit:

# Multiple metapackages for dependicer
# package:      dependency1, dependency2…
dependicer-coding:   nano emacs git bzr
dependicer-graphics: inkscape, gimp
dependicer-server: apache2
dependicer-workstation:      teros-coding, teros-drawing, dependicer-server

Lisäsin tiedostoon yhden rivin:

dependicer-testi:   gimp

Tallennettuani ja suljettuani tiedoston ajoin dependicerin komennolla

– ./dependicer dependicer-packages.dpd

Tämän jälkeen vielä asensin luomani paketin komennolla:

– sudo gdebi -n dependicer-testi_0.20120213.2223_all.deb

Apuna tehtävien teossa käytin sivustoa terokarvinen.com