Avancerade rättigheter i Linux
ACL (Access Control List) är något relativt okänt och sällan använt i Linux. Men trots det finns ACL i Linux som standard för filsystemen ext4 och XFS. Det erbjuder mer kontroll över vem som har tillgång till vad och är ett komplement till de vanliga rättigheterna.
De vanliga rättigheterna i Linux räcker ofta långt, särskilt om man använder
grupper. Men ibland behöver man något mer flexibelt och kraftfullt. Exempelvis
om man vill ge flera användare tillgång en katalog utan att göra personerna
medlemmar i en särskild grupp. Eller om man vill sätta specifika rättigheter
och medlemskap för nya filer i en katalog utan att förlita sig på användarnas
umask
. Allt detta och mycket med går att åstadkomma med ACL i Linux. Det är
dessutom inget nytt eller unik för Linux; det är en POSIX-funktion.
Repetition av de vanliga rättigheterna
Men innan vi tittar vi på ACL är det värt att repetera de vanliga rättigheterna i Linux.
$> ls -l
total 4
-rw-r--r-- 1 jake jake 21 apr 14 15:58 rapport.txt
I exemplet ovan har användaren Jake läs- och skrivrättigheter till filen
rapport.txt
(rw-
). Gruppen med samma namn – Jake – har läsrättigheter till
filen (r--
). Övriga användare på systemet har också läsrättigheter (den sista
gruppen, r--
). Man delar således in -rw-r--r--
i fyra delar, inräknat
filtypen:
-
= filtypen, i det här fallet en vanlig filrw-
= skriv- och läsrättigheter för användarenr--
= läsrättigheter för gruppenr--
= läsrättigheter för övriga
För att ändra ägaren och/eller gruppen använder vi chown
. För att ändra
gruppen använder vi chgrp
. För att ändra rättigheterna använder vi chmod
.
Tänk dock på att ägaren av en fil inte kan ge bort sina filer till någon annan,
det måste root göra. Men om användaren är medlem i gruppen kan hon själv
ändra ägargruppen till den gruppen.
$> chmod u=rw,g=rw,o= rapport.txt
$> ls -l
total 4
rw-rw---- 1 jake jake 21 apr 14 15:58 rapport.txt
$> chown jake:devops rapport.txt
$> ls -l
total 4
-rw-rw---- 1 jake devops 21 apr 14 15:58 rapport.txt
Introduktion till ACL
Kommandona för att läsa respektive sätta ACL i Linux är getfacl
och
setfacl
. Dessa kommandon finns redan installerade i de flesta
Linux-distributioner, med undantaget av Ubuntu Server och Debian.
För att installera ACL-kommandona i Ubuntu Server (och andra Debian-baserade system där de eventuellt saknas):
$> sudo apt-get install acl
Om vi nu vill ge användarna Kalle och Knatte tillgång till filen rapport.txt
från det tidigare exemplet – utan att behöva göra dem till medlemmar av gruppen
DevOps – behöver vi använda oss av ACL. Detta kan vi dessutom göra som ägaren
av filen, i det här fallet Jake. Här ger vi Kalle och Knatte läs- och
skrivrättigheter till filen rapport.txt
:
$> setfacl -m kalle:rw rapport.txt
$> setfacl -m knatte:rw rapport.txt
Flaggan -m
i kommandot ovan betyder att vi anger rättigheterna direkt på
kommandoraden, inte via en fil.
För att kontrollera ACL använder vi getfacl
. Här ser vi först att det är Jake
med gruppen DevOps som äger filen. Men här ser vi även att Kalle och Knatte har
tillgång till filen enligt ACL.
$> getfacl rapport.txt
# file: rapport.txt
# owner: jake
# group: devops
user::rw-
user:kalle:rw-
user:knatte:rw-
group::rw-
mask::rw-
other::---
Sätta standardrättigheter
Med ACL kan vi även sätta grupptillhörighet och rättigheter för nya filer och
kataloger. Om vi vill att alla nya filer och kataloger som skapas i den
aktuella katalogen (project
) ska gå att läsas och skrivas av gruppen DevOps,
sätter vi detta med d
som i defaults.
$> cd ..
$> setfacl -m d:g:devops:rwX project
Här står d
för default och g
för group. devops
är gruppen som ska ha
tillgång till nya filer och kataloger. rwX
betyder att filer ska få läs- och
skrivrättigheter för gruppen DevOps och exekveringsrättigheter för kataloger.
(Ett litet x
sätter exekveringsrättigheten för både filer och kataloger, men
ett stort X
sätter det enbart för kataloger.)
En kontroll med getfacl
:
$> getfacl project
# file: project
# owner: jake
# group: jake
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:group:devops:rwx
default:mask::rwx
default:other::r-x
Om vi nu testar att skapa en ny fil som Jake i katalogen project
kommer denna
att få gruppen DevOps och rättigheterna rw-rw-r---
(plustecknet efter
rättigheterna betyder att ACL är aktivt för filen):
$> cd project
$> touch test.txt
$> ls -l test.txt
-rw-rw-r--+ 1 jake jake 0 apr 14 16:45 test.txt
Notera att här visas gruppen fortfarande som Jake, vilket är korrekt enligt de
“vanliga” Linux-rättigheterna. Men om vi kontrollerar filen med getfacl
ser
vi att även gruppen DevOps och läs- och skrivrättigheter. Vi ser också att den
“vanliga” gruppen fortfarande är Jake.
$> getfacl test.txt
# file: test.txt
# owner: jake
# group: jake
user::rw-
group::r-x #effective:r--
group:devops:rwx #effective:rw-
mask::rw-
other::r--
Vi kan bekräfta att vi kan skriva till filen med en användare som är medlem i gruppen DevOps (men som inte är Jake själv):
$> su knatte
Password:
$> id
uid=1002(knatte) gid=1003(knatte) groups=1003(knatte),1001(devops)
$> echo "Hejsan" > test.txt
$> cat test.txt
Hejsan
$> ls -l test.txt
-rw-rw-r--+ 1 jake jake 7 apr 14 17:10 test.txt
Det går även att lägga till användare som ska ha tillgång till alla nya filer i
katalogen. Då byter vi bara ut g
(för grupp) mot u
(för user). Till
exempel:
$> cd ..
$> setfacl -m d:u:kalle:rwX project
$> getfacl project
# file: project/
# owner: jake
# group: devops
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:kalle:rwx
default:group::r-x
default:group:devops:rwx
default:mask::rwx
default:other::r-x
Nyhetsbrev
Nyhetsuppdateringar från tidningen direkt till din inkorg, helt kostnadsfritt. Avsluta när du vill.
Relaterade artiklar
-
Avlyssna trafik på servern med Wireshark och TShark
Wireshark är ett ovärderligt verktyg för att felsöka nätverkskonfigurationer, applikationer, API:er, demoner och mycket annat. I kombination med
tshark
kan vi dessutom avlyssna trafiken på en server i realtid. -
Var försiktig med att curl:a skript som root
Att installera program i Linux genom att omdirigera utdata från Curl till skalet är snabbt och smidigt. Men det är ack så farligt om du inte känner till programmet eller dess ursprung.
-
Vidarebefordran av SSH-agenten
SSH agent forwarding, eller vidarebefordran av SSH-agenten, innebär att man kan vidarebefordra SSH-agenten till ett fjärrsystem. På så sätt behöver man inte kopiera sin privata SSH-nyckel till fjärrsystemet, eller skapa flera nycklar för olika system. Men det finns risker med det.
-
Jenkins som ett alternativ till Ansible Tower
Ansible Tower kommer med en stor prislapp, speciellt för ett mindre företag eller en privatperson. AWX å andra sidan är helt fritt, men kräver numera Kubernetes. För den som vill automatisera sina Ansible Playbooks går det dock bra att använda Jenkins som en ersättning för Tower och AWX.
-
Hämta data från API:er med cURL och jq
Med cURL och jq går det att extrahera data från API:er direkt från kommandoraden. Jq är en JSON-tolkare och beskrivs av utvecklarna som sed och awk för JSON.
Senaste nyheterna och inläggen
-
Avlyssna trafik på servern med Wireshark och TShark
Wireshark är ett ovärderligt verktyg för att felsöka nätverkskonfigurationer, applikationer, API:er, demoner och mycket annat. I kombination med
tshark
kan vi dessutom avlyssna trafiken på en server i realtid. -
Mysig stämning på sommarens första demoparty
I helgen var det Reunion 2024 i Kvidinge Folkets hus, sommarens första skånska demoparty. Partyt organiserades av Jesper “Skuggan” Klingvall. På plats fanns ett 30-tal besökare.
-
Sommarens skånska demopartyn
Årets sommar bjuder på två skånska demopartyn. Först ut är Reunion i Kvidinge den 28–30 juni. Därefter är det Pågadata i Örtofta den 9–11 augusti.
-
Riskerna med BankID som ingen pratar om
BankID är ett säkert och smidigt sätt att identifiera sig online. Men i takt med dess ökade popularitet och användning har det blivit en svag länk – en single point of failure – på mer än ett sätt.
-
Polisernas fängelsedomar står fast
Efter tre år är målet mot de två poliser som olovligen tog sig in i en berusad mans bostad i Landskrona och misshandlade honom klart. Högsta domstolen beslutade den sjätte mars att avvisa överklagan. Fängelsedomarna för poliserna står därmed fast.
Utvalda artiklar
-
Mysig stämning på sommarens första demoparty
I helgen var det Reunion 2024 i Kvidinge Folkets hus, sommarens första skånska demoparty. Partyt organiserades av Jesper “Skuggan” Klingvall. På plats fanns ett 30-tal besökare.
-
Datorparty i Landskrona
I helgen höll Syntax Society sitt årliga sommarparty. Platsen var en källarlokal i Landskrona där ett femtontal personer medverkade.
-
Det första Pågadata har ägt rum
I helgen ägde det första Pågadata rum – uppföljaren till Gubbdata. Platsen var Folkets Hus i Kvidinge. Organisatör av partyt var Johan “z-nexx” Osvaldsson med hjälp från Jesper “Skuggan” Klingvall. Partyt hade över 100 anmälda deltagare.
-
Även hovrätten fäller poliserna för att ha satt dit oskyldig
Hovrätten fastställer straffet för de två poliser som förra året dömdes till vardera ett års fängelse av Lunds tingsrätt för att ha misshandlat och satt dit en oskyldig man. De båda poliserna ska även betala skadestånd till mannen.
-
Retroloppis i Påarp
Idag var det retroloppis hos Andreas Nilsson i Påarp. På baksidan av huset fanns hundratals spel uppradade på långa bord. Trots friska vindar och sval temperatur var loppisen välbesökt.
CyberInfo Sverige är ett it- och medieföretag i nordvästra Skåne som tillhandahåller böcker, utbildningar, nyheter och konsulttjänster inom Linux, säkerhet och programmering.
CyberInfo Sverige är godkänd för F-skatt, är momsregistrerat och innehar
utgivningsbevis för webbplatsen www.cyberinfo.se.