Gå til innholdet

Cookie-innstillinger

Velg hvilke typer cookies du tillater. Du kan når som helst endre valget via Cookie-innstillinger nederst på hver side. Personvernerklæring

Nødvendige

Alltid på

Trengs for å logge inn, beholde handlekurven og huske valgene dine. Disse er alltid på.

Hvilke cookies?
  • weboke_sessie, weboke_klant, weboke_remember: økten din og at du forblir innlogget
  • weboke_basket: handlekurven din
  • wkBtwIncl: visning av priser med eller uten mva.
  • wok_cookies: cookievalget ditt, 12 måneder

Måler hvilken annonse som fører til et besøk eller en bestilling, slik at vi ikke betaler for annonser som ikke gir noe.

Hvilke cookies?
  • Google Ads via Google Tag Manager (_gcl_au, _gcl_aw), opptil 90 dager
  • OpenAI Ads, annonser i ChatGPT
  • wok_aff: hvilken partner som henviste deg til oss (partnerprogram), 60 dager

4,6

Land og språk

Hvert land har sin egen nettside, med priser og mva. for det landet.

Vis

Brukere, grupper og filrettigheter

Modul 3: Brukere, rettigheter og sudo · Lesetid: 12 minutter

Læringsmål: Etter denne leksjonen kan du opprette og se brukere og grupper, lese rettighetene til en fil eller mappe i ls -l, og sette dem riktig med chmod og chown uten å åpne alt for alle.

Nøkkelbegreper: root (UID 0), vanlig bruker, systembruker, /etc/passwd, /etc/shadow, gruppe, adduser, id, rwx, eier, gruppe, andre, oktal (644, 755, 600), chmod, chown, umask, setuid, 777

Alle er et nummer

Linux er fra starten bygget for flere brukere på én maskin. Hver prosess som kjører, kjører på vegne av en bruker, og hver fil har en eier. For systemet er en bruker først og fremst et nummer, UID:

  • root har UID 0. Root kan gjøre alt: lese og endre alle filer, stoppe alle tjenester, opprette alle brukere. Det finnes ikke noe "er du sikker?".
  • Vanlige brukere, som anna, får på Debian og Ubuntu en UID fra 1000 og oppover. De kan skrive i sin egen hjemmemappe og ellers lite.
  • Systembrukere har et lavt nummer og vanligvis verken passord eller skall. Tjenester kjører under en slik bruker: nginx under www-data, PostgreSQL under postgres. Blir en slik tjeneste hacket, har inntrengeren bare rettighetene til den brukeren, ikke til root.

Hvem du er, ser du med id:

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

Anna har UID 1000, en egen gruppe anna, og er også med i gruppene sudo og users.

Hvor brukerne ligger

Listen over brukere ligger i /etc/passwd, én linje per bruker:

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

Feltene, skilt med kolon: navn, x (passordet ligger et annet sted), UID, hovedgruppe, beskrivelse, hjemmemappe, skall. Hos www-data står skallet som /usr/sbin/nologin: innlogging er ikke mulig.

Selve passordene ligger, kryptert (hashet), i /etc/shadow. Den filen kan bare root lese. En ! eller * i starten av passordfeltet betyr: innlogging med passord er ikke mulig. Slik er root låst som standard på Ubuntu, og på Debian hvis du ikke oppga et root-passord under installasjonen.

Opprette brukere og grupper

På Debian og Ubuntu bruker du det brukervennlige adduser:

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 oppretter brukeren, en egen gruppe med samme navn og en hjemmemappe, og ber om et passord. Det enklere useradd finnes også (og er standardkommandoen på AlmaLinux og Rocky Linux), men gjør mindre uten valg: ikke noe passord, og på noen systemer ingen hjemmemappe.

En gruppe er en måte å gi rettigheter til flere brukere på en gang. Slik legger du en bruker til i en gruppe:

root@web1:~# adduser anna www-data
root@web1:~# usermod -aG www-data anna     # det samme, fungerer overalt

Legg merke til -a i usermod: uten -a erstatter du alle ekstra grupper for brukeren med bare denne ene. En ny gruppe gjelder først etter at du har logget inn på nytt.

Slik stenger du en konto uten å slette den (for eksempel for en tidligere kollega):

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

-L låser passordet, -e 1 lar kontoen utløpe. Merk: et låst passord stopper ikke alltid en SSH-nøkkel. Fjern derfor også nøklene i /home/jan/.ssh/authorized_keys (leksjon 2.3); en utløpt konto (-e 1) avviser sshd derimot.

Lese rettigheter

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

Den første blokken på ti tegn er nøkkelen til alt:

  • Tegn 1: typen. - er en vanlig fil, d en mappe (directory), l en snarvei (symlink).
  • Tegn 2 til 4: hva eieren kan gjøre.
  • Tegn 5 til 7: hva gruppen kan gjøre.
  • Tegn 8 til 10: hva andre (alle andre) kan gjøre.

Deretter kommer antall lenker, eieren, gruppen, størrelsen og datoen.

For en fil betyr bokstavene:

BokstavBetydning for en fil
rlese
wendre
xkjøre som program eller skript

Og for en mappe litt annerledes:

BokstavBetydning for en mappe
rvise navnene på filene i mappen
wopprette, gi nytt navn til og slette filer i mappen
xgå inn i mappen og åpne filer i den

