Hoppa till innehållet

Cookieinställningar

Välj vilka typer av cookies du tillåter. Du kan alltid ändra ditt val via Cookieinställningar längst ned på varje sida. Integritetspolicy

Nödvändiga

Alltid på

Behövs för att logga in, spara din varukorg och komma ihåg dina val. De är alltid på.

Vilka cookies?
  • weboke_sessie, weboke_klant, weboke_remember: din session och att du förblir inloggad
  • weboke_basket: din varukorg
  • wkBtwIncl: visa priser med eller utan moms
  • wok_cookies: ditt cookieval, 12 månader

Mäter vilken annons som leder till ett besök eller en beställning, så att vi inte betalar för annonser som inte ger något.

Vilka cookies?
  • Google Ads via Google Tag Manager (_gcl_au, _gcl_aw), upp till 90 dagar
  • OpenAI Ads, annonser i ChatGPT
  • wok_aff: via vilken partner du kom till oss (affiliateprogram), 60 dagar

4,6

Land och språk

Varje land har en egen webbplats med landets priser och moms.

Visa

Användare, grupper och filrättigheter

Modul 3: Användare, rättigheter och sudo · Lästid: 12 minuter

Lärandemål: Efter den här lektionen kan du skapa och granska användare och grupper, läsa rättigheterna för en fil eller mapp i ls -l och ställa in dem rätt med chmod och chown utan att öppna allt på vid gavel.

Nyckelbegrepp: root (UID 0), vanlig användare, systemanvändare, /etc/passwd, /etc/shadow, grupp, adduser, id, rwx, ägare, grupp, övriga, oktalt (644, 755, 600), chmod, chown, umask, setuid, 777

Alla är ett nummer

Linux är från början byggt för flera användare på en och samma maskin. Varje process som körs, körs för en användares räkning, och varje fil har en ägare. För systemet är en användare framför allt ett nummer, UID:

  • root har UID 0. Root får göra allt: läsa och ändra varje fil, stoppa varje tjänst, skapa varje användare. Det finns inget "är du säker?".
  • Vanliga användare, som anna, får på Debian och Ubuntu ett UID från 1000 och uppåt. De får skriva i sin egen hemkatalog och i övrigt inte mycket.
  • Systemanvändare har ett lågt nummer och oftast inget lösenord och inget skal. Tjänster körs under en sådan användare: nginx under www-data, PostgreSQL under postgres. Blir en sådan tjänst hackad har inkräktaren bara den användarens rättigheter, inte roots.

Vem du är 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 grupp anna och är dessutom med i grupperna sudo och users.

Var användarna finns

Listan över användare finns i /etc/passwd, en rad per användare:

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

Fälten, åtskilda med kolon: namn, x (lösenordet ligger någon annanstans), UID, primär grupp, beskrivning, hemkatalog, skal. För www-data står /usr/sbin/nologin som skal: det går inte att logga in.

Själva lösenorden ligger krypterade (hashade) i /etc/shadow. Den filen kan bara root läsa. Ett ! eller * i början av lösenordsfältet betyder: inloggning med lösenord är inte möjlig. Så är root som standard låst på Ubuntu, och på Debian om du inte angav något root-lösenord vid installationen.

Skapa användare och grupper

På Debian och Ubuntu använder du det vänliga 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 skapar användaren, en egen grupp med samma namn och en hemkatalog, och frågar efter ett lösenord. Det enklare useradd finns också (och är det vanliga kommandot på AlmaLinux och Rocky Linux), men gör mindre utan flaggor: inget lösenord, och på vissa system ingen hemkatalog.

En grupp är ett sätt att ge rättigheter till flera användare på en gång. Lägg till en användare i en grupp:

root@web1:~# adduser anna www-data
root@web1:~# usermod -aG www-data anna     # samma sak, fungerar överallt

Lägg märke till -a i usermod: utan -a ersätter du alla användarens extra grupper med bara den här. En ny grupp gäller först när användaren loggar in igen.

Spärra ett konto utan att ta bort det (till exempel för en före detta kollega):

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

-L låser lösenordet, -e 1 låter kontot gå ut. Obs: ett låst lösenord stoppar inte alltid en SSH-nyckel. Ta därför också bort nycklarna i /home/jan/.ssh/authorized_keys (lektion 2.3); ett utgånget konto (-e 1) nekas däremot av sshd.

Läsa rättigheter

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

Det första blocket på tio tecken är nyckeln till allt:

  • Tecken 1: typen. - är en vanlig fil, d en mapp (katalog), l en genväg (symlänk).
  • Tecken 2 till 4: vad ägaren får göra.
  • Tecken 5 till 7: vad gruppen får göra.
  • Tecken 8 till 10: vad övriga (alla andra) får göra.

Sedan kommer antalet länkar, ägaren, gruppen, storleken och datumet.

För en fil betyder bokstäverna:

BokstavBetydelse för en fil
rläsa
wändra
xköra som program eller skript

Och för en mapp något helt annat:

BokstavBetydelse för en mapp
rlista namnen på filerna i mappen
wskapa, byta namn på och ta bort filer i mappen
xgå in i mappen och öppna filer i den

Det sista överraskar många. Utan x på en mapp kommer du inte åt filerna i den, även om filerna själva är läsbara. Och den som har w på en mapp kan ta bort filer i den, även om de tillhör någon annan.

I exemplet: index.html får alla läsa; config.php (med databaslösenordet) får Anna läsa och ändra, gruppen www-data (alltså webbservern) bara läsa och övriga ingenting. I uploads får webbservern skriva, eftersom besökarnas uppladdningar hamnar där.

Rättigheter som tal

Rättigheter skrivs ofta som tre siffror, det oktala talet. Varje bokstav har ett värde: r = 4, w = 2, x = 1. Lägg ihop per grupp:

RättigheterTalAnvändning
rw-r--r--644vanlig fil som alla får läsa
rw-r-----640fil för ägare och grupp, till exempel en konfiguration med ett lösenord
rw-------600hemlig fil, som authorized_keys eller en privat nyckel
rwxr-xr-x755mapp eller program som alla får använda
rwx------700privat mapp, som ~/.ssh

Ändra rättigheter: chmod och 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 ändrar rättigheterna, med ett tal eller med bokstäver (u, g, o för ägare, grupp, övriga; + eller - och bokstaven). chown eigenaar:groep ändrar ägare och grupp; det får bara root göra. Med -R verkar båda på en hel mapp, och där går det ofta fel: chmod -R 644 på en mapp gör alla undermappar oanvändbara, eftersom mappar behöver x. Använd hellre find för ett helt träd:

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

Aldrig 777

"Det fungerade inte, så jag satte 777 på det." 777 betyder: alla på servern får läsa, ändra och köra det här. Går det någon gång fel med en enda tjänst eller webbplats på din server kan inkräktaren skriva överallt där det står 777, även i dina PHP-filer. Det verkliga problemet är nästan alltid ägaren eller gruppen: ge webbservern exakt den rättighet den behöver via gruppen, och bara på den mapp där den behövs.

Standardrättigheter och specialbitar

Nya filer får sina rättigheter via umask. Med den vanliga umasken 022 blir nya filer 644 och nya mappar 755. Du ser din umask med kommandot umask.

Ibland ser du ett s i stället för ett x, som hos /usr/bin/passwd (-rwsr-xr-x). Det är setuid-biten: programmet körs med ägarens rättigheter (root), även när en vanlig användare startar det. Det behövs för några systemprogram, men sätt den aldrig själv på ett skript. En oväntad setuid-fil är ett känt tecken på intrång; med find / -perm -4000 -type f 2>/dev/null ser du alla.

På AlmaLinux och Rocky Linux

adduser är där ett annat namn för useradd; använd useradd -m anna och sedan passwd anna. Grupper lägger du till med usermod -aG. SELinux lägger till ett extra lager utöver rättigheterna i den här lektionen: en fil med rätt rättigheter kan ändå nekas om den har fel SELinux-etikett (ls -Z visar den).

Sammanfattning

  • Varje användare har ett UID; root (0) får göra allt, tjänster körs under egna systemanvändare utan skal.
  • Användarna finns i /etc/passwd, lösenordshasharna i /etc/shadow. Skapa användare med adduser och lägg till grupper med usermod -aG.
  • ls -l visar typ, rättigheter för ägare, grupp och övriga, och därefter ägare och grupp. För en mapp betyder x gå in och w skapa och ta bort filer.
  • Vanliga tal: 644 och 755 för offentligt, 640 för konfiguration med hemligheter, 600 och 700 för privat. Aldrig 777.
  • Använd find för att sätta rättigheter på ett helt träd; håll koll på setuid-filer.

Quiz

1. Vad betyder -rw-r----- för en fil med ägaren anna och gruppen www-data?



2. Vad händer om en mapp har rättigheterna drw-r--r-- (alltså inget x någonstans)?



3. Du kör usermod -G www-data anna (utan -a). Vad blir följden?



4. Ett tillägg kan inte skriva i /var/www/example.com/uploads. Vilken är den bästa lösningen?



5. Varför körs nginx under användaren www-data och inte under root?



Uppgift

Uppgift Z3.1: Läsa rättigheter. Öppna exempelfilen rechten-1.txt: utdata från id för tre användare och från ls -l i en webbmapp. Svara för varje fråga på vem som får göra vad (till exempel: "kan webbservern ändra config.php?", "vilken fil har för generösa rättigheter?", "vilket tal motsvarar .env?"). Programmet jämför dina svar med den fasta nyckeln och förklarar varför för varje fråga.

Uppgift Z3.1: Läsa rättigheter

Fil till den här uppgiften: rechten-1.txt










Det du fyller i och det vi hittar sparar vi inte. Din webbläsare kommer ihåg dina svar och om du klarade uppgiften. Är du inloggad sparar vi bara att du klarade uppgiften (nästan) i Mina kurser; där kan du också ta bort det.

Läs mer

Stegen i de här artiklarna gäller för WebOkés webbhotellspaket och VPS:er; hos andra leverantörer fungerar det på liknande sätt.

Ett ögonblick…

Ställ in dina domäner

Ställ in namnservrar, koppling till ditt webbhotell och vem som blir innehavare för varje domän.

Hämtar dina domäner…