Denna handledning beskriver accesskontrollistor i Linux, vad de används till och hur man hanterar dem.
Som systemadministratör spenderar du antagligen en hel del tid med att konfigurera behörigheter för användare och grupper i ditt system.
Filbehörigheter är redan ganska praktiska för att ge läs-, skriv- eller körbehörigheter till kataloger eller filer.
Men vad händer om vi behöver ett mer exakt sätt att ge behörigheter till mappar eller filer?
Vad händer om jag vill ge åtkomst till en fil till en specifik användare eller en specifik grupp som inte är den nuvarande ägaren av filen?
Det är precis vad åtkomstkontrollistor, även förkortat ACL, löser i ett Linuxsystem.
I dagens handledning tar vi en mycket noggrann titt på åtkomstkontrollistor, vad de är och hur de används för att konfigurera ett Linuxsystem på rätt sätt.
Är du redo?
Innehållsförteckning
- Vad du kommer att lära dig
- Grundläggande om åtkomstkontrollistor i Linux
- Definition av åtkomstkontrollistor
- Lista över åtkomstkontrollistor
- Skapa åtkomstkontrolllistor på Linux
- Kontroll av ACL-paketinstallation
- Inställning av åtkomstkontrollistor med hjälp av setfacl
- Lista över åtkomstkontrollistor med hjälp av getfacl
- Arbeta med masken i åtkomstkontrollistorna
- Skapa standardinställningar för åtkomstkontrollistor på kataloger
- Släckning av standardåtkomstkontrolllistor för kataloger
- Slutsats
Vad du kommer att lära dig
Om du följer den här handledningen till slutet kommer du att lära dig om följande ämnen:
- Vad åtkomstkontrolllistor är och hur de kan läsas från kommandot ls;
- Hur man ställer in grundläggande behörigheter för en fil med kommandot setfacl:
- Hur man läser åtkomstkontrollistor med kommandot getfacl;
- Vad är masken för åtkomstkontrollistor och hur den ska läsas;
- Vad standardvärden för åtkomstkontrollistor är och hur de kan användas på ett effektivt sätt
Det är ett ganska långt program, så utan vidare börjar vi med en snabb definition av vad åtkomstkontrollistor är.
Grundläggande om åtkomstkontrollistor i Linux
I Linux finns det två sätt att ställa in behörigheter för användare och grupper : med vanliga filbehörigheter eller med åtkomstkontrollistor.
Definition av åtkomstkontrollistor
Access Control Lists används i Linux-filsystem för att ställa in anpassade och mer personaliserade behörigheter för filer och mappar. ACL:er gör det möjligt för filägare eller privilegierade användare att bevilja rättigheter till specifika användare eller specifika grupper.
I Linux är behörigheterna, som du säkert vet, uppdelade i tre kategorier : en för filens ägare, en för gruppen och en för övriga.
I vissa fall kan det dock hända att du vill ge åtkomst till en katalog (behörigheten exekvera till exempel) till en viss användare utan att behöva placera denna användare i filens grupp.
Det är precis därför som åtkomstkontrollistorna uppfanns från början.
Lista över åtkomstkontrollistor
På Linux aktiveras inte åtkomstkontrollistorna när du skapar en ny fil eller katalog på din värddator (utom om en överordnad katalog har vissa ACL:er fördefinierade).
För att se om åtkomstkontrollistor är definierade för en fil eller katalog kör du kommandot ls och letar efter ett ”+”-tecken i slutet av behörighetsraden.
$ ls -l
För att visa skillnaden, här är skillnaden när du listar filer på en minimal instans.
Nu när du har några grunder om åtkomstkontrolllistor ska vi se hur du kan börja skapa grundläggande ACL för dina filer och kataloger.
Skapa åtkomstkontrolllistor på Linux
För att börja med ACL-kommandon är det viktigt att ha paketen installerade på din värd.
Kontroll av ACL-paketinstallation
Det kanske inte är fallet om du väljer att ha en minimal server igång.
Start med att kontrollera hjälpen relaterad till setfacl genom att köra följande kommando
$ setfacl --help
Om din värddator inte kan hitta setfacl-kommandot, se till att du har installerat de nödvändiga paketen för ACL-hantering.
$ sudo apt-get install acl -y
Notera att du behöver sudo privilegier på Debian 10 för att köra det här kommandot.
Kör setfacl-kommandot och se till att du kan se hjälpkommandona den här gången.
Nu när din värddator är korrekt konfigurerad kan vi se hur setfacl-kommandot fungerar.
Inställning av åtkomstkontrollistor med hjälp av setfacl
Med åtkomstkontrollistor finns det två huvudkommandon som du behöver komma ihåg : setfacl och getfacl.
I det här kapitlet kommer vi att titta på setfacl-kommandot eftersom getfacl-kommandot är ganska självförklarande.
Kommandot setfacl används i Linux för att skapa, ändra och ta bort åtkomstkontrollistor för en fil eller katalog.
Setfacl har följande syntax
$ setfacl {-m, -x} {u, g}:<name>: <file, directory>
Varvid krusade parenteser betyder ett av följande alternativ och vanliga parenteser betyder ett eller flera alternativ.
- -m : innebär att du vill ändra en eller flera ACL-poster på filen eller katalogen.
- -x : innebär att du vill ta bort en eller flera ACL-poster på en fil eller katalog.
- {u, g} : om du vill ändra ACL:en för en användare eller för en grupp.
- name : detta är en valfri parameter, den kan utelämnas om du vill ställa in ACL-poster för varje användare eller för varje grupp på din värd.
- : för att ställa in läs-, skriv- eller körbehörigheter för filen eller katalogen.
För att ställa in specifika skrivbehörigheter för en användare på en fil skriver du till exempel följande kommando
$ setfacl -m u:user:w <file, directory>
För att ställa in exekveringsbehörigheter för alla användare på din värd, skulle du skriva följande kommando
$ setfacl -m u::x <file, directory>
För att ställa in fullständiga behörigheter för en specifik grupp på din värd skulle du skriva setfacl på följande sätt
$ setfacl -m g:group:rwx <file, directory>
Nu kan vi säga att du vill ta bort en ACL-post från en fil.
För att ta bort en användarspecifik post från en fil skulle du ange x-alternativet.
Notera : du kan inte specificera rättigheter från en enda ACL-post, vilket innebär att du inte kan ta bort skrivbehörigheter och behålla ACL-läsbehörigheterna aktiva.
$ setfacl -x u:<user> <file, directory>
För att ta bort ACL relaterade till grupper på din värd skulle du på liknande sätt skriva följande kommando
$ setfacl -x g:<group> <file, directory>
När du nu har sett hur du enkelt kan skapa åtkomstkontrolllistor i Linux är det dags att se hur du kan kontrollera existerande åtkomstkontrolllistor på filer och kataloger.
Lista över åtkomstkontrollistor med hjälp av getfacl
Kommandot getfacl används i Linux för att skriva ut en fullständig lista över alla vanliga behörigheter och behörigheter för åtkomstkontrollistor på en fil eller katalog.
Getfacl kan användas med följande syntax
$ getfacl <file, directory>
Getfacl-kommandot är uppdelat i flera kategorier :
- Filnamn, ägare och grupp : Information om användar- och gruppinnehav visas överst;
- Användarbehörigheter: Först visas vanliga användarbehörigheter, även kallade ägaranvändare, följt av eventuella användarspecifika ACL-poster (kallade namngivna användare)
- Gruppbehörigheter: Först visas vanliga användarbehörigheter, även kallade ägaranvändare, följt av eventuella användarspecifika ACL-poster (kallade namngivna användare)
- Gruppbehörigheter: Ägargrupper presenteras följt av gruppspecifika ACL-poster, även kallade namngivna grupper
- Mask : begränsar de behörigheter som ges till ACL-poster, masken kommer att beskrivas i detalj i nästa avsnitt;
- Andra behörigheter : dessa behörigheter är alltid aktiva och detta är den sista kategorin som utforskas när inga andra behörigheter passar med den aktuella användaren eller gruppen.
Arbeta med masken i åtkomstkontrollistorna
Som du förmodligen såg i den sista skärmdumpen finns det en maskpost mellan namngivna grupper och övriga behörigheter.
Men vad används den här masken till?
ACL-masken skiljer sig från filen skapandemask (umask) och används för att begränsa befintliga ACL-poster som finns på en fil eller katalog.
ACL-masken används som den maximala uppsättningen ACL-behörigheter utan hänsyn till befintliga behörigheter som överskrider ACL-masken.
Som alltid säger ett diagram mer än hundra ord.
ACL-masken uppdateras varje gång du kör ett setfacl-kommando såvida du inte anger att du inte vill uppdatera masken med flaggan -n.
För att förhindra att masken uppdateras kör du setfacl med följande kommando
$ setfacl -n -m u:antoine:rwx <file, directory>
Som du kan se i det här exemplet har jag ställt in användaren ”antoine” så att han/hon har fullständiga behörigheter till filen.
Masken är inställd för att begränsa behörigheterna till läs- och skrivbehörigheter.
Som en följd av detta är de ”effektiva behörigheterna” för den här filen för den här användaren läs- och skrivbehörigheter, behörigheten exekvera är inte beviljad.
Observera att om din maximala uppsättning behörigheter skiljer sig från masken kommer du att presenteras med en effektiv rad som beräknar den ”verkliga” uppsättningen ACL-poster som används.
Skapa standardinställningar för åtkomstkontrollistor på kataloger
Som redan nämnts i den här artikeln är det möjligt att skapa ACL-poster på kataloger och de fungerar på samma sätt som åtkomstkontrollistor för filer.
Det finns dock en liten skillnad när det gäller kataloger : du har möjlighet att skapa standardinställningar för åtkomstkontrolllistor.
Standardinställningar för åtkomstkontrolllistor används för att skapa ACL-poster på en katalog som kommer att ärvas av objekt i den här katalogen, t.ex. filer eller underkataloger.
När du skapar standardinställningar för ACL:er :
- Filer som skapas i den här katalogen ärver de ACL-poster som anges i den överordnade katalogen
- Underkataloger som skapas i den här katalogen ärver ACL-posterna samt standard ACL-posterna från den överordnade katalogen.
För att skapa standard ACL-poster anger du -d-alternativet när du ställer in ACL med kommandot setfacl.
$ setfacl -d -m {u, g}:<name>: <directory>
För att till exempel tilldela läsbehörighet till alla filer som skapas i en katalog kör du följande kommando
$ setfacl -d -m u::r directory
När en fil skapas i den här acl-katalogen kan du se att standard ACL-poster tillämpas på filen.
Samma sak gäller när en katalog skapas i acl-förteckningen: den ärver de standard ACL-poster som anges i den överordnade katalogen.
Notera att det rekommenderas att ange standardbehörigheter för alla tre kategorierna (användare, grupp och annat).
I själva verket kommer angivandet av en av de tre posterna att skapa de återstående två med behörigheter som är relaterade till mask för filskapande.
Släckning av standardåtkomstkontrolllistor för kataloger
För att ta bort befintliga standardåtkomstkontrolllistor för kataloger använder du flaggan -k med kommandot setfacl.
$ setfacl -k <directory>
Med utgångspunkt i det exempel som vi angav tidigare kan du ta bort standardposter
$ setfacl -k acl-directory
Bemärk att om du raderar ACL-poster från den överordnade katalogen så raderas inte ACL-poster i filer eller kataloger som finns i den överordnade katalogen.
För att ta bort standard ACL-poster i en katalog och alla underkataloger måste du använda ett rekursivt alternativ (-R)
$ setfacl -kR <directory>
Slutsats
I den här handledningen har du lärt dig mer om åtkomstkontrolllistor i Linux, kommandot getfacl och setfacl.
Du har lärt dig mer om masken för åtkomstkontrollistor och hur standard-ACL används för att skapa ACL-poster på filer och underkataloger som ingår i den överordnade katalogen.
Om du är nyfiken på Linux systemadministration har vi många fler handledningar i ämnet, se till att läsa dem!