Siirry suoraan sisältöön

Evästeasetukset

Valitse, mitä evästetyyppejä sallit. Voit muuttaa valintaasi milloin tahansa jokaisen sivun alareunassa olevasta kohdasta Evästeasetukset. Tietosuojaseloste

Välttämättömät

Aina käytössä

Tarvitaan sisäänkirjautumiseen, ostoskorin säilyttämiseen ja valintojesi muistamiseen. Nämä ovat aina käytössä.

Mitkä evästeet?
  • weboke_sessie, weboke_klant, weboke_remember: istuntosi ja sisäänkirjautuneena pysyminen
  • weboke_basket: ostoskorisi
  • wkBtwIncl: hintojen näyttäminen verollisina tai verottomina
  • wok_cookies: evästevalintasi, 12 kuukautta

Mittaa, mikä mainos johtaa käyntiin tai tilaukseen, jotta emme maksa mainoksista, joista ei ole hyötyä.

Mitkä evästeet?
  • Google Ads Google Tag Managerin kautta (_gcl_au, _gcl_aw), enintään 90 päivää
  • OpenAI Ads, mainokset ChatGPT-palvelussa
  • wok_aff: minkä kumppanin kautta tulit meille (kumppaniohjelma), 60 päivää

4,6

Maa ja kieli

Jokaisella maalla on oma sivustonsa, jossa on kyseisen maan hinnat ja ALV.

Näytä

Käyttäjät, ryhmät ja tiedosto-oikeudet

Moduuli 3: Käyttäjät, oikeudet ja sudo · Lukuaika: 12 minuuttia

Tavoite: Tämän oppitunnin jälkeen osaat luoda ja tarkastella käyttäjiä ja ryhmiä, lukea tiedoston tai kansion oikeudet ls -l-tulosteesta sekä asettaa ne oikein chmod- ja chown-komennoilla avaamatta kaikkea kaikille.

Keskeiset käsitteet: root (UID 0), tavallinen käyttäjä, järjestelmäkäyttäjä, /etc/passwd, /etc/shadow, ryhmä, adduser, id, rwx, omistaja, ryhmä, muut, oktaaliluku (644, 755, 600), chmod, chown, umask, setuid, 777

Jokainen on numero

Linux on alusta asti rakennettu usealle käyttäjälle samalla koneella. Jokainen käynnissä oleva prosessi toimii jonkin käyttäjän nimissä, ja jokaisella tiedostolla on omistaja. Järjestelmälle käyttäjä on ennen kaikkea numero, UID:

  • root on UID 0. Root saa tehdä kaiken: lukea ja muuttaa mitä tahansa tiedostoa, pysäyttää minkä tahansa palvelun ja luoda minkä tahansa käyttäjän. Mitään "oletko varma?" -kysymystä ei tule.
  • Tavalliset käyttäjät, kuten anna, saavat Debianissa ja Ubuntussa UID:n 1000:sta ylöspäin. He saavat kirjoittaa omaan kotikansioonsa, mutta muuten vain vähän.
  • Järjestelmäkäyttäjillä on pieni numero, eikä heillä yleensä ole salasanaa eikä komentotulkkia. Palvelut toimivat tällaisen käyttäjän alla: nginx käyttäjänä www-data, PostgreSQL käyttäjänä postgres. Jos tällainen palvelu murretaan, tunkeutujalla on vain kyseisen käyttäjän oikeudet, ei rootin.

Kuka olet, näet komennolla id:

anna@web1:~$ id
uid=1000(anna) gid=1000(anna) groups=1000(anna),27(sudo),100(users)

Annan UID on 1000, hänellä on oma ryhmä anna, ja hän kuuluu myös ryhmiin sudo ja users.

Missä käyttäjät ovat

Käyttäjäluettelo on tiedostossa /etc/passwd, yksi rivi käyttäjää kohden:

anna@web1:~$ grep -E '^(root|www-data|anna):' /etc/passwd
root:x:0:0:root:/root:/bin/bash
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
anna:x:1000:1000:Anna,,,:/home/anna:/bin/bash

Kentät kaksoispisteillä erotettuina: nimi, x (salasana on muualla), UID, pääryhmä, kuvaus, kotikansio ja komentotulkki. Käyttäjällä www-data komentotulkkina on /usr/sbin/nologin: kirjautuminen ei onnistu.

Itse salasanat ovat salattuina (tiivistettyinä) tiedostossa /etc/shadow. Vain root voi lukea sitä. ! tai * salasanakentän alussa tarkoittaa, että salasanalla ei voi kirjautua. Näin root on Ubuntussa oletuksena lukittu, samoin Debianissa, jos et antanut asennuksessa root-salasanaa.

Käyttäjien ja ryhmien luominen

Debianissa ja Ubuntussa käytät helppokäyttöistä adduser-komentoa:

root@web1:~# adduser anna
info: Adding user `anna' ...
info: Adding new group `anna' (1000) ...
info: Adding new user `anna' (1000) with group `anna (1000)' ...
info: Creating home directory `/home/anna' ...
info: Copying files from `/etc/skel' ...
New password:
Retype new password:
...

