Deze tutorial gaat in op toegangs-controlelijsten onder Linux, waar ze voor gebruikt worden en hoe ze te beheren.
Als systeembeheerder bent u waarschijnlijk veel tijd kwijt met het configureren van rechten voor gebruikers en groepen op uw systeem.
File permissies zijn al heel handig om lees-, schrijf- of uitvoerrechten te geven aan mappen of bestanden.
Maar wat als we een preciezere manier nodig hebben om mappen of bestanden rechten te geven?
Wat als ik toegang tot een bestand wil geven aan een specifieke gebruiker of een specifieke groep, die niet de huidige eigenaar van het bestand is?
Dit is precies wat toegangscontrolelijsten, ook wel afgekort tot ACL, oplossen op een Linux-systeem.
In de tutorial van vandaag nemen we toegangscontrolelijsten onder de loep, wat ze zijn en hoe ze worden gebruikt om een Linux-systeem goed te configureren.
Klaar?
Inhoudsopgave
- Wat u zult leren
- Basisprincipes van toegangscontrolelijsten onder Linux
- Definitie van toegangscontrolelijsten
- Listing Access Control List
- Toegangscontrole lijsten maken op Linux
- Controleer de installatie van ACL pakketten
- Toegangscontrolelijsten instellen met setfacl
- Toegangscontrolelijsten bekijken met getfacl
- Werken met het masker van de toegangscontrolelijsten
- Toegangscontrolelijsten standaard maken op directories
- Verwijderen van standaard toegangscontrolelijsten op directories
- Conclusie
Wat u zult leren
Als u deze tutorial tot het einde volgt, zult u over de volgende onderwerpen leren:
- Wat toegangscontrolelijsten zijn en hoe ze kunnen worden uitgelezen met het ls commando;
- Hoe u basisrechten op een bestand kunt instellen met het setfacl commando:
- Hoe je toegangscontrole lijsten kunt lezen met het getfacl commando;
- Wat is het toegangscontrole lijst masker en hoe moet het gelezen worden;
- Wat toegangscontrole lijst standaards zijn en hoe ze effectief gebruikt kunnen worden
Dat is nogal een lang programma, dus zonder verder oponthoud, laten we beginnen met een snelle definitie van wat toegangscontrole lijsten zijn.
Basisprincipes van toegangscontrolelijsten onder Linux
On Linux zijn er twee manieren om rechten voor gebruikers en groepen in te stellen: met gewone bestandsrechten of met toegangscontrolelijsten.
Definitie van toegangscontrolelijsten
Toegangscontrolelijsten worden op Linux bestandssystemen gebruikt om aangepaste en meer gepersonaliseerde rechten op bestanden en mappen in te stellen. Met ACL’s kunnen bestandseigenaren of bevoorrechte gebruikers rechten toekennen aan specifieke gebruikers of aan specifieke groepen.
In Linux zijn, zoals u waarschijnlijk weet, de permissies verdeeld in drie categorieën: een voor de eigenaar van het bestand, een voor de groep en een voor de anderen.
In sommige gevallen wilt u echter toegang tot een directory (bijvoorbeeld de execute permissie) verlenen aan een specifieke gebruiker zonder dat u deze gebruiker in de groep van het bestand hoeft in te delen.
Dit is precies de reden waarom access control lists zijn uitgevonden.
Listing Access Control List
Op Linux worden access control lists niet aangezet als je een nieuw bestand of een nieuwe directory aanmaakt op je host (behalve als een bovenliggende directory een aantal ACL’s voorgedefinieerd heeft).
Om te zien of er toegangscontrolelijsten zijn gedefinieerd voor een bestand of map, voert u het ls-commando uit en kijkt u of er een “+”-teken aan het eind van de toestemmingsregel staat.
$ ls -l
Om het verschil te laten zien, ziet u hier het verschil bij het opsommen van bestanden op een minimale instantie.
Nu dat je wat basiskennis hebt over toegangscontrole lijsten, laten we eens kijken hoe je kunt beginnen met het maken van basis ACL voor je bestanden en mappen.
Toegangscontrole lijsten maken op Linux
Voordat je begint met ACL commando’s, is het belangrijk om de pakketten op je host geinstalleerd te hebben.
Controleer de installatie van ACL pakketten
Het kan zijn dat dit niet het geval is als u ervoor kiest om een minimale server te draaien.
Begin met het controleren van de help gerelateerd aan setfacl door het volgende commando uit te voeren
$ setfacl --help
Als uw host het setfacl commando niet kan vinden, zorg er dan voor dat u de benodigde pakketten voor ACL beheer heeft geïnstalleerd.
$ sudo apt-get install acl -y
Merk op dat u op Debian 10 sudo-privileges nodig hebt om dit commando uit te voeren.
Run het setfacl commando en zorg ervoor dat u deze keer de helpcommando’s kunt zien.
Nu uw host correct is geconfigureerd, laten we eens kijken hoe het setfacl commando werkt.
Toegangscontrolelijsten instellen met setfacl
Bij toegangscontrolelijsten zijn er twee hoofdcommando’s die u moet onthouden: setfacl en getfacl.
In dit hoofdstuk gaan we kijken naar het setfacl commando, omdat het getfacl commando vrij voor de hand liggend is.
Het setfacl commando wordt op Linux gebruikt om toegangscontrole lijsten te maken, te wijzigen en te verwijderen op een bestand of directory.
Het setfacl heeft de volgende syntax
$ setfacl {-m, -x} {u, g}:<name>: <file, directory>
Waarbij gekrulde haakjes een van de volgende opties betekenen en gewone haakjes een of meerdere items betekenen.
- -m : betekent dat u een of meer ACL regels op een bestand of map wilt wijzigen.
- -x : betekent dat u een of meer ACL regels op een bestand of map wilt verwijderen.
- {u, g} : als u de ACL voor een gebruiker of voor een groep wilt wijzigen.
- naam : dit is een optionele parameter, deze kan worden weggelaten als u de ACL regels voor iedere gebruiker of voor iedere groep op uw host wilt instellen.
- : om lees, schrijf of uitvoer rechten in te stellen op het bestand of de directory.
Om bijvoorbeeld specifieke schrijfrechten voor een gebruiker op een bestand in te stellen, zou u het volgende commando
$ setfacl -m u:user:w <file, directory>
Om uitvoeringsrechten voor alle gebruikers op uw host in te stellen, zou u het volgende commando schrijven
$ setfacl -m u::x <file, directory>
Om volledige rechten voor een specifieke groep op uw host in te stellen, zou u setfacl op deze manier schrijven
$ setfacl -m g:group:rwx <file, directory>
Nu stellen we dat u een ACL-entry van een bestand wilt verwijderen.
Om een gebruiker-specifieke entry uit een bestand te verwijderen, zou je de x optie opgeven.
Note : je kunt geen specifieke rechten van een enkele ACL entry verwijderen, wat betekent dat je geen schrijfrechten kunt verwijderen, terwijl de ACL leesrechten actief blijven.
$ setfacl -x u:<user> <file, directory>
Ook om ACL-gerelateerd aan groepen op uw host te verwijderen, zou u de volgende opdracht uitvoeren
$ setfacl -x g:<group> <file, directory>
Nu u hebt gezien hoe u eenvoudig toegangscontrolelijsten kunt maken onder Linux, is het tijd om te zien hoe u bestaande toegangscontrolelijsten op bestanden en mappen kunt controleren.
Toegangscontrolelijsten bekijken met getfacl
Het commando getfacl wordt onder Linux gebruikt om een complete lijst te printen van alle reguliere permissies en toegangscontrolelijsten op een bestand of map.
De getfacl kan worden gebruikt met de volgende syntaxis
$ getfacl <file, directory>
De getfacl opdracht is verdeeld in meerdere categorieën :
- Bestandsnaam, eigenaar en groep : de informatie over gebruikers- en groepseigendom wordt bovenaan weergegeven;
- Gebruikersmachtigingen : eerst worden de gewone gebruikersmachtigingen weergegeven, ook wel de eigenaar genoemd, gevolgd door eventuele gebruikersspecifieke ACL-vermeldingen (named users genoemd)
- Groepsmachtigingen : Eigen groepen worden gepresenteerd, gevolgd door groep-specifieke ACL entries, ook wel named groups genoemd
- Mask : dat beperkt de permissies gegeven aan ACL entries, het masker wordt gedetailleerd in de volgende sectie;
- Andere permissies : deze permissies zijn altijd actief en dit is de laatste categorie die wordt verkend wanneer er geen andere permissies overeenkomen met de huidige gebruiker of groep.
Werken met het masker van de toegangscontrolelijsten
Zoals u waarschijnlijk in de laatste schermafdruk hebt gezien, staat er een masker tussen de genoemde groepen en de andere permissies.
Maar waar wordt dit masker voor gebruikt?
Het ACL-masker verschilt van het masker voor het aanmaken van bestanden (umask) en wordt gebruikt om bestaande ACL-vermeldingen voor een bestand of map te beperken.
Het ACL-masker wordt gebruikt als de maximale set ACL-machtigingen, ongeacht bestaande machtigingen die het ACL-masker overschrijden.
Zoals altijd zegt een diagram meer dan honderd woorden.
Het ACL masker wordt iedere keer dat u een setfacl commando uitvoert bijgewerkt, tenzij u aangeeft dat u het masker niet wilt bijwerken met de -n vlag.
Om te voorkomen dat het masker wordt bijgewerkt, voert u setfacl met het volgende commando uit
$ setfacl -n -m u:antoine:rwx <file, directory>
Zoals u in dit voorbeeld kunt zien, heb ik de gebruiker “antoine” ingesteld op volledige rechten op het bestand.
Het masker is ingesteld om de rechten te beperken tot lees- en schrijfrechten.
Dientengevolge zijn de “effectieve rechten” die op dit bestand zijn ingesteld voor deze gebruiker lees- en schrijfrechten, de rechten voor uitvoeren zijn niet toegekend.
Opmerking: als uw maximale set rechten afwijkt van de maskeringang, krijgt u een effectieve regel te zien die de “echte” set van gebruikte ACL-ingangen weergeeft.
Toegangscontrolelijsten standaard maken op directories
Zoals reeds vermeld in dit artikel, is het mogelijk om ACL-items op directories te maken en deze werken op dezelfde manier als toegangscontrolelijsten voor bestanden.
Echter, er is een klein verschil als het gaat om directories: je hebt de optie om standaard toegangscontrole lijsten te maken.
Access control lists defaults worden gebruikt om ACL regels te maken op een directory die zullen worden overgeërfd door objecten in deze directory zoals bestanden of subdirectories.
Bij het maken van standaard ACL regels :
- Bestanden die in deze directory zijn gemaakt, erven de ACL-items die in de bovenliggende directory zijn gespecificeerd
- Subdirectories die in deze directory zijn gemaakt, erven zowel de ACL-items als de standaard ACL-items van de bovenliggende directory.
Om standaard ACL-items te maken, specificeert u de -d optie wanneer u ACL instelt met het setfacl commando.
$ setfacl -d -m {u, g}:<name>: <directory>
Om bijvoorbeeld leesrechten toe te wijzen aan alle bestanden die in een directory zijn gemaakt, voert u het volgende commando uit
$ setfacl -d -m u::r directory
Wanneer nu een bestand in deze acl-directory wordt gemaakt, kunt u zien dat standaard ACL-ingangen op het bestand worden toegepast.
Ook als een directory in de acl-directory wordt gemaakt, erft deze standaard ACL-ingangen die in de bovenliggende directory zijn gespecificeerd.
Merk op dat het wordt aanbevolen om standaard rechten op te geven voor alle drie de categorieën (gebruiker, groep en overig).
In feite, het specificeren van een van de drie items zal de overige twee aanmaken met permissies gerelateerd aan het bestandsaanmaakmasker.
Verwijderen van standaard toegangscontrolelijsten op directories
Om standaard bestaande toegangscontrolelijsten op directories te verwijderen, gebruik de -k vlag met het setfacl commando.
$ setfacl -k <directory>
Gegeven aan het voorbeeld dat we eerder hebben gegeven, ziet u hier hoe u standaardregels kunt verwijderen
$ setfacl -k acl-directory
Merk op dat het verwijderen van ACL-regels uit de bovenliggende map geen ACL-regels verwijdert in bestanden of mappen die in de bovenliggende map staan.
Om standaard ACL regels in een directory en alle subdirectories te verwijderen, moet u een recursieve optie (-R)
$ setfacl -kR <directory>
Conclusie
In deze tutorial heeft u geleerd over toegangscontrole lijsten onder Linux, de getfacl en de setfacl commando.
U heeft meer geleerd over de access control lists mask en hoe standaard ACL gebruikt worden om ACL regels te maken voor bestanden en submappen in de hoofddirectory.
Als u nieuwsgierig bent geworden naar Linux systeembeheer, hebben we nog veel meer tutorials over dit onderwerp, lees ze zeker!