Det siste overrasker mange. Uten x på en mappe kommer du ikke til filene i den, selv om filene selv er lesbare. Og den som har w på en mappe, kan slette filer i den, også når de tilhører noen andre.

I eksempelet: index.html kan alle lese; config.php (med databasepassordet) kan Anna lese og endre, gruppen www-data (altså webserveren) bare lese, og resten ingenting. I uploads kan webserveren skrive, for der havner opplastinger fra besøkende.

Rettigheter som tall

Rettigheter skrives ofte som tre sifre, det oktale tallet. Hver bokstav har en verdi: r = 4, w = 2, x = 1. Legg sammen per gruppe:

RettigheterTallBruk
rw-r--r--644vanlig fil som alle kan lese
rw-r-----640fil for eier og gruppe, som en konfigurasjon med et passord
rw-------600hemmelig fil, som authorized_keys eller en privat nøkkel
rwxr-xr-x755mappe eller program som alle kan bruke
rwx------700privat mappe, som ~/.ssh

Endre rettigheter: chmod og 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 endrer rettighetene, med et tall eller med bokstaver (u, g, o for eier, gruppe, andre; + eller - og bokstaven). chown eigenaar:groep endrer eier og gruppe; det kan bare root gjøre. Med -R virker begge på en hel mappe, og der går det ofte galt: chmod -R 644 på en mappe gjør alle undermapper ubrukelige, for mapper trenger x. For et helt tre bruker du heller find:

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

Aldri 777

"Det virket ikke, så jeg satte 777 på det." 777 betyr: alle på serveren kan lese, endre og kjøre dette. Går det noen gang galt med én tjeneste eller ett nettsted på serveren din, kan inntrengeren skrive overalt der det står 777, også i PHP-filene dine. Det egentlige problemet er nesten alltid eieren eller gruppen: gi webserveren akkurat den rettigheten den trenger via gruppen, og bare på mappen der den trengs.

Standardrettigheter og spesielle biter

Nye filer får rettighetene sine via umask. Med den vanlige umask-verdien 022 blir nye filer 644 og nye mapper 755. Du ser umask-verdien din med kommandoen umask.

Noen ganger ser du en s i stedet for en x, som hos /usr/bin/passwd (-rwsr-xr-x). Det er setuid-biten: programmet kjører med eierens rettigheter (root), også når en vanlig bruker starter det. Det trengs for noen få systemprogrammer, men sett det aldri selv på et skript. En uventet setuid-fil er et kjent tegn på innbrudd; med find / -perm -4000 -type f 2>/dev/null ser du alle sammen.

På AlmaLinux og Rocky Linux

adduser er der et annet navn for useradd; bruk useradd -m anna og deretter passwd anna. Grupper legger du til med usermod -aG. SELinux legger til et ekstra lag i tillegg til rettighetene i denne leksjonen: en fil med riktige rettigheter kan likevel bli avvist hvis den har feil SELinux-etikett (ls -Z viser den).

Oppsummering

  • Hver bruker har en UID; root (0) kan gjøre alt, tjenester kjører under egne systembrukere uten skall.
  • Brukere ligger i /etc/passwd, passordhashene i /etc/shadow. Opprett brukere med adduser og legg til grupper med usermod -aG.
  • ls -l viser type, rettigheter for eier, gruppe og andre, og deretter eier og gruppe. For en mappe betyr x å gå inn, og w å opprette og slette filer.
  • Vanlige tall: 644 og 755 for offentlig, 640 for konfigurasjon med hemmeligheter, 600 og 700 for privat. Aldri 777.
  • Bruk find for å sette rettigheter på et helt tre; følg med på setuid-filer.

Quiz

1. Hva betyr -rw-r----- for en fil med eier anna og gruppe www-data?



2. Hva skjer hvis en mappe har rettighetene drw-r--r-- (altså ingen x noe sted)?



3. Du kjører usermod -G www-data anna (uten -a). Hva blir følgen?



4. En plugin får ikke skrevet i /var/www/example.com/uploads. Hva er den beste løsningen?



5. Hvorfor kjører nginx under brukeren www-data og ikke under root?



Oppgave

Oppgave Z3.1: Lese rettigheter. Åpne eksempelfilen rechten-1.txt: utdataene fra id for tre brukere og fra ls -l i en webmappe. Svar for hvert spørsmål hvem som kan gjøre hva (for eksempel: "kan webserveren endre config.php?", "hvilken fil har for vide rettigheter?", "hvilket tall hører til .env?"). Programmet sammenligner svarene dine med fasiten og forklarer for hvert spørsmål hvorfor.

Oppgave Z3.1: Lese rettigheter

Fil til denne oppgaven: rechten-1.txt










Det du fyller inn, og det vi finner, lagrer vi ikke. Nettleseren din husker svarene dine og om du har bestått oppgaven. Er du logget inn, lagrer vi kun at du har (nesten) bestått oppgaven i Mine kurs; der kan du også slette det.

Les mer

Stegene i disse artiklene gjelder for webhotellpakkene og VPS-ene til WebOké; hos andre leverandører fungerer det på lignende måte.

Et øyeblikk …

Sett opp domenene dine

Ordne for hvert domene navnetjenerne, koblingen til hostingen din og hvem som blir innehaver.

Laster inn domenene dine…