adduser luo käyttäjän, samannimisen oman ryhmän ja kotikansion ja kysyy salasanaa. Alemman tason useradd on myös olemassa (ja AlmaLinuxissa ja Rocky Linuxissa se on tavallinen komento), mutta ilman valitsimia se tekee vähemmän: ei salasanaa, ja joissain järjestelmissä ei kotikansiota.

Ryhmällä annat oikeuksia usealle käyttäjälle kerralla. Käyttäjän lisääminen ryhmään:

root@web1:~# adduser anna www-data
root@web1:~# usermod -aG www-data anna     # sama, toimii kaikkialla

Huomaa -a komennossa usermod: ilman -a:ta korvaat käyttäjän kaikki lisäryhmät pelkällä tällä yhdellä. Uusi ryhmä tulee voimaan vasta, kun kirjaudut uudelleen.

Tilin sulkeminen poistamatta sitä (esimerkiksi entisen työkaverin):

root@web1:~# usermod -L -e 1 jan

-L lukitsee salasanan, -e 1 asettaa tilin vanhentuneeksi. Huomaa: lukittu salasana ei aina estä SSH-avaimella kirjautumista. Poista siis myös avaimet tiedostosta /home/jan/.ssh/authorized_keys (oppitunti 2.3). Vanhentuneen tilin (-e 1) sshd kyllä torjuu.

Oikeuksien lukeminen

anna@web1:~$ ls -l /var/www/example.com
total 12
-rw-r--r-- 1 anna     www-data  1520 Nov  9 10:12 index.html
-rw-r----- 1 anna     www-data   412 Nov  9 10:14 config.php
drwxr-xr-x 2 anna     www-data  4096 Nov  9 10:15 images
drwxrwxr-x 2 www-data www-data  4096 Nov  9 10:20 uploads

Ensimmäinen kymmenen merkin lohko on avain kaikkeen:

  • Merkki 1: tyyppi. - on tavallinen tiedosto, d kansio (hakemisto), l pikalinkki (symlink).
  • Merkit 2-4: mitä omistaja saa tehdä.
  • Merkit 5-7: mitä ryhmä saa tehdä.
  • Merkit 8-10: mitä muut (kaikki muut) saavat tehdä.

Sen jälkeen tulevat linkkien määrä, omistaja, ryhmä, koko ja päivämäärä.

Kirjaimet tarkoittavat tiedostolla:

KirjainMerkitys tiedostolla
rlukeminen
wmuuttaminen
xsuorittaminen ohjelmana tai skriptinä

Ja kansiolla vähän eri asiaa:

KirjainMerkitys kansiolla
rkansion tiedostojen nimien listaaminen
wtiedostojen luominen, uudelleennimeäminen ja poistaminen kansiossa
xkansioon siirtyminen ja sen tiedostojen avaaminen

Viimeinen yllättää monet. Ilman kansion x-oikeutta et pääse sen tiedostoihin, vaikka ne itse olisivat luettavissa. Ja jolla on w-oikeus kansioon, voi poistaa siitä tiedostoja, vaikka ne kuuluisivat jollekulle toiselle.

Esimerkissä: index.html on kaikkien luettavissa. config.php (jossa on tietokannan salasana) on Annan luettavissa ja muutettavissa, ryhmä www-data (siis verkkopalvelin) voi vain lukea sitä, eikä muilla ole mitään oikeuksia. Kansioon uploads verkkopalvelin saa kirjoittaa, koska sinne tulevat kävijöiden lataamat tiedostot.

Oikeudet numeroina

Oikeudet kirjoitetaan usein kolmena numerona, oktaalilukuna. Jokaisella kirjaimella on arvo: r = 4, w = 2, x = 1. Laske yhteen kunkin ryhmän osalta:

OikeudetNumeroKäyttö
rw-r--r--644tavallinen tiedosto, jota kaikki saavat lukea
rw-r-----640tiedosto omistajalle ja ryhmälle, kuten salasanan sisältävä asetustiedosto
rw-------600salainen tiedosto, kuten authorized_keys tai yksityinen avain
rwxr-xr-x755kansio tai ohjelma, jota kaikki saavat käyttää
rwx------700yksityinen kansio, kuten ~/.ssh

Oikeuksien muuttaminen: chmod ja chown

anna@web1:~$ chmod 640 /var/www/example.com/config.php
anna@web1:~$ chmod g+w /var/www/example.com/uploads
root@web1:~# chown anna:www-data /var/www/example.com/config.php

chmod muuttaa oikeuksia numerolla tai kirjaimilla (u, g, o omistajalle, ryhmälle ja muille; + tai - ja kirjain). chown eigenaar:groep muuttaa omistajaa ja ryhmää, ja sen saa tehdä vain root. -R-valitsimella molemmat toimivat koko kansioon, ja siinä menee usein pieleen: chmod -R 644 kansioon tekee kaikista alikansioista käyttökelvottomia, koska kansiot tarvitsevat x-oikeuden. Käytä koko puuhun mieluummin find-komentoa:

root@web1:~# find /var/www/example.com -type d -exec chmod 755 {} +
root@web1:~# find /var/www/example.com -type f -exec chmod 644 {} +

Ei koskaan 777

"Se ei toiminut, joten laitoin siihen 777." 777 tarkoittaa, että kuka tahansa palvelimella saa lukea, muuttaa ja suorittaa tätä. Jos yksikin palvelu tai sivusto palvelimellasi joskus murretaan, tunkeutuja voi kirjoittaa kaikkialle, missä on 777, myös PHP-tiedostoihisi. Todellinen ongelma on lähes aina omistaja tai ryhmä: anna verkkopalvelimelle ryhmän kautta juuri se oikeus, jota se tarvitsee, ja vain siihen kansioon, jossa sitä tarvitaan.

Oletusoikeudet ja erikoisbitit

Uudet tiedostot saavat oikeutensa umaskin kautta. Tavallisella umaskilla 022 uusista tiedostoista tulee 644 ja uusista kansioista 755. Näet umaskisi komennolla umask.

Joskus näet s:n x:n paikalla, kuten ohjelmassa /usr/bin/passwd (-rwsr-xr-x). Se on setuid-bitti: ohjelma toimii omistajansa (rootin) oikeuksin, vaikka tavallinen käyttäjä käynnistäisi sen. Sitä tarvitaan muutamassa järjestelmäohjelmassa, mutta älä koskaan aseta sitä itse skriptille. Odottamaton setuid-tiedosto on tunnettu merkki murrosta; komennolla find / -perm -4000 -type f 2>/dev/null näet ne kaikki.

AlmaLinuxissa ja Rocky Linuxissa

adduser on niissä toinen nimi komennolle useradd; käytä komentoa useradd -m anna ja sitten passwd anna. Ryhmiä lisätään komennolla usermod -aG. SELinux tuo tämän oppitunnin oikeuksien rinnalle ylimääräisen kerroksen: tiedosto, jolla on oikeat oikeudet, voidaan silti torjua, jos siinä on väärä SELinux-nimiö (ls -Z näyttää sen).

Yhteenveto

  • Jokaisella käyttäjällä on UID. Root (0) saa tehdä kaiken, ja palvelut toimivat omina järjestelmäkäyttäjinään ilman komentotulkkia.
  • Käyttäjät ovat tiedostossa /etc/passwd, salasanatiivisteet tiedostossa /etc/shadow. Luo käyttäjiä komennolla adduser ja lisää ryhmiä komennolla usermod -aG.
  • ls -l näyttää tyypin, omistajan, ryhmän ja muiden oikeudet sekä sen jälkeen omistajan ja ryhmän. Kansiolla x tarkoittaa sisään siirtymistä ja w tiedostojen luomista ja poistamista.
  • Tavalliset numerot: 644 ja 755 julkiselle, 640 salaisuuksia sisältäville asetuksille, 600 ja 700 yksityiselle. Ei koskaan 777.
  • Käytä find-komentoa, kun asetat oikeudet koko puuhun, ja pidä silmällä setuid-tiedostoja.

Tietovisa (quiz)

1. Mitä -rw-r----- tarkoittaa tiedostolla, jonka omistaja on anna ja ryhmä www-data?



2. Mitä tapahtuu, jos kansion oikeudet ovat drw-r--r-- (eli x ei ole missään)?



3. Suoritat komennon usermod -G www-data anna (ilman -a:ta). Mikä on seuraus?



4. Lisäosa ei pysty kirjoittamaan kansioon /var/www/example.com/uploads. Mikä on paras ratkaisu?



5. Miksi nginx toimii käyttäjänä www-data eikä rootina?



Tehtävä

Tehtävä Z3.1: Oikeuksien lukeminen. Avaa esimerkkitiedosto rechten-1.txt: siinä on id-komennon tuloste kolmelle käyttäjälle ja ls -l-komennon tuloste verkkokansiosta. Vastaa jokaiseen kysymykseen, kuka saa tehdä mitä (esimerkiksi: "voiko verkkopalvelin muuttaa tiedostoa config.php?", "missä tiedostossa on liian laajat oikeudet?", "mikä numero vastaa merkintää .env?"). Ohjelma vertaa vastauksiasi kiinteään avaimeen ja selittää jokaisen kysymyksen kohdalla, miksi.

Tehtävä Z3.1: Oikeuksien lukeminen

Tähän tehtävään liittyvä tiedosto: rechten-1.txt










Sitä, mitä kirjoitat ja mitä löydämme, ei tallenneta. Selaimesi muistaa vastauksesi ja sen, oletko suorittanut tehtävän. Jos olet kirjautunut sisään, tallennamme kohtaan Omat kurssit vain sen, että tehtävä oli (lähes) oikein; voit poistaa sen myös sieltä.

Lue lisää

Näiden artikkelien vaiheet koskevat WebOkén webhotellipaketteja ja VPS-palvelimia; muilla palveluntarjoajilla ne toimivat samaan tapaan.

Hetkinen…

Määritä verkkotunnuksesi

Määritä kullekin verkkotunnukselle nimipalvelimet, liitos webhotelliin ja se, kuka tulee omistajaksi.

Ladataan verkkotunnuksia…