4. Aikajana

a) Captain obvious. Linuxissa on paketinhallinta, joten ohjelmien asentaminen on yksinkertaista. Tee tila, joka asentaa 10 suosikkiohjelmaasi paketinhallinnasta. Tässä a-kohdassa voit jättää ohjelmat oletusasetuksille.

Päätin käyttää jo olemassa olevaa installs-tilaa ja muokata sen asentamaan useamman paketin kerralla. Tein tämän koska halusin pitää saltin mahdollisimman siistinä. Linux-aloittelijalle vaikeinta oli keksiä ohjelmia, joita asentaa.

Ennen:
vim:
   pkg.installed
 libreoffice:
   pkg.installed

Jälkeen:
installs:
   pkg.installed:
     - pkgs:
       - vim
       - libreoffice
       - curl
       - httpie
       - atool
       - net-tools
       - util-linux

Ajoin tilan paikallisesti debug-modissa, koska halusin testata tilaa ja seurata mitä tapahtuu.

$ sudo salt-call --local -l  debug state.apply installs

Tämä onnistui hyvin, joten sen jälkeem ajoin tilan molemmille minioneille.

Mikä ei taas onnistunut yhtä hyvin.

Näyttää siltä, että minion2:lla on verkkoyhteysongelmaa, joten testaan sillä, että kaikki kunnossa. Ajan minion2:lla updaten ja testaan yhteyden.

Kaikki kunnossa, joten ajan installs-tilan uudelleen, ja tällä kertaa onnistuneesti. Ilmeisesti tilapäinen verkkohikka.

Tarkistan vielä minion2:lla, että ohjelmat ovat asennettu.

b) Sammakko ja skorppioni. Lisää Microsoftin pakettivarasto ja asenna Visual Studio Code.

En millään löytänyt asennusohjeet, joita käytimme tunnilla tätä varten, joten tyydyin googlettamaan. Löysin sivulla https://linuxize.com/post/how-to-install-visual-studio-code-on-ubuntu-18-04/ seuraavat asennusvaiheet, jotka vaikuttivat tutulta.

Vaihe 1. 
$ sudo apt update 
$ sudo apt install software-properties-common apt-transport-https wget
Vaihe 2. 
$ wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -
Vaihe 3. 
$ sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"
Vaihe 4. 
$ sudo apt install code

Jokaisen vaiheen välissä tarkistan viimeisimmät muuttuneet tiedostot ($ sudo find -printf ‘%T+ %p\n’|sort|tail’).

Vaihe 1. asennettu riippuvuudet

Vaihe 2. lisätty avain

Vaihe 3. haettu varasto

Vaihe 4. asennettu Visual Studio Code

Tämän jälkeen tutkin muutetut tiedostot tarkemmin.

Selkeyden ja harjoituksen vuoksi siirsin VSC:n varaston tiedostosta /etc/apt/sources.list omaan tiedostoon /etc/apt/sources.list.d/microsoft.list.

Tämän jälkeen luon salt-tilan, jonka avulla voin asentaa VSC minioneille. Tila asentaa Visual Studio Code ja ajaa updaten sekä käyttää saltissa määriteltyjä tiedostoja.

/srv/salt/vscode/init.sls

 /etc/apt/trusted.gpg.d/microsoft.gpg:
   file.managed:
     - source: salt://vscode/microsoft.gpg
 /etc/apt/sources.list.d/microsoft.list:
   file.managed:
     - source: salt://vscode/microsoft.list
 code:
   pkg.installed:
     - refresh: True

Ja kopion ajankohtaiset tiedostot tilaan.

Kun tila on valmis, poistan Visual Studio Coden ja tiedostot.

$ sudo apt purge code
$ sudo rm /etc/apt/trusted.gpg.d/microsoft.gpg
$ sudo rm /etc/apt/sources.list.d/microsoft.list 

Asennan VSC minioneille salt-tilan avulla.

Onnistunut asennus molemmille.

Lopuksi testaan minion2:lla, että SVC avautuu onnistuneesti.

c) CSI Pasila. Tiedostoista saa aikajanan ‘cd /etc/; sudo find -printf ‘%T+ %p\n’|sort|tail’.

  • Anna esimerkki aikajanasta

Edellisessä tehtävässä juuri asennettu Visual Studio Code, eli viimeisimmät tiedostot koskevat sitä.

  • Selitä jokainen kohta komennosta, jolla aikajana tehdään. Vinkki: ‘%T+’ löytyy ‘man find’ kohdasta printf.

find = etsitään tietoa

printf = find-komennon parametri, print format, eli tulostaa tulokset määrätyn muodon mukaisesti

%T = tiedoston viimeisin käyttöaika

%p = tiedoston nimi

\n = lisää rivinvaihtoja (helpottaa lukemista)

sort = järjestää tulokset aikajärjestyksessä

tail = näyttää viimeiset 10 riviä, eli uusimmat tulokset

  • Aja jokin komento, joka muuttaa järjestelmän yhteisiä asetustiedostoja
$ sudo apt update
$ sudo apt upgrade
  • Ota uusi aikajana ja etsi muutos sieltä
  • Onko samalla hetkellä muutettu yhtä vai useampaa tiedostoa?

Päivitettävää oli aika paljon, joten paljon tiedostoja myös muutettiin.

c) Tiedän mitä teit viime kesän^H^H^H komennolla. Säädä jotain ohjelmaa ja etsi sen muuttamat tiedostot aikajanasta. Tee sitten tästä oma Saltin tila.

Tässä tehtävässä asennan vsftpd – very secure ftp daemon. Asennan sen ensin käsin, ja sen jälkeen luon salt tilan kun olen selvittänyt mitä asennuksessa tapahtuu.

Käytän apuna asennuksessa ohjeet sivuilla https://phoenixnap.com/kb/install-ftp-server-on-ubuntu-vsftpd ja https://www.digitalocean.com/community/tutorials/how-to-set-up-vsftpd-for-a-user-s-directory-on-ubuntu-18-04

Aluksi asennan päivitykset ja vsftpd-daemonin. Lisäksi teen konfiguraatiotiedostosta varmuuskopion.

Vaihe 1. Asennus
$ sudo apt update
$ sudo apt install vsftpd
$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf_default

Tutkittu mitkä tiedostot muuttuivat.

Avattu palomuuri FTP:lle (portit 20 ja 21) ja TLS:lle (portti 990).

Vaihe 2. Palomuuri
$ sudo ufw allow 20/tcp
$ sudo ufw allow 21/tcp
$ sudo ufw allow 990/tcp

Luon testikäyttäjän.

Vaihe 3. Käyttäjä
$ sudo adduser testuser
$ sudo mkdir /home/testuser/ftp
Set ownership:
$ sudo chown nobody:nogroup /home/testuser/ftp
Remove write permission:
$ sudo chmod -R a-w /home/testuser/ftp
Verify permissions:
$ sudo ls -la /home/testuser/ftp
Directory for file uploads:
$ sudo mkdir /home/testuser/ftp/files
$ sudo chown testuser:testuser /home/testuser/ftp/files
Add test file:
$ echo "vsftpd test file" | sudo tee /home/testuser/ftp/test.txt
Vaihe 4. Yhdistä FTP palvelimeen
$ sudo ftp ubuntu-ftp
Vaihe 4. Konfiguraatiotiedoston muokkaus
$ sudo nano /etc/vsftpd.conf
write_enable=NO => YES 
# käyttäjä voi tehdä muutoksia kotihakemistossa
chroot_local_user=YES
# poista kommentti, rajaa käyttäjän kotihakemistoon
$ sudo systemctl restart vsftpd.service

Tämän jälkeen testaan, että FTP yhteys toimii. Testaamisessa esiintyi aika paljon ongelmia hakemistojen ja tiedostojen oikeuksissa, joten niitten kanssa joutui hieman jumppaillemaan, mutta lopulta onnistui.

Lopuksi kävin vielä läpi asennus- ja konfiguraatiovaiheet. Poistin turhat vaiheet (esim. testitiedosto ja tls) ja selkeytin osan (chroot_local_user kommentoitu pois).

Vaihe 1. Asennus
$ sudo apt update
$ sudo apt install vsftpd

Vaihe 2. Palomuuri
$ sudo ufw allow 20/tcp
$ sudo ufw allow 21/tcp

Vaihe 3. Käyttäjä
$ sudo adduser testuser
$ sudo mkdir /home/testuser/ftp
Set ownership:
$ sudo chown nobody:nogroup /home/testuser/ftp
Remove write permission:
$ sudo chmod a-w /home/testuser/ftp
Directory for file uploads:
$ sudo mkdir /home/testuser/ftp
$ sudo chown testuser:testuser /home/testuser/ftp

Vaihe 4. Konfiguraatiotiedoston muokkaus
$ sudo nano /etc/vsftpd.conf
write_enable=NO => YES 
# käyttäjä voi tehdä muutoksia kotihakemistossa
$ sudo systemctl restart vsftpd.service

Nyt kun käsin asennettu daemoni on todistettu toimivaksi ja muutetut tiedostot kaivettu esiin, rakennan Saltille tilan. Lisäksi kopioin tarvittavat tiedostot uuteen vsftpd-tilan hakemistoon. Tein ensin tilan, jossa oli sekä vsftpd että ufw, mutta päätin sittenkin tehdä palomuurille oma tila.

/srv/salt/vsftpd/init.sls

install and configure vsftpd:
   pkg.installed:
     - name: vsftpd
   file.managed:
     - name: /etc/vsftpd.conf:
     - source: salt://vsftpd/vsftpd.conf
   service.restart:
     - name: vsftpd
     - watch:
       - file: /etc/vsftpd.conf
/srv/salt/ufw/init.sls

install and run:
   pkg.installed:
     - name: ufw
   service.running:
     - name: ufw.service
 /etc/ufw/user.rules:
   file.managed:
     - source: salt://ufw/user.rules
 /etc/ufw/user6.rules:
   file.managed:
     - source: salt://ufw/user6.rules

Palomuurisäännöille kuvittelisin, että on joku helpompi tapa millä saa säännöt määriteltyä saltilla. Käyttämäni ratkaisu ei ole kovin hyvä, sillä se määrittää palomuurisäännöt master-palvelimen mukaan eikä ota huomioon muita ohjelmia, eli luo ongelmia. Googlettamalla löytyikin jotain ratkaisuja, joissa on hyödynnetty pillaria. Pillar on kuitenkin vielä hieman epäselvä käsite, joten pysyttelen tässä tuttuun file.managed moduuliin. Useamman konfiguraatiotiedoston muokkaaminen on myös kysymysmerkki. En löytänyt tähän mitään selkeätä ohjetta, joten tässäkin pysyn tutussa ja turvallisessa tavassa. Se on kuitenkin asia, jonka kanssa voisi joskus jumppailla.

Tarkistan vielä, että kaikki tiedostot ovat lopulta oikeissa hakemistoissa.

Lisäksi luon erillisen tilan testikäyttäjälle, eri tila koska käyttäjä ei vaikuta itse daemonin toimintaan, vaan on vain työkalu testaamiselle.

/srv/salt/testuser/init.sls

testuser:
  user.present:
    - fullname: testuser
    - home: /home/testuser
    - shell: /bin/bash
    - password: *****

ftp_directory:
  file.directory:
    - name: /home/testuser/ftp
    - user: nobody
    - group: nobody
    - mode: 555

testfile:
   file.managed:
     - name: /home/testuser/testing.txt
     - user: testuser
     - group: testuser
     - mode: 755
     - create: True

Kun tilat ovat valmiit, poistan käsin asennetun vsftpd:n ja testaan tilat.

Aloitan testin testuser-tilasta, sillä arvelen, että siinä saattaa olla ongelmia. Ja olin oikeassa.

Onneksi kyseessä oli vain pieni typo, eli group piti olla nogroup eikä nobody. Korjauksen jälkeen tilan ajaminen onnistui.

Seuraavaksi ajan ufw-tilan, jossa myös löytyi typo.

Uudestaan löytyi ongelmia, eli olin unohtanut muuttaa source-filen polkua kun päätin tehdä ufw:lle oma tila.
Ongelmia löytyy kuitenkin edelleen. Aikaisemman käyttöoikeus-jumpan jälkeen veikkaan kuitenkin aika nopeasti, että ongelma liittyy siihen.

Muutan oikeudet readiksi kaikille ja ajan tilan uudestaan. Tällä kertaa onnistuneesti.

Seuraavaksi ajan viimeisen tilan, eli vsftpd.

Jossa näköjään on ongelmia file.managedin kanssa…Ongelma lienee kuitenkin taas vain kaksoispiste, tällä kertaa ylimääräinen.
Seuraavaksi ongelmaksi nousee watch, mikä ei nähtävästi sovi yhteen service.restartin kanssa.

Nähtävästi ongelma on kuitenkin service.restart, jonka muutan service.runningiksi. Tällä muutoksella tilan ajaminen onnistui.

Joten lopuksi vielä testaan vsftpd-yhteyden minion2:lla, eli eri kone kuin master.

Ongelmia esiintyy heti alkuun, eli ilmeisesti selkokielinen salasanani ei toimi…En oikein keksi man-sivuista tai saltstack dokumentaatiosta mitään apuja, joten päätän kokeilla luoda käyttäjä ilman salasanaa empty_password parametrilla.

ei ole vissiin enää ajankohtainen

Sekään ei kuitenkaan auttanut, ja kun en löytänyt tähän mitää muuta tapaa, päätin käsin muuttaa testuserin salasanaa, jotta pääsen testailemaan vsftpd:tä. Ja se toimii!!

Viimeiseksi täällä vielä muokatut ja testatut tilat:

/srv/salt/vsftpd/init.sls

install and configure vsftpd:
   pkg.installed:
     - name: vsftpd
   file.managed:
     - name: /etc/vsftpd.conf
     - source: salt://vsftpd/vsftpd.conf
   service.running:
     - name: vsftpd
     - enable: True
     - reload: True
     - watch:
       - file: /etc/vsftpd.conf
/srv/salt/ufw/init.sls

install and run:
   pkg.installed:
     - name: ufw
   service.running:
     - name: ufw.service
 /etc/ufw/user.rules:
   file.managed:
     - source: salt://ufw/user.rules
 /etc/ufw/user6.rules:
   file.managed:
     - source: salt://ufw/user6.rules
/srv/salt/testuser/init.sls

testuser:
   user.present:
     - fullname: testuser
     - home: /home/testuser
     - shell: /bin/bash
 ftp_directory:
   file.directory:
     - name: /home/testuser/ftp
     - user: nobody
     - group: nogroup
     - mode: 555
 testfile:
   file.managed:
     - name: /home/testuser/testing.txt
     - user: testuser
     - group: testuser
     - mode: 755
     - create: True

Uuden käyttäjän salasanan määrittäminen jää vielä mysteriiksi. Lisäksi palomuurisäännöille olisi kiva löytyy joku järkevämpi ratkaisu, ettei tarvitse mennä muokkaamaan sääntötiedostoa.

d) Asenna jokin toinen ohjelma asetuksineen.

Päätin tehtävässä olevan ehdotuksen mukaisesti asentaa jokin GUI. Gnome3 vaikuttaa kivalta ja ainakin osittain tutulta, joten kokeilen sitä.

Asennan sen ensin käsin, ja sen jälkeen salt-tilan avulla.

Ohjeena käsin asentamiselle käytän https://linuxconfig.org/how-to-install-gnome-on-ubuntu-18-04-bionic-beaver-linux

Asennus:

$ sudo apt install gnome-session gdm3

Asennuksen aikana saan kyselyn default-guista.

Lisäksi pitää kirjautua ulos, ja sisäänkirjautumisen yhteydessä valita sign in with GNOME on Xorg

Muutettuja tiedostoja on valtava määrä.

Tuon asennuksen aikana tulleen kyselyn perusteella, tämä vaikuttaa lupaavalta:

Kun olen todennut, että Gnome3 on onnistuneesti käynnissä, luon salt tilan.

/srv/salt/gnome3/init.sls

install gnome3:
   pkg.installed:
     - pkgs:
       - gnome-session
       - gdm3
 /etc/X11/default-display-manager:
   file.managed:
     - source: salt://gnome3/default-display-manager

Tämän jälkeen poistan gnomen ($ sudo apt purge gnome-session gdm3), käynnistän koneen uudeellen ja ajan salt-tilani ensin minion1:llä.

Rebootin jälkeen ei kuitenkaan näytä hyvältä, vaan se jää vaan rullaamaan.

Sain tähän hätään apua, ja sain koneen bootattua recoveryn kautta. Samalla poistettiin gnome. Mutta en kyllä millään keksi mitä voisin tehdä toisin, jotta gnomen saisi asennettua saltilla. Todennäköisesti pitää tehdä paljon muutakin konfiguraatiota kuin tuo yksi tiedosto.

Lähteet:

Tehtävät: http://terokarvinen.com/2020/configuration-management-systems-palvelinten-hallinta-ict4tn022-autumn-2020/

Ohjeet:

Visual Studio Code asennus: https://linuxize.com/post/how-to-install-visual-studio-code-on-ubuntu-18-04/

Vsftpd: https://phoenixnap.com/kb/install-ftp-server-on-ubuntu-vsftpd

https://www.digitalocean.com/community/tutorials/how-to-set-up-vsftpd-for-a-user-s-directory-on-ubuntu-18-04

Gnome 3: https://linuxconfig.org/how-to-install-gnome-on-ubuntu-18-04-bionic-beaver-linux

Unix permissions calculator: http://permissions-calculator.org/

Leave a comment

Design a site like this with WordPress.com
Get started