Näytetään tekstit, joissa on tunniste phpmyadmin. Näytä kaikki tekstit
Näytetään tekstit, joissa on tunniste phpmyadmin. Näytä kaikki tekstit

torstaina, toukokuuta 24, 2012

Salasanan palauttaminen VLLaskussa

No kaikkea sitä voi yrittäjän arjessa sattuakin! Olin siirtämässä VLLaskujärjestelmääni läppäristä eilen asentamaani Ubuntun LAMP-ympäristöön. Läppäristä olevasta tietokannasta olin ottanut kopion ja tehnyt  VLLaskun config.php:n mukaiset kannat Ubuntuun. Kaikki sujui kuin tanssi, paitsi, että en päässytkään yllättäen kirjautumaan laskutusjärjestelmääni! Minähän pidän kaikki salasanani KeePassX-nimisessä lompakkoohjelmassa, ja siksi en enää ollenkaan muista ulkoa noita 20 merkkiä pitkiä turvallisia salasanojani. Luonnollisesti olin siis kopioinut KeePassX:n salasanakannankin Ubuntuun, joten salasanojen piti olla ihan ajantasalla kummassakin koneessa.

Jostain käsittämättömästä syystä VLLaskun salasana oli korruptoitunut/muuttunut (olinkohan sitten tallentanut jonkun muun salasanan vahingossa sen päälle?) KeePassX:ssä. Laskutusjärjestelmäni ei auennut myöskään läppärissä. PhpMyAdminista selvisi, että VLLasku kryptaa käyttäjien salasanat, mikä on tietenkin erittäin hyvä asia, paitsi silloin kun on hätä kyseessä ;-) Hetken aikaa raavin päätäni oikein tosissani, kunnes vihdoin keksin keinon, jota kokeilla. Näin jälkikäteen mietittynä asian olisi voinut tehdä varmasti vieläkin yksinkertaisemmin, joten kerron ensin, miten itse tein ja mikä pelasti tilanteen ja sitten vielä toisen nopeamman, mutta käyttännössä testaamattoman tavan tehdä tämä sama asia.

Tapa A eli pitkän kaavan mukaan:

VLLaskuohjelman mukana tulee skriptitiedosto nimeltään create_database.sql. Tällä tiedostolla luodaan ohjelmaa asennettaessa kantaan kaikki VLLaskun tarvitsemat taulut oletussisältöineen.

Loin ensin PhpMyAdminilla testitietokannan, johon toin kaikki 15 taulua ajamalla create_database.sql-tiedoston. Sitten otin  dumpin  (kopion) vain taulusta nimeltään vllasku_users. Sen jälkeen avasin ajantasaisesta laskutusjärjestelmästä ottamani varmuuskopion tekstimuokkaimeen (Gedit tai Texture) ja etsin tiedostosta kohdan:


-- Vedos taulusta `vllasku_users`
--

INSERT INTO `vllasku_users` (`id`, `deleted`, `name`, `email`, `login`, `passwd`, `type_id`) VALUES
(1, 0, 'Administrator', '', 'admin', 'tässä kohdassa on salasanarimpsu', 2);

--
Tästä lohkosta löysin admin-käyttäjätunnuksen ja sen perästä pitkän MD5 salauksella toteutetun salasanan. Avasin myös tuon vll_users -taulusta ottamani dumpin tekstimuokkaimeen ja etsin siitäkin saman kohdan ja kopioin siellä olevan pitkän kryptatun salasanan. Sitten siirsin sen laskutusjärjestelmän tietokantadumpin INSERT INTO `vllasku_users` -lohkoon paikalleen. Tallennus!

Tämän jälkeen palasin PhpMyAdminiin ja tuhosin sekä tuon äsken tekemäni testitietokannan että laskutusjärjestelmän kannan, jossa oli  se korruptoitunut salasana. Loin laskutusjärjestelmälle uuden tietokannan ja ajoin tuon äsken muokkaamani tietokantadumpin sinne.

Sitten onnekseni sain huokaista helpotuksesta, sillä pääsin sisään laskutusjärjestelmääni VLLaskun oletustunnuksilla admin admin.

Tapa B eli lyhyempi kaava:

Nyt näin jälkikäteen mietin, että oliko vllasku_users -taulusta ottamani dump vain turha välivaihe. Olisinko voinut kopioida laskutusjärjestelmän tietokantadumpiin suoraan create_database.sql -tiedostosta kohdan:

INSERT INTO vllasku_users (id, name, email, login, passwd, type_id) VALUES (1, 'Administrator', '', 'admin', md5('admin'), 2);

Niin, mitä tästä nyt sitten oppisi? Ainakin sen, että salasanoille voi lompakossakin käydä joskus ohraisesti, joten siitä salasanatietokannastakin kannattaa olla useita eri varmuuskopioita. Toisekseen opin nyt sen, että VLLaskussakin salasanan voi resetoida, mutta tällöinkin kannattaa olla varmuuskopion varmuuskopio tietokantadumpista, että ei vahingossa sössi juttua ihan lopullisesti. Loppu hyvin, kaikki hyvi ja jälleen voin taas laskuttaa ;-)

P.s. Keksin vielä yhden tavan, jolla oletussalasana tai mikä tahansa salasana voidaan laittaa tuohon tietokannanpalautusdumppiin. Nimittäin täällä  voit käydä tekemässä vaikkapa sanasta admin MD5 salatun  ja lisätä se sitten vain tuohon: Vedos taulusta `vllasku_users` -kohtaan ja ajaa sitten PhpMyAdminilla dumppi kantaan.

keskiviikkona, toukokuuta 23, 2012

Ubuntu 12.04 LTS Apache2, Mysql ja PHP -ympäristö pystyyn

Eilen sain isimatilta kommentin/kysymyksen yrittäjän laskutusohjelmiin liittyen. Keskusteluamme voi käydä lukemassa täältä (kommenttilaatikosta).

Tänään pystytinUbuntu 12.4 LTS -koneeseeni LAMP (Linux+Apache2+Mysql+PHP) -ympäristöä, sillä haluan käyttää koneessani VLLaskua.

Tässä stepit, joillta asennukseni onnistui kivuttomasti.

1. Ensin asennetaan Apache2

Hae Unity-valikosta ohjelma nimeltään Pääte (Terminal) ja syötä komentoriville:

sudo apt-get install apache2

Testaa Apachen toimivuus selaimellasi.
http://localhost/

Apache2 :n ilmoitus onnistuneesta asennuksesta.

2. Asennetaan PHP5
sudo apt-get install php5 libapache2-mod-php5

Käynnistä Apache uudestaan, jotta php pääsee Apachen kyytiin :-)

sudo /etc/init.d/apache2 restart
PHP:n toimivuus kannattaa myös testata. Tee siis testisivu Gedit tekstinmuokkaimella /var/www-hakemistoon, johon muutoinkin tallennat sitten tulevaisuudessa esim. VLLaskun tai muut nettisivut, joita Apachellasi haluat näyttää. Gedit avataan komentoriviltä pääkäyttäjän oikeuksilla:

sudo gedit /var/www/testphp.php
Kopioi linkin takaa löytyvä  koodinpätkä tekstimuokkaimeesi ja tallenna: http://www.htmlite.com/php003.php

Testaa php:n toimivuus selaimellasi:
http://localhost/testphp.php

3. Asennetaan MYSQL


Tässä vaiheessa on hyvä pitää esillä jotain muistiota, sillä asennusvaiheessa sinun tulee luoda Mysql:lle pääkäyttäjän (root) salasana. Se on hyvä laittaa visusti talteen.


sudo apt-get install mysql-server
4. Asennetaan PhpMyAdmin 

Tämä vaihe ei ole välttämätön, mutta mysql-kantoja on tällä työkalulla huomattavasti helpompi käsitellä. PhpMyAdmin on myös työkalu, jolla voi kätevästi varmuuskopioida mysql-kantoja. Esimerkiksi VLLaskun tietokannasta kannattaa tehdä säännöllisin väliajoin kopio.

sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin
PhpMyAdmin löytyy osoitteesta:

http://localhost/phpmyadmin/
5. Laitetaan Php ja Mysql juttelemaan keskenään

Avataan siis  taas tekstimuokkainta pääkäyttäjän oikeuksilla. Kopioi teksti tiedostoon ja tallenna:

gksudo gedit /etc/php5/apache2/php.ini
Etsi tiedostosta kohta ;extension=mysql.so ja korvaa se extension=mysql.so eli ota edestä vain tuo puolipiste pois. Käynnistä tämän jälkeen Apache uudestaan kohdan 2 ohjeen mukaan.

/var/www -kansion oikeuksien (permissions) säätämistä


Kun/jos kaikki on kunnossa on sinulla nyt toimivat LAMP-ympäristö pystyssä. Oletuksena /var/www- kansio on pääkäyttäjän omaisuutta, joten tiedostojen kopiominen sinne tavallisena käyttäjänä ei ole kovinkaan helppoa. Tehdäänpä vielä asialle muutos :-)

1. Luodaan uusi käyttäjäryhmä (vaikkapa www-publisher) ja laitetaan sinne jäseniä. Avaa siis Pääte/Terminal -ohjelma uudestaan ja komentele seuraavasti:


groupadd www-publisher
usermod -a -G www-publisher käyttäjänimesi

Toista edellä mainittua riviä niin monta kertaa, että saat kaikki haluamasi käyttäjät www-publisher -ryhmän jäseniksi.

Jos haluat tarkistaa, mihin ryhmiin käyttäjänimesi kuuluu, voit tehdä sen komennolla:

groups käyttäjänimesi
2. Muutetaan pääkäyttäjän oikeuksia /var/www kansiolle ja tehdään se myös  rekursiivisesti eli siten, että kaikki käyttöoikeudet koskevat kaikkia alikansioitakin.

sudo chown -R root:www-publisher /var/www
Muutetaan kansion /vaar/www oikeudet, siten että omistajalla eli rootilla ja ryhmällä eli www-publisherilla on luku-, kirjoitus ja suoritusoikeudet; ja muilla, mukaanlukien Apachen www-datalla, on kirjoitus- ja suoritusoikeudet

sudo chmod 2775 /var/www
Vielä meidän täytyy muuttaa alikansioiden oikeudet edellämainituilla ominaisuuksillaan rekursiivisesti. Siihen käytetään find-komentoa.

find /var/www -type d -exec chmod 2775 {} \;
Tarkista vielä, että kansion umask on 0002:

cd /var/www

umask


HUOM! KANSION SÄÄDÖT TULEVAT VOIMAAN VASTA KUN KIRJAUDUT ULOS JA TAKAISIN KÄYTTÄJÄLLÄSI.