Användare och grupper

I Linux finns lokala användarkonton i systemet i två filer, dels i filen /etc/passwd som innehåller användarkontot och dels i filen /etc/shadow där lösenordet för användarkontot lagras.

Det finns tre typer av användare:

  • root, som är systemadministratören. Användarkontot root får göra allt i systemet - inklusive radera det. Vi bör undvika att logga in som root och istället logga in som en vanlig användare som har rättighet att bli root med hjälp av kommandot sudo.
  • user, eller vanliga användare. Det är den typen av användare vårt användarkonto är. Det är den här typen av konto vi använder för att logga in i systemet.
  • system account, systemkonton som används av program och andra tjänster i systemet. Dessa loggar vi inte in med.

Skapa användare

Med kommandot useradd skapar vi användare i systemet. För att skapa en användare med användarnamnet jonas skriver vi:

$ sudo useradd -m jonas

När vi skapar användaren jonas skapas en rad i filen /etc/passwd som ser ut så här:

jonas:x:1001:1001::/home/jonas:/bin/bash

I filen /etc/shadow skapas följande:

jonas:!!:17070:0:99999:7:::

I filen /etc/group skapades en grupp för användaren jonas:

jonas:x:1001:

Och slutligen skapades en hemkatalog som heter /home/jonas/, i den katalogen skapades några filer som kommer ifrån katalogen /etc/skel/.

Om vi vill ange var hemkatalogen för användaren skall skapas använder vi flaggan --home-dir KATALOG, vill vi ange vilken kommandotolk användaren skall använda anger vi det med flaggan --shell KOMMANDOTOLK. För att skapa användaren lisa med hemkatalogen /home/lotta/ och kommandotolken /bin/bash skriver vi:

$ sudo useradd -d /home/lotta/ -m -s /bin/bash lisa
-d /home/lotta/
anger vilken hemkatalog användaren skall ha.
-m
anger att vi vill skapa hemkatalogen för användaren.
-s /bin/bash
anger att användaren skall få kommandotolken bash.

Vi har inte skapat något lösenord för användarna vi skapat, så de kan inte logga in än. För att sätta lösenord för en användare använder vi kommandot passwd:

$ sudo passwd jonas
Changing password for user jonas.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

När vi skriver in lösenordet syns inget på skärmen och vi skriver in lösenordet två gånger (vid New password och Retype new password).

Användarna kan själva byta sitt lösenord när de loggat in genom att använda kommandot passwd och sätta det lösenord de vill ha. Användaren root kan sätta lösenord för alla användare genom att använda kommandot sudo passwd ANVÄNDARNAMN.

Det finns ett kommando som heter adduser också. Det kan verka enklare att använda då vi får svara på frågor om det nya kontot. Kommandot adduser finns inte i alla linuxdistributioner, medan useradd gör det. Kommandot useradd är också lämpligare att använda i skript. Det är ingen skillnad på det användarkonto som skapas av kommandot adduser och kommandot useradd.

Ta bort användare

När vi tar bort en användare från systemet kan vi inte återskapa användaren eller dennes filer igen, om vi inte har backup. Så var noga med vilken användare du väljer att ta bort.

För att ta bort en användare från systemet använder vi kommandot userdel. För att ta bort användaren jonas (användarnamnet måste naturligtvis existera i systemet för att kunna tas bort) skriver vi:

$ sudo userdel jonas

När vi tar bort en användare är det bara användarkontot som raderas, användarens hemkatalog finns kvar i filsystemet. För att ta bort en användare och radera hennes hemkatalog samtidigt lägger vi till flaggan --remove till kommandot:

$ sudo userdel --remove jonas

Det kan vara en bra idé att göra en säkerhetskopia på våra användares hemkataloger innan vi raderar dem. Kommandot tar cfz /home/användarnamn.tar.gz /home/användarnamn skapar ett komprimerat arkiv med allt innehåll från användarens hemkatalog.

Om vi glömde bort flaggan --remove när vi tog bort användarkontot finns hemkatalogen för användaren kvar i filsystemet. Vi kan använda kommandot rm för att radera katalogen:

$ sudo rm -rf /home/jonas

Kommandot rm raderar filer för alltid. Det finns ingen papperskorg att hämta upp filer vi har raderat av misstag från. En borttagen fil är borta. Kommandot rm med flaggan -rf skall användas med stor försiktighet då det raderar en katalog och alla filer och kataloger under den katalogen.

Filen /etc/passwd

Det är i filen /etc/passwd systemet lagrar informationen om användarkonton. Varje rad i filen innehåller ett användarkonto och det finns sju fält på varje rad:

ubuntu:x:1000:1000:ubuntu user,,,:/home/ubuntu:/bin/bash

Nedan följer en beskrivning av fälten ovanför, värdet inom parantes är motsvarande vad som står i raden (exemplet som börjar med ubuntu) ovanför.

användarnamn
Det användarnamn som användaren loggar in med. (ubuntu)
lösenord
Här finns normalt ett x som betyder att lösenordet finns i filen /etc/shadow. (x)
användar-id
Användar-id är det numeriska id som användarkontot har. I Ubuntu är alla användar-idn under 1000 systemkonton och alla användar-idn från 1000 och uppåt är vanliga användarkonton. (1000)
grupp-id
Fältet anger vilken primär grupp användaren tillhör. Varje användare i systemet måste tillhöra en primär grupp, vill vi att de skall ingå i flera grupper är det filen /etc/group som hanterar dem. (1000)
kommentarsfält
Kommentarsfältet kan användas till vad som helst. Ubuntu lagrar informationen om fullständigt namn här. Undvik att använda kommatecken (,) i kommentarsfältet, eftersom kommatecken är fältseparatorn i filen. (ubuntu user)
hemkatalog
Fältet för hemkatalog anger vilken katalog som är användarens hemkatalog. När en användare loggar in i systemet är det hemkatalogen som är startpunken. Normalt finns alla användares hemkataloger under katalogen /home/ (/home/ubuntu)
kommandotolk
Fältet anger vilken kommandotolk en användare skall få efter att hon loggat in. (/bin/bash)

Alla användare i systemet måste tillhöra en primär grupp. När användaren loggar in sätts den primära gruppen och alla filer som användaren skapar kommer automatiskt kopplas till den gruppen. Som standard kommer Ubuntu skapa en primär grupp som har samma namn som användarkontot. Skapar vi användaren kalle kommer det också skapas en grupp som heter kalle som användaren kalle kommer få som primär grupp, om vi inte väljer något annat.

Alla användarkonton i Ubuntu kan också tillhöra en, flera eller ingen sekundär grupp. De sekundära grupperna används för att ge rättigheter för användaren att komma åt filer, program och kataloger.

Byta användarnamn

Vi kan byta användarnamnet för en användare med kommandot usermod. För att byta användarnamn på jonas till lasse skriver vi:

$ sudo usermod -l lasse jonas

Byta primär grupp för en användare

Med kommandot usermod kan vi byta användarens primära grupp. För att byta primär grupp för användaren jonas till gruppen video skriver vi:

$ sudo usermod -g video jonas

Vi kan också använda ett grupp-id (GID) när vi väljer vilken grupp användaren skall ha som primär grupp:

$ sudo usermod -g 44 jonas

Alla grupper i systemet finns i filen /etc/group som vi kan visa med kommandot cat:

$ cat /etc/group

Vi kan också använda kommandot getent för att visa grupper i systemet:

$ getent group

Uppdatera kommentarsfältet för en användare

Med kommandot usermod kan vi uppdatera kommentarsfältet för en användare. Vi skriver så här för att uppdatera fältet för användaren jonas:

$ sudo usermod -c "en liten kommentar" jonas

Om vi tittar i filen /etc/passwd nu så kommer det stå:

jonas:x:1001:1001:en liten kommentar:/home/jonas:/bin/bash

Byta hemkatalog för en användare

Med kommandot usermod kan vi byta hemkatalog för en användare. För att byta hemkatalog för användaren jonas till /tmp/ skriver vi:

$ sudo usermod -d /tmp/ jonas

När vi byter hemkatalog för en användare ändras referensen till hemkatalogen i filen /etc/passwd, den gamla hemkatalogen finns kvar under katalogen /home/ eller där den var. Om vi vill flytta innehållet i den gamla hemkatalogen till den nya använder vi flaggan -m till kommandot:

$ sudo usermod -d /home/jonasnya -m jonas

Byta kommmandotolk för en användare

För att byta kommandotolk för en användare använder vi kommandot chsh. För att byta kommandotolk för användaren jonas till /bin/bash skriver vi:

$ sudo chsh -s /bin/bash jonas

De kommandotolkar vi kan använda defineras i filen /etc/shells. I den filen står alla kommandotolkar som är godkända att använda. Användaren root kan ändra kommandotolk för alla användare och en användare kan bara ändra sin egen kommandotolk.

$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/tmux
/usr/bin/screen

Om vi av någon anledning vill inaktivera inloggning för en användare kan vi sätta användarkontots kommandotolk till /sbin/nologin, vilket innebär att användaren kan logga in men får ingen giltig kommandotolk så hon loggas ut direkt igen. Ett bättre alternativ för att inaktivera användarkonton är att låsa kontot med kommandot sudo passwd -l ANVÄNDARNAMN. För att låsa upp kontot igen använder vi kommandot sudo passwd -u ANVÄNDARNAMN.

Användare kan själva byta kommandotolk med kommandot chsh, men den kommandotolk de väljer måste finnas med i filen /etc/shells som anger vilka kommandotolkar som är tillåtna i systemet. Det är bara användaren root som kan byta kommandotolk till vad som helst för användarkonton. Om vi loggar in som användaren jonas och försöker byta kommandotolk till /bin/banan ser det ut så här:

$ chsh -s /bin/banan
chsh: /bin/banan is an invalid shell

Filen /etc/shadow

Lösenorden för användarkonton i systemet finns i filen /etc/shadow som bara är läsbar för användaren root. Lösenordsfilen har en säkerhetskopia i filen /etc/shadow-. Om vi tittar i filen så hittar vi flera rader som ser ut så här:

$ sudo getent shadow
jonas:$6$S6EJ9IbW$oENmCoYL2ZXVyF55ernS/om...6xHGRtJypfHE/48MU1g2MI0:16387:0:99999\
:7:::

Varje rad i filen /etc/shadow består av nio olika fält som åtskiljs av kommatecken (:) enligt följande:

Användarnamn
Det användarnamn som användaren loggar in med.
Lösenord
Det krypterade lösenordet, uppbyggt enligt mönstret $kryptering$salt$krypterat lösenord$. De olika krypteringsalgoritmerna som kan användas är:
  • $1$ som betyder att lösenordet är hashat med md5-algoritmen
  • $2$ och $2a$ som betyder att lösenordet är hashat med blowfish
  • $5$ som betyder att lösenordet är hashat med sha-256
  • $6$ som betyder att lösenordet är hashat med sha-512.
  • $y$ och $7$ som betyder att lösenordet är hashat med yescrypt

Yescrypt är en nyare hashfunktion som är adaptiv och designad för att vara mer motståndskraftig mot moderna attacker som bruteforce- och ordlisteattacker. Den använder salt och en cost factor som justerar hur tidskrävande det är att utföra hashberäkningen. När yescrypt används för lösenorden i filen /etc/shadow skrivs det så här: $y$cost$salt$hash . Det skiljer sig från de andra genom att vi här också har ett fält för cost. Cost anger kostnaden som bestämmer hur tungt det är att skapa en hash. Det är ett heltal och det styr hur lång tid beräkningen tar.

Ett lösenord som börjar med ett utropstecken (!) innebär att användarkontot är låst och inte går att logga in med.

Senast ändrat
Anger vilket datum (antal dagar efter den 1 januari 1970) som lösenordet senast ändrades. Står det en nolla (0) här betyder det att användaren måste byta lösenord nästa gång hon loggar in. Är fältet tomt innebär det att systemet inte tar hänsyn till att lösenordet måste bytas efter ett visst antal dagar.
Lägsta tid
Anger hur många dagar användaren måste ha ett lösenord innan hon får byta det igen. En nolla (0) eller ett tomt fält här innebär att inställningen är avstängd.
Högsta ålder
Anger hur många dagar användaren får ha samma lösenord innan hon behöver byta det. När de här antalet dagarna har passerats kommer systemet be henne byta lösenord när hon loggar in. En nolla (0) eller ett tomt fält innebär att funktionen är inaktiverad. Notera att om högsta ålder är lägre än minsta ålder kan användaren inte byta lösenord alls.
Lösenordsvarning
Anger hur många dagar innan lösenordets upphörande en användare skall varnas för detta. En nolla (0) eller ett tomt fält innebär att funktionen är inaktiverad.
Inaktiveringsperiod
Anger hur många dagar efter att ett lösenord har upphört som det fortfarande skall gå att logga in på systemet med det. Efter den här perioden låses kontot helt och en administratör måste låsa upp det. Ett tomt fält anger att funktionen är inaktiverad.
Utgångsdatum
Anger ett datum, räknat från den 1 januari 1970, som ett användarkonto skall upphöra. På det här datumet kommer användaren inte längre kunna logga in i systemet med sitt lösenord. Ett tomt fält anger att funktionen är inaktiverad.
Reserverat fält
Det här fältet är reserverat för framtida användande.

Om vi har två användare i vårt system som har samma lösenord, säg att lösenordet är hemligt kommer de få samma hashade lösenord när lösenordet körs genom en hashningsalgoritm. Genom att använda salt i lösenordet kommer de hashade lösenorden se olika ut, även om lösenorden är samma. Så om vi kommer åt filen /etc/shadow kommer vi inte kunna se att två användare har samma lösenord i systemet.

Titta på följande exempel:

$ echo "hemligt" | md5sum
a5cd101aef627c48222e6def444a36d7 -
$ echo "hemligt" | md5sum
a5cd101aef627c48222e6def444a36d7 -

Resultatet av båda körningarna blir samma, vi får svaret a5cd101aef627c48222e6def444a36d7 båda gångerna. Om vi istället lägger till salt kommer det se ut så här:

$ echo "salt-hemligt" | md5sum
6359645a980afbb72b0091d4f401a093 -
$ echo "peppar-hemligt" | md5sum
ea9e4947dd2b716f5f172f18020ebd84 -

Vi har fortfarande samma lösenord (hemligt), men salt skiljer sig (salt och peppar) vilket resulterar i helt olika resultat. Eftersom vi vet vilket salt vi skall använda för att generera hashen kommer det fungera att logga in - om vi har angett rätt lösenord.

Hantera lösenord och konton

För att ändra ett lösenord för en användare använder vi kommandot passwd:

$ sudo passwd jonas
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

Ovanstående kommando kommer byta lösenord för användaren jonas. Alla användare kan byta sina egna lösenord genom att använda kommandot passwd när de loggat in. Användaren root kan byta lösenord för alla användare i systemet genom att använda kommandot passwd ANVÄNDARNAMN.

För att tillfälligt låsa ett användarkonto för inloggning kan vi använda kommandot sudo passwd -l ANVÄNDARNAMN (-l för lock). För att låsa upp kontot igen använder vi kommandot sudo passwd -u ANVÄNDARNAMN (-u för unlock). Ett användarkonto som låses upp har samma lösenord som det hade när det låstes. Det är bara användaren root som kan låsa och låsa upp användarkonton i systemet.

$ sudo passwd -l jonas
passwd: password expiry information changed.
$ sudo passwd -u jonas
passwd: password expiry information changed.

För att hantera policyn för lösenord använder vi kommandot chage. Det första vi provar är att hämta ut informationen för det användarkonto vi loggat in med genom att skriva sudo chage -l jonas (där jonas är användarnamnet vi loggar in med):

sudo chage -l jonas
Last password change                              : jan 19, 2013
Password expires                                  : never
Password inactive                                 : never 
Account expires                                   : never
Minimum number of days between password change    : 0
Maximum number of days between password change    : 99999
Number of days of warning before password expires : 7

Ovanför ser vi att lösenordet senast ändrades den 19:e januari 2013 (last password change), lösenordet upphör aldrig att gälla (password expires), vi har ingen inaktivitetsperiod på lösenordet (password inactive), användarkontot har ingen upphörandedag (account expires), vi kan byta lösenordet när vi vill (minimum number of days between password change), det får gå 99999 dagar (nästan 274 år) innan vi måste byta lösenord igen (maximum number of days between password change) och när vi börjar närma oss de 99999 dagarna kommer vi börja få varningar om att vi behöver byta lösenord från sju dagar innan (number of days of warning before password expires).

Om vi vill ändra datumet till julafton 2014 för senaste gången vi bytte lösenord på ett användarkonto skriver vi:

$ sudo chage -d 2014-12-24 jonas

För att se att datumet ändrades använder vi kommandot sudo chage -l jonas.

$ sudo chage -l jonas
Last password change                              : Dec 24, 2014
Password expires                                  : never
Password inactive                                 : never 
Account expires                                   : never
Minimum number of days between password change    : 0
Maximum number of days between password change    : 99999
Number of days of warning before password expires : 7

För att ställa in ett utgångsdatum för användarkontot använder vi flaggan -E. Vi anger datumet i antalet dagar räknat från den 1 januari 1970 eller ett datum i formatet ÅÅÅÅ-MM-DD. Värdet -1 gör att kontot aldrig upphör att gälla. Vill vi ställa in att ett användarkonto skall upphöra att gälla den sista december 2013 skriver vi följande kommando:

$ sudo chage -E 2013-12-31 jonas

För att kontrollera att det blev inställt skriver vi:

$ sudo chage -l jonas
Last password change                              : Dec 24, 2014
Password expires                                  : never
Password inactive                                 : never 
Account expires                                   : Dec 31, 2013
Minimum number of days between password change    : 0
Maximum number of days between password change    : 99999
Number of days of warning before password expires : 7

Om vi vill bestämma hur många dagar en användare skall ha sitt nya lösenord innan hon får byta det använder vi flaggan -m tillsammans med antal dagar. Värdet noll (0) anger att användaren får byta lösenord när hon vill.

$ sudo chage -m 3 jonas

Vill vi bestämma hur många dagar en användare får använda sitt lösenord innan det är dags att byta igen använder vi flaggan -M tillsammans med antalet dagar. Värdet -1 inaktiverar funktionen.

$ sudo chage -M 42 jonas

Och för att sätta hur många dagar innan lösenordet upphör att gälla som användaren skall få en varning om att hon måste byta lösenord varje gång hon loggar in använder vi flaggan -W tillsammans med antal dagar.

Kontrollera att användardatabasen är korrekt

Med kommandot pwck kan vi kontrollera att användardatabasen är korrekt. Kommandot pwck kontrollerar att vi har rätt antal fält, unika och godkända användarnamn, korrekta grupptillhörigheter, korrekt primär grupp, en hemkatalog som existerar, en fungerande kommandotolk, att användare i /etc/passwd-filen finns i /etc/shadow-filen, att vi har lösenord i /etc/shadow-filen och att vi inte har bytt våra lösenord i framtiden (vilket är ett tecken på att klockan varit felaktig, eller att någon manipulerat med filerna). Vi kör kommandot pwck:

$ sudo pwck
user 'ftp': directory '/var/ftp' does not exist
user 'avahi-autoipd': directory '/var/lib/avahi-autoipd' does not exist
pwck: no changes

Här ser vi att användarkontona ftp och avahi-autoipd har en hemkatalog som inte finns. Eftersom det är systemanvändare så spelar det ingen roll.

Att bli en annan användare

Ibland kan vi vilja bli en annan användare. Det kan till exempel vara när vi vill felsöka eller testa om en specifik användare kan komma åt en katalog eller läsa en fil. För att bli en annan användare behöver vi ha rättighet att använda kommandot sudo. Vi anger användarnamnet vi vill bli och sedan -i som är en parameter till kommandot sudo som gör att vi kommer logga in som användaren för att få med alla inställningar hon har. Här blir vi användaren jonas:

$ sudo -u jonas -i

Vi kan också använda kommandot su för att bli en annan användare, då skulle det se ut så här:

$ su - jonas

Grupper

Grupper i Ubuntu finns i filen /etc/group. Filen är en ren textfil och består av gruppinformation på en rad, separerad av fyra fält:

Gruppnamn
Gruppens namn.
Lösenord
Det krypterade lösenordet för gruppen (används sällan).
Grupp-ID
Det numeriska värde som identifierar gruppen i systemet (GID).
Användarlista
En lista med de användare som ingår i gruppen, varje användarnamn är separerad med ett kommatecken (,).

En grupp defineras så här:

jonas:x:1000:

För att skapa en ny grupp använder vi kommandot groupadd, vi skapar gruppen elever:

$ sudo groupadd elever

För att ta bort en grupp använder vi kommandot groupdel. Vi kan inte ta bort en grupp som någon användare har som primär grupp (finns i användarkontot i filen /etc/passwd).

$ sudo groupdel elever

För att byta namn på en grupp använder vi kommandot groupmod. Vi testar detta genom att skapa gruppen elever igen:

$ sudo groupadd elever

Vi kontrollerar att gruppen finns i filen /etc/group:

$ grep elever /etc/group
elever:x:1005:

Kommandot grep används för att hitta reguljära uttryck (mönster) i texter och filer. Här använder vi det för att hitta elever i filen /etc/group.

Om vi inte får tillbaka kommandoprompten när vi använder kommandot grep beror det ofta på att vi glömt att skriva den andra parametern (vad vi vill söka i). Avsluta grep genom att hålla inne CTRL och samtidigt trycka på bokstaven c på tangentbordet.

Nu byter vi namn på gruppen elever till students:

$ sudo groupmod -n students elever

Vi kontrollerar att ändringen genomfördes:

$ grep students /etc/group
students:x:1005:

För att lägga till en användare i en grupp kan vi använda kommandot gpasswd:

$ sudo gpasswd -a jonas students
Adding user jonas to group students
$ grep students /etc/group
students:x:1005:jonas

Vi kan också använda kommandot usermod:

$ sudo usermod -aG students jonas

-aG betyder _a_ppend och _G_roup. Alltså lägg till i grupp.

Användaren måste logga ut och in igen för att få den nya grupptillhörigheten.

För att ta bort en användare från en grupp kan vi använda kommandot gpasswd:

$ sudo gpasswd -d jonas students
Removing user jonas from group students
$ grep students /etc/group
students:x:1005:

Eller kommandot usermod:

$ sudo usermod -rG students jonas

-rG betyder _r_emove och _G_roup. Alltså, ta bort från grupp.

Om vi vill ta reda på vilka grupper en användare tillhör kan vi använda kommandot groups. För att se vilka grupper användaren jonas tillhör skriver vi:

$ groups jonas

För att ta reda på vilka användare som tillhör en grupp använder vi kommandot getent. För att visa användarna i gruppen students skriver vi:

$ getent group students

Filrättigheter

Filrättigheter handlar om åtkomstkontroll till filer och kataloger för användare. Vilka användare får läsa filen? Vilka användare får skriva till och radera filen? Vilka användare får visa innehållet i en katalog? Det är inte alla filsystem som stödjer filrättigheter, men filsystemen ext4 och xfs som är de vanligaste i Linux har stöd för filrättigheter. Från Microsoft Windows kanske du känner till FAT32 och NTFS som är de filsystem vi använder i Microsoft Windows. NTFS har stöd för rättigheter i filsystemet, FAT32 har det inte.

I Linux finns det tre rättigheter:

  • (r)ead, för att användare skall kunna läsa en fil
  • (w)rite, för att användare skall kunna skriva till en fil, eller radera den
  • e(x)ecute, för att användare skall kunna köra filen (starta programmet)

e(x)ecute har en speciell funktion för kataloger, om rättigheten är satt så får användaren visa filerna i katalogen.

Kom ihåg: read, write och execute

Vi börjar med att skapa en tom fil (som vi döper till filer) och visar den med kommandot ls:

$ touch filer
$ ls -l filer
-rw-r--r--. 1 jonas jonas 0 Sep 13 10:17 filer

Den här delen skall vi titta på nu, för det är den som anger filrättigheterna: -rw-r--r--. Det första tecknet (-) anger att det är en vanlig fil vi ser. Så vi får kvar rw-r--r--. Det är tre grupper: ägaren (user), gruppen (group) och andra (other). Var och en har tre av tecknen var, så här: rw- | r-- | r--. Läser vi rättigheterna blir det ägaren av filen har läs- (r) och skriv- (w) rättighet, gruppen har läsrättighet (r) och andra har läsrättighet (r).

Vem är ägare av filen och vilken grupp tillhör filen? Vi tittar på kommandot ls -l igen:

$ ls -l filer
-rw-r--r--. 1 jonas jonas 0 Sep 13 10:17 filer

Det står jonas jonas där, den första jonas anger att jonas äger filen och den andra jonas anger att filen tillhör gruppen jonas.

Vi läser raden igen: användaren jonas har läs- och skrivrättighet, gruppen jonas har läsrättighet och de användare som inte är jonas och inte tillhör gruppen jonas har läsrättighet till filen.

Filrättigheter

För att ändra rättigheterna på en fil använder vi kommandot chmod. För att ge ägaren (u) rättighet att köra filen (eXecute) skriver vi:

$ chmod u+x filer
$ ls -l filer
-rwxr--r--. 1 jonas jonas 0 Sep 13 10:17 filer

För att ge gruppen (g) skrivrättighet (w) skriver vi:

$ chmod g+w filer
$ ls -l filer
-rwxrw-r--. 1 jonas jonas 0 Sep 13 10:17 filer

För att ta bort läsrättigheten (r) för andra (o) skriver vi:

$ chmod o-r filer
$ ls -l filer
-rwxrw----. 1 jonas jonas 0 Sep 13 10:17 filer

Vi kan kombinera dem i ett och samma kommando, så här skriver vi för att ta bort körrättigheten (x) från ägaren (u), ge gruppen (g) läs- och skrivrättigheter (rw) och ta bort läs- och körrättigheter (rx) för andra (o):

$ chmod u-x,g+rw,o-rx filer
$ ls -l filer
-rw-rw----. 1 jonas jonas 0 Sep 13 10:17 filer

När vi använder + och - sätter vi, eller tar bort rättigheter oavsett vad vi har för rättigheter på filen sedan tidigare. Om ägaren av filen har rw- och vi skriver chmod u-w kommer ägaren ha rättigheten r-- efteråt.

För att sätta exakta rättigheter, oavsett vad vi har sedan tidigare, använder vi =:

$ chmod u=rw,g=r,o=r filer
$ ls -l filer
-rw-r--r--. 1 jonas jonas 0 Sep 13 10:17 filer

Nu kommer ägaren ha läs- och skrivrättigheter, gruppen har läsrättighet och andra har läsrättighet. Oavsett vilka rättigheter filen hade innan. I det här fallet sätter vi också samma rättighet på gruppen och andra (r), vilket kan förkortas:

$ chmod u=rw,go=r filer
$ ls -l filer
-rw-r--r--. 1 jonas jonas 0 Sep 13 10:17 filer

Vi kan också använda oktala tal för att sätta rättigheterna enligt följande:

Värde Beskrivning
0 Ingen rättighet (-)
1 Kör (execute, x)
2 Skriv (write, w)
4 Läs (read, r)

Dessa kan vi kombinera, så skriv (2) och läs (4) blir 6. Kör (1), skriv (2) och läs (4) blir 7. För att sätta rättigheterna med siffror måste vi ange alla tre grupperna (ägaren, gruppen och andra) i samma kommando:

$ chmod 755 filer
$ ls -l filer
-rwxr-xr-x. 1 jonas jonas 0 Sep 13 10:17 filer

755 är samma som om vi hade skrivit u=rwx,g=rx,o=rx (eller den kortare varianten: u=rwx,go=rx). Vi kan inte ta bort, eller lägga till, en specifik rättighet med siffror (som till exempel u+x). Vill vi sätta samma rättigheter på en hel katalog och alla filer under den använder vi -R (för recursive):

$ chmod -R 755 katalog/

För att en användare skall kunna visa filerna i en katalog måste användaren ha rättigheten x på katalogen. Antagligen genom att användaren äger katalogen, tillhör gruppen eller har x genom andra-rättigheten. Har användaren läsrättighet på en katalog kan användaren läsa filer i en katalog, om hon vet namnet på filen. Lämpligast är ju att användaren har både läs- (r) och kör- (x) rättigheten.

För att byta ägare av en fil, eller katalog, använder vi kommandot chown. Notera att det bara är root som kan byta ägare på en fil, så vi måste använda kommandot sudo. För att göra användaren kalle till ägare av filen filer skriver vi:

$ sudo chown kalle filer
$ ls -l filer
-rw-r--r--. 1 kalle jonas 0 Sep 13 10:17 filer

För att byta ägare på en katalog och alla filer i katalogen skriver vi:

$ sudo chown -R kalle katalog/

För att byta grupp på en fil, eller katalog, använder vi kommandot chgrp. För att sätta gruppen till elever på filen filer skriver vi:

$ chgrp elever filer
$ ls -l filer
-rw-r--r--. 1 kalle elever 0 Sep 13 10:17 filer

För att byta grupp på en katalog och alla filer i katalogen använder vi -R (för recursive) och skriver:

$ chgrp -R elever katalog/

Vi kan också använda kommandot chown för att byta ägare och grupp i samma kommando:

$ sudo chown kalle:elever filen

Eller för en katalog och alla filer i katalogen:

$ sudo chown -R kalle:elever katalog/