Toegangsbeheerlijsten (ook bekend als ACL’s) zijn een functie van de Linux-kernel die het mogelijk maakt om fijnere toegangsrechten voor bestanden en mappen te definiëren dan die gespecificeerd zijn door reguliere ugo/rwx-rechten.
Bijvoorbeeld, de standaard ugo/rwx-rechten staan niet toe om verschillende rechten in te stellen voor verschillende individuele gebruikers of groepen. Met ACL’s is dit relatief eenvoudig te doen, zoals we zullen zien in dit artikel.
Het controleren van bestandssysteemcompatibiliteit met ACL’s
Om ervoor te zorgen dat uw bestandssystemen momenteel ACL’s ondersteunen, moet u controleren of ze zijn gemount met de acl-optie. Om dat te doen, zullen we tune2fs gebruiken voor ext2/3/4-bestandssystemen zoals hieronder aangegeven. Vervang /dev/sda1 door het apparaat of bestandssysteem dat u wilt controleren:
# tune2fs -l /dev/sda1 | grep "Default mount options:"
Opmerking: Met XFS worden toegangsbeheerlijsten standaard ondersteund.
In het volgende ext4-bestandssysteem kunnen we zien dat ACL’s zijn ingeschakeld voor /dev/xvda2:
# tune2fs -l /dev/xvda2 | grep "Default mount options:"

Als het bovenstaande commando niet aangeeft dat het bestandssysteem is gemount met ondersteuning voor ACL’s, komt dat hoogstwaarschijnlijk door de noacl-optie in /etc/fstab.
In dat geval verwijdert u deze, unmount het bestandssysteem en mount het opnieuw, of herstart eenvoudig uw systeem nadat u de wijzigingen in /etc/fstab hebt opgeslagen.
Introductie van ACL’s in Linux
Om te illustreren hoe ACL’s werken, zullen we een groep genaamd ontwikkelaars gebruiken en gebruikers walterwhite en saulgoodman toevoegen (ja, ik ben een Breaking Bad fan!) eraan toe.:
# groupadd developers # useradd walterwhite # useradd saulgoodman # usermod -a -G developers walterwhite # usermod -a -G developers saulgoodman
Voordat we verder gaan, laten we controleren of beide gebruikers zijn toegevoegd aan de ontwikkelaarsgroep:
# id walterwhite # id saulgoodman

Laten we nu een map genaamd test maken in /mnt, en een bestand genaamd acl.txt daarbinnen (/mnt/test/acl.txt).
Vervolgens zullen we de groepseigenaar instellen op ontwikkelaars en de standaard ugo/rwx machtigingen recursief wijzigen naar 770 (waardoor lees-, schrijf- en uitvoermachtigingen worden verleend aan zowel de eigenaar als de groepseigenaar van het bestand):
# mkdir /mnt/test # touch /mnt/test/acl.txt # chgrp -R developers /mnt/test # chmod -R 770 /mnt/test
Zoals verwacht, kun je schrijven naar /mnt/test/acl.txt als walterwhite of saulgoodman:
# su - walterwhite # echo "My name is Walter White" > /mnt/test/acl.txt # exit # su - saulgoodman # echo "My name is Saul Goodman" >> /mnt/test/acl.txt # exit

Tot zover goed. Echter, we zullen binnenkort een probleem zien wanneer we schrijftoegang moeten verlenen aan /mnt/test/acl.txt voor een andere gebruiker die niet in de ontwikkelaarsgroep zit.
Standaard ugo/rwx machtigingen zouden vereisen dat de nieuwe gebruiker aan de ontwikkelaarsgroep wordt toegevoegd, maar dat zou hem/haar dezelfde machtigingen geven over alle objecten die eigendom zijn van de groep. Dat is precies waar ACL’s van pas komen.
Het instellen van ACL’s in Linux
Er zijn twee soorten ACL’s: toegangs-ACL’s (die worden toegepast op een bestand of map), en standaard (optionele) ACL’s, die alleen kunnen worden toegepast op een map.
Als er bestanden in een map staan waar een standaard-ACL is ingesteld en ze geen eigen ACL hebben, erven ze de standaard-ACL van hun oudermap.
Laten we gebruiker gacanepa lees- en schrijfrechten geven voor /mnt/test/acl.txt. Voordat we dat doen, bekijken we eerst de huidige ACL-instellingen in die map met:
# getfacl /mnt/test/acl.txt
Vervolgens wijzigen we de ACL’s op het bestand, gebruik u:
gevolgd door de gebruikersnaam en :rw
om lees- / schrijfrechten aan te geven:
# setfacl -m u:gacanepa:rw /mnt/test/acl.txt
En voer getfacl nogmaals uit op het bestand ter vergelijking. De volgende afbeelding toont het “Voor” en “Na”:
# getfacl /mnt/test/acl.txt

Vervolgens moeten we anderen uitvoeringsrechten geven voor de map /mnt/test:
# chmod +x /mnt/test
Houd er rekening mee dat een gewone gebruiker uitvoeringsrechten op die map nodig heeft om de inhoud van de map te openen.
Gebruiker gacanepa zou nu moeten kunnen schrijven naar het bestand. Schakel over naar dat gebruikersaccount en voer de volgende opdracht uit om dit te bevestigen:
# echo "My name is Gabriel Cánepa" >> /mnt/test/acl.txt
Om een standaard-ACL in te stellen voor een map (die de inhoud zal erven tenzij anders wordt overschreven), voeg d:
toe vóór de regel en specificeer een map in plaats van een bestandsnaam:
# setfacl -m d:o:r /mnt/test # getfacl /mnt/test/
De bovenstaande ACL staat gebruikers die niet in de eigenaarsgroep toe om toegang te hebben tot de toekomstige inhoud van de /mnt/test map. Let op het verschil in de uitvoer van getfacl /mnt/test voor en na de wijziging:

Om een specifieke ACL te verwijderen, vervang -m
in de bovenstaande commando’s door -x
. Bijvoorbeeld,
# setfacl -x d:o /mnt/test
Als alternatief kunt u ook de -b
optie gebruiken om ALLE ACL’s in één keer te verwijderen:
# setfacl -b /mnt/test
Voor meer informatie en voorbeelden over het gebruik van ACL’s, zie hoofdstuk 10, sectie 2, van de openSUSE Security Guide (ook beschikbaar voor gratis download in PDF-formaat).
Stel Linux Schijfquota’s in voor Gebruikers en Bestandssystemen
Opslagruimte is een andere bron die zorgvuldig moet worden gebruikt en gecontroleerd. Om dit te doen, kunnen quota’s worden ingesteld op basis van een bestandssysteem, zowel voor individuele gebruikers als voor groepen.
Op deze manier wordt een limiet gesteld aan het schijfgebruik dat is toegestaan voor een bepaalde gebruiker of een specifieke groep, en u kunt er zeker van zijn dat uw schijven niet vollopen door een onzorgvuldige (of kwaadwillende) gebruiker.
Het eerste wat u moet doen om quota’s in te schakelen op een bestandssysteem is om het te mounten met de usrquota of grpquota (voor respectievelijk gebruikers- en groepsquota) opties in /etc/fstab.
Bijvoorbeeld, laten we gebruikersgebaseerde quota’s inschakelen op /dev/vg00/vol_backups en groepsgebaseerde quota’s op /dev/vg00/vol_projects.
Merk op dat de UUID wordt gebruikt om elk bestandssysteem te identificeren.
UUID=f6d1eba2-9aed-40ea-99ac-75f4be05c05a /home/projects ext4 defaults,grpquota 0 0 UUID=e1929239-5087-44b1-9396-53e09db6eb9e /home/backups ext4 defaults,usrquota 0 0
Unmount en remount beide bestandssystemen:
# umount /home/projects # umount /home/backups # mount -o remount /home/projects # mount -o remount /home/backups
Controleer vervolgens of de usrquota en grpquota opties aanwezig zijn in de uitvoer van mount (zie hieronder gemarkeerd):
# mount | grep vg00

Voer tot slot de volgende commando’s uit om quota’s te initialiseren en in te schakelen:
# quotacheck -avugc # quotaon -vu /home/backups # quotaon -vg /home/projects
Dat gezegd hebbende, laten we nu quota’s toewijzen aan de gebruikersnaam en groep die we eerder hebben genoemd. U kunt later quota’s uitschakelen met quotaoff.
Instellen van Linux Schijfquota’s
Laten we beginnen met het instellen van een ACL op /home/backups voor gebruiker gacanepa, die hem lees-, schrijf- en uitvoeringsrechten zal geven op die map:
# setfacl -m u:gacanepa:rwx /home/backups/
Vervolgens met,
# edquota -u gacanepa
We zullen de zachte limiet=900 en de harde limiet=1000 blokken instellen (1024 bytes/blok * 1000 blokken = 1024000 bytes = 1 MB) aan schijfruimtegebruik.
We kunnen ook een limiet van 20 en 25 instellen als zachte en harde limieten voor het aantal bestanden dat deze gebruiker kan maken.
Het bovenstaande commando zal de teksteditor ($EDITOR) starten met een tijdelijk bestand waar we de eerder genoemde limieten kunnen instellen:

Deze instellingen zullen een waarschuwing tonen aan gebruiker gacanepa wanneer hij de 900-blok of 20-inode limieten heeft bereikt voor een standaard gratieperiode van 7 dagen.
Als de over-quota situatie tegen die tijd niet is opgelost (bijvoorbeeld door bestanden te verwijderen), zal de zachte limiet de harde limiet worden en zal deze gebruiker worden verhinderd meer opslagruimte te gebruiken of meer bestanden te maken.
Om te testen, laten we gebruiker gacanepa proberen een leeg 2 MB bestand met de naam test1 te maken in /home/backups:
# dd if=/dev/zero of=/home/backups/test1 bs=2M count=1 # ls -lh /home/backups/test1

Zoals je kunt zien, mislukt de schrijfoperatie van het bestand vanwege overschrijding van de schijfquota. Aangezien alleen de eerste 1000 KB naar de schijf worden geschreven, zal het resultaat in dit geval waarschijnlijk een beschadigd bestand zijn.
Vergelijkbaar kun je een ACL maken voor de ontwikkelaarsgroepen om leden van die groep rwx-toegang te geven tot /home/projects:
# setfacl -m g:developers:rwx /home/projects/
En stel de quotumlimieten in met:
# edquota -g developers
Net zoals we eerder hebben gedaan met gebruiker gacanepa.
De genadetijd kan worden gespecificeerd voor elk aantal seconden, minuten, uren, dagen, weken of maanden door uit te voeren.
# edquota -t
en de waarden bijwerken onder Blokkeringstijd en Inode-genadetijd.
In tegenstelling tot blok- of inode-gebruik (die worden ingesteld op gebruikers- of groepsbasis), wordt de genadetijd systeembreed ingesteld.
Om quota’s te rapporteren, kun je quota -u [gebruiker]
of quota -g [groep]
gebruiken voor een snelle lijst of repquota -v [/pad/naar/bestandssysteem]
voor een meer gedetailleerd (uitgebreid) en mooi opgemaakt rapport.
Natuurlijk wil je [gebruiker]
, [groep]
en [/pad/naar/bestandssysteem]</code vervangen door specifieke gebruikers- / groepsnamen en bestandssysteem dat je wilt controleren.
Samenvatting
In dit artikel hebben we uitgelegd hoe je Toegangsbeheerlijsten en schijfquota’s voor gebruikers en groepen instelt. Door beide te gebruiken, kun je machtigingen en schijfgebruik effectiever beheren.
Als je meer wilt weten over quota’s, kun je verwijzen naar de Quota Mini-HowTo in The Linux Documentation Project.
Natuurlijk kun je ook op ons rekenen om vragen te beantwoorden. Stuur ze gewoon in via het opmerkingenformulier hieronder en we zullen ze graag bekijken.
Source:
https://www.tecmint.com/set-access-control-lists-acls-and-disk-quotas-for-users-groups/