Zoeken op website

Toegangscontrolelijsten (ACL's) en schijfquota instellen voor gebruikers en groepen


Toegangscontrolelijsten (ook bekend als ACL's) zijn een functie van de Linux-kernel die het mogelijk maakt om meer fijnmazige toegangsrechten voor bestanden en mappen te definiëren dan die gespecificeerd door reguliere ugo/rwx-machtigingen.

Met de standaard ugo/rwx-rechten is het bijvoorbeeld niet mogelijk om verschillende rechten in te stellen voor verschillende individuele gebruikers of groepen. Met ACL's is dit relatief eenvoudig te doen, zoals we in dit artikel zullen zien.

Compatibiliteit van bestandssysteem met ACL's controleren

Om er zeker van te zijn dat uw bestandssystemen momenteel ACL's ondersteunen, moet u controleren of ze zijn aangekoppeld met de optie acl. 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 toegangscontrolelijsten 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 aangekoppeld met ondersteuning voor ACL's, komt dit hoogstwaarschijnlijk doordat de optie noacl aanwezig is in /etc/fstab.

In dat geval verwijdert u het, ontkoppelt u het bestandssysteem en koppelt u het opnieuw, of start u eenvoudigweg uw systeem opnieuw op nadat u de wijzigingen heeft opgeslagen in /etc/fstab.

Introductie van ACL's in Linux

Om te illustreren hoe ACL's werken, zullen we een groep gebruiken met de naam ontwikkelaars en gebruikers walterwhite en saulgoodman toevoegen (ja, ik ben een fan van Breaking Bad! ) eraan.:

groupadd developers
useradd walterwhite
useradd saulgoodman
usermod -a -G developers walterwhite
usermod -a -G developers saulgoodman

Voordat we verder gaan, moeten we verifiëren dat beide gebruikers zijn toegevoegd aan de ontwikkelaarsgroep:

id walterwhite
id saulgoodman

Laten we nu een map maken met de naam test in /mnt, en een bestand met de naam acl.txt daarbinnen (/mnt/test/acl .txt).

Vervolgens stellen we de groepseigenaar in op ontwikkelaars en veranderen de standaardrechten ugo/rwx recursief naar 770 (waardoor lees-, schrijf- en uitvoerrechten worden toegekend machtigingen 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 naar /mnt/test/acl.txt schrijven 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 nu toe gaat het goed. We zullen echter snel een probleem tegenkomen wanneer we schrijftoegang tot /mnt/test/acl.txt moeten verlenen aan een andere gebruiker die niet in de ontwikkelaarsgroep zit.

Standaard ugo/rwx-rechten vereisen dat de nieuwe gebruiker wordt toegevoegd aan de ontwikkelaarsgroep, maar dat zou hem/haar dezelfde rechten geven voor alle objecten die eigendom zijn van de groep. Dat is precies waar ACL's van pas komen.

ACL's instellen in Linux

Er zijn twee soorten ACL's: toegangs-ACL's zijn (die worden toegepast op een bestand of map), en standaard (optionele) ACL's, die alleen kunnen worden toegepast op een map .

Als bestanden in een map waarin een standaard-ACL is ingesteld, geen eigen ACL hebben, nemen ze de standaard-ACL van hun bovenliggende map over.

Laten we gebruiker gacanepa lees- en schrijftoegang geven tot /mnt/test/acl.txt. Laten we, voordat we dat doen, eens kijken naar de huidige ACL-instellingen in die map met:

getfacl /mnt/test/acl.txt

Wijzig vervolgens de ACL's van 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 opnieuw uit op het bestand om te vergelijken. De volgende afbeelding toont de “Voor” en “Na”:

getfacl /mnt/test/acl.txt

Vervolgens moeten we anderen toestemming geven om de map /mnt/test uit te voeren:


chmod +x /mnt/test

Houd er rekening mee dat een gewone gebruiker, om toegang te krijgen tot de inhoud van een map, uitvoeringsrechten voor die map nodig heeft.

Gebruiker gacanepa zou nu naar het bestand moeten kunnen schrijven. Schakel over naar dat gebruikersaccount en voer de volgende opdracht uit om te bevestigen:

echo "My name is Gabriel Cánepa" >> /mnt/test/acl.txt

Om een standaard ACL in te stellen voor een map (waarvan de inhoud ervan zal overnemen, tenzij anders overschreven), voegt u d: toe vóór de regel en geeft u een map op in plaats van een bestandsnaam:

setfacl -m d:o:r /mnt/test
getfacl /mnt/test/

Met de bovenstaande ACL kunnen gebruikers die niet tot de eigenaarsgroep behoren leestoegang krijgen tot de toekomstige inhoud van de map /mnt/test. Let op het verschil in de uitvoer van getfacl /mnt/test voor en na de wijziging:

Om een specifieke ACL te verwijderen, vervangt u -m in de bovenstaande opdrachten door -x. Bijvoorbeeld,

setfacl -x d:o /mnt/test

Als alternatief kunt u ook de optie -b gebruiken om ALLE ACL's in één stap te verwijderen:

setfacl -b /mnt/test

Voor meer informatie en voorbeelden over het gebruik van ACL's verwijzen wij u naar hoofdstuk 10, sectie 2, van de openSUSE Beveiligingshandleiding (ook gratis beschikbaar om te downloaden in PDF-formaat ).

Stel Linux-schijfquota in voor gebruikers en bestandssystemen

Opslagruimte is een andere hulpbron die zorgvuldig moet worden gebruikt en gecontroleerd. Om dat te doen, kunnen quota's worden ingesteld op basis van het bestandssysteem, voor individuele gebruikers of voor groepen.

Er wordt dus 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 tot de volle capaciteit worden gevuld door een onzorgvuldige (of slechtbedoelende) gebruiker.

Het eerste dat u moet doen om quota's op een bestandssysteem in te schakelen, is het aankoppelen met de opties usrquota of grpquota (respectievelijk voor gebruikers- en groepsquota) in /etc/fstab.

Laten we bijvoorbeeld op gebruikers gebaseerde quota's inschakelen voor /dev/vg00/vol_backups en op groepen gebaseerde quota's voor /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

Beide bestandssystemen ontkoppelen en opnieuw koppelen:

umount /home/projects
umount /home/backups
mount -o remount /home/projects
mount -o remount /home/backups 

Controleer vervolgens of de opties usrquota en grpquota aanwezig zijn in de uitvoer van mount (zie hieronder gemarkeerd):

mount | grep vg00

Voer ten slotte de volgende opdrachten 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 noemden. Je kunt quota later uitschakelen met quotaoff.

Linux-schijfquota instellen

Laten we beginnen met het instellen van een ACL op /home/backups voor gebruiker gacanepa, waardoor hij lees-, schrijf- en uitvoerrechten krijgt voor die map:

setfacl -m u:gacanepa:rwx /home/backups/

Dan met,

edquota -u gacanepa

We maken de zachte limit=900 en de harde limit=1000 blokken (1024 bytes/blok * 1000 blokken=1024000 bytes=1 MB ) van schijfruimtegebruik.

We kunnen ook een limiet van 20 en 25 instellen als zachte en harde limiet voor het aantal bestanden dat deze gebruiker kan maken.

Met het bovenstaande commando wordt de teksteditor ($EDITOR) gestart met een tijdelijk bestand waarin we de eerder genoemde limieten kunnen instellen:

Deze instellingen zorgen ervoor dat een waarschuwing wordt weergegeven aan de gebruiker gacanepa wanneer hij de limieten van 900 blokken of 20 inodes voor een standaardlimiet heeft bereikt bedenktijd van 7 dagen.

Als de situatie van quota-overschrijding tegen die tijd nog niet is geëlimineerd (bijvoorbeeld door bestanden te verwijderen), wordt de zachte limiet de harde limiet en wordt voorkomen dat deze gebruiker meer opslagruimte gebruikt of meer opslagruimte creëert bestanden.

Om dit te testen, laten we gebruiker gacanepa proberen een leeg bestand van 2 MB te maken met de naam test1 in /home/backups:

dd if=/dev/zero of=/home/backups/test1 bs=2M count=1
ls -lh /home/backups/test1

Zoals u kunt zien, mislukt het schrijfbewerkingsbestand omdat het schijfquotum is overschreden. Omdat alleen de eerste 1000 KB naar de schijf worden geschreven, zal het resultaat in dit geval hoogstwaarschijnlijk een beschadigd bestand zijn.

Op dezelfde manier kunt u 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 deden met gebruiker gacanepa.

De respijtperiode kan worden opgegeven voor een willekeurig aantal seconden, minuten, uren, dagen, weken of maanden door deze uit te voeren.

edquota -t

en het bijwerken van de waarden onder Respijtperiode blokkeren en Inode-respijtperiode.

In tegenstelling tot blok- of inode-gebruik (die op gebruikers- of groepsbasis wordt ingesteld), wordt de respijtperiode voor het hele systeem ingesteld.

Om quota's te rapporteren, kunt u quota -u [user] of quota -g [group] gebruiken voor een snelle lijst of repquota -v [/path/to /filesystem] voor een gedetailleerder (uitgebreid) en mooi opgemaakt rapport.

Natuurlijk wilt u [gebruiker], [groep] en [/pad/naar/bestandssysteem] vervangen door specifieke gebruiker/groepsnamen en bestandssysteem dat u wilt controleren.

Samenvatting

In dit artikel hebben we uitgelegd hoe u Toegangscontrolelijsten en schijfquota voor gebruikers en groepen instelt. Als u beide gebruikt, kunt u machtigingen en schijfgebruik effectiever beheren.

Als je meer wilt weten over quota's, kun je de Quota Mini-HowTo in The Linux Documentation Project raadplegen.

Uiteraard kunt u ook op ons rekenen voor het beantwoorden van vragen. Stuur ze gewoon in via het onderstaande opmerkingenformulier en we kijken er graag naar.