Sådan indstilles adgangskontrollister (ACL'er) og diskkvoter for brugere og grupper


Adgangskontrollister (også kendt som ACL'er) er en funktion i Linux-kernen, der gør det muligt at definere mere detaljerede adgangsrettigheder til filer og kataloger end dem, der er angivet ved regelmæssige ugo/rwx-tilladelser.

For eksempel tillader standard ugo/rwx-tilladelser ikke at indstille forskellige tilladelser for forskellige individuelle brugere eller grupper. Med ACL'er er dette relativt let at gøre, som vi vil se i denne artikel.

Kontrol af filsystemkompatibilitet med ACL'er

For at sikre, at dine filsystemer i øjeblikket understøtter ACL'er, skal du kontrollere, at de er monteret ved hjælp af acl-indstillingen. For at gøre det bruger vi tune2fs til ext2/3/4 filsystemer som angivet nedenfor. Udskift/dev/sda1 med den enhed eller det filsystem, du vil kontrollere:

# tune2fs -l /dev/sda1 | grep "Default mount options:"

Bemærk: Med XFS understøttes adgangskontrolister ud af boksen.

I det følgende ext4-filsystem kan vi se, at ACL'er er blevet aktiveret for/dev/xvda2:

# tune2fs -l /dev/xvda2 | grep "Default mount options:"

Hvis ovenstående kommando ikke angiver, at filsystemet er monteret med understøttelse af ACL'er, skyldes det sandsynligvis noacl-indstillingen i/etc/fstab.

Fjern i så fald det, afmonter filsystemet, og monter det derefter igen, eller genstart blot dit system, når du har gemt ændringerne i/etc/fstab.

Introduktion til ACL'er i Linux

For at illustrere, hvordan ACL'er fungerer, bruger vi en gruppe, der hedder udviklere, og tilføjer brugere walterwhite og saulgoodman (ja, jeg er en Breaking Bad-fan!) Til den .:

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

Før vi fortsætter, skal vi kontrollere, at begge brugere er føjet til udviklergruppen:

# id walterwhite
# id saulgoodman

Lad os nu oprette en mappe kaldet test in/mnt og en fil med navnet acl.txt inde (/mnt/test/acl.txt).

Derefter indstiller vi gruppeejeren til udviklere og ændrer dens standard ugo/rwx-tilladelser rekursivt til 770 (hvilket giver læsning, skrivning og udførelse af tilladelser til både ejeren og gruppeejeren af filen):

# mkdir /mnt/test
# touch /mnt/test/acl.txt
# chgrp -R developers /mnt/test
# chmod -R 770 /mnt/test

Som forventet kan du skrive til /mnt/test/acl.txt som walterwhite eller 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

Så langt så godt. Vi vil dog snart se et problem, når vi har brug for at give skriveadgang til /mnt/test/acl.txt for en anden bruger, der ikke er i udviklergruppen.

Standard ugo/rwx-tilladelser vil kræve, at den nye bruger føjes til udviklergruppen, men det vil give ham/hende de samme tilladelser til alle de objekter, der ejes af gruppen. Det er netop her ACL'er er nyttige.

Indstilling af ACL'er i Linux

Der er to typer ACL'er: ACL'er er adgang (som anvendes på en fil eller mappe) og standard (valgfri) ACL'er, som kun kan anvendes på en mappe.

Hvis filer inde i et bibliotek, hvor en standard ACL er indstillet, ikke har deres egen ACL, arver de standard ACL i deres overordnede bibliotek.

Lad os give bruger gacanepa læse- og skriveadgang til /mnt/test/acl.txt. Før vi gør det, skal vi se på de aktuelle ACL-indstillinger i den mappe med:

# getfacl /mnt/test/acl.txt

Skift derefter ACL'erne på filen, brug u: efterfulgt af brugernavnet og : rw for at angive læse-/skrivetilladelser:

# setfacl -m u:gacanepa:rw /mnt/test/acl.txt

Og kør getfacl på filen igen for at sammenligne. Følgende billede viser "Før" og "Efter":

# getfacl /mnt/test/acl.txt

Dernæst bliver vi nødt til at give andre udføre tilladelser i/mnt/test-biblioteket:

# chmod +x /mnt/test

Husk, at for at få adgang til indholdet af en mappe, skal en almindelig bruger udføre tilladelser til den mappe.

Bruger gacanepa skal nu kunne skrive til filen. Skift til den brugerkonto og udfør følgende kommando for at bekræfte:

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

For at indstille en standard-ACL til en mappe (som dens indhold arver, medmindre andet overskrives), skal du tilføje d: før reglen og angive en mappe i stedet for et filnavn:

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

ACL ovenfor giver brugere, der ikke er i ejergruppen, mulighed for at have læseadgang til det fremtidige indhold i/mnt/test-biblioteket. Bemærk forskellen i output fra getfacl/mnt/test før og efter ændringen:

For at fjerne en bestemt ACL skal du erstatte -m i kommandoerne ovenfor med -x . For eksempel,

# setfacl -x d:o /mnt/test

Alternativt kan du også bruge indstillingen -b til at fjerne ALLE ACL'er i et trin:

# setfacl -b /mnt/test

For mere information og eksempler på brugen af ACL'er henvises til kapitel 10, afsnit 2, i openSUSE Security Guide (også tilgængelig til download uden omkostninger i PDF-format).

Indstil Linux Disk Quotas på brugere og filsystemer

Lagringsplads er en anden ressource, der skal bruges omhyggeligt og overvåges. For at gøre dette kan kvoter fastsættes på filsystembasis, enten for individuelle brugere eller for grupper.

Således er der lagt en grænse for den diskbrug, der er tilladt for en given bruger eller en bestemt gruppe, og du kan være sikker på, at dine diske ikke vil blive fyldt til kapacitet af en skødesløs (eller utilsigtet) bruger.

Den første ting, du skal gøre for at aktivere kvoter på et filsystem, er at montere den med usrquota eller grpquota (for henholdsvis bruger- og gruppekvoter) i/etc/fstab.

Lad os f.eks. Aktivere brugerbaserede kvoter på/dev/vg00/vol_backups og gruppebaserede kvoter på/dev/vg00/vol_projects.

Bemærk, at UUID bruges til at identificere hvert filsystem.

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

Afmonter og genmonter begge filsystemer:

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

Kontroller derefter, at usrquota- og grpquota-indstillingerne er til stede i output af mount (se fremhævet nedenfor):

# mount | grep vg00

Endelig kør følgende kommandoer for at initialisere og aktivere kvoter:

# quotacheck -avugc
# quotaon -vu /home/backups
# quotaon -vg /home/projects

Når det er sagt, lad os nu tildele kvoter til brugernavnet og gruppen, vi nævnte tidligere. Du kan senere deaktivere kvoter med quotaoff.

Indstilling af Linux-diskkvoter

Lad os begynde med at indstille en ACL til/hjem/sikkerhedskopier til bruger gacanepa, som giver ham læsning, skrivning og udførelse af tilladelser til den pågældende mappe:

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

Derefter med,

# edquota -u gacanepa

Vi laver den bløde grænse = 900 og den hårde grænse = 1000 blokke (1024 byte/blok * 1000 blokke = 1024000 byte = 1 MB) af diskpladsforbrug.

Vi kan også placere en grænse på 20 og 25 som bløde og hårde begrænsninger på antallet af filer, som denne bruger kan oprette.

Ovenstående kommando vil starte teksteditoren ($ EDITOR) med en midlertidig fil, hvor vi kan indstille de tidligere nævnte grænser:

Disse indstillinger vil medføre, at der vises en advarsel til brugeren gacanepa, når han enten har nået 900-blok- eller 20-inode-grænserne i en standardfrist på 7 dage.

Hvis situationen med overkvote ikke er blevet fjernet inden da (f.eks. Ved at fjerne filer), bliver den bløde grænse den hårde grænse, og denne bruger forhindres i at bruge mere lagerplads eller oprette flere filer.

For at teste, lad os have bruger gacanepa til at prøve at oprette en tom 2 MB fil med navnet test1 inde/hjem/sikkerhedskopier:

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

Som du kan se, mislykkes skrivehandlingsfilen på grund af, at diskkvoten er overskredet. Da kun de første 1000 KB er skrevet til disken, vil resultatet i dette tilfælde sandsynligvis være en korrupt fil.

På samme måde kan du oprette en ACL til udviklergrupperne for at give medlemmer af den gruppe rwx adgang til/hjem/projekter:

# setfacl -m g:developers:rwx /home/projects/

Og sæt kvotegrænserne med:

# edquota -g developers

Ligesom vi gjorde med brugeren gacanepa tidligere.

Afdragsperioden kan specificeres for et vilkårligt antal sekunder, minutter, timer, dage, uger eller måneder ved at udføre.

# edquota -t

og opdatering af værdierne under Blokeret periode og Inode-periode.

I modsætning til blok- eller inode-brug (som er indstillet på en bruger- eller gruppebasis) indstilles afdragsperioden hele systemet.

For at rapportere kvoter kan du bruge kvote -u [bruger] eller kvote -g [gruppe] til en hurtigliste eller repquota -v [/ path/to/filsystem] for en mere detaljeret (detaljeret) og pænt formateret rapport.

Selvfølgelig vil du gerne erstatte [bruger] , [group] og [/ path/to/filesystem] med specifik bruger/gruppenavne og filsystem, du vil kontrollere.

Resumé

I denne artikel har vi forklaret, hvordan man indstiller adgangskontrolister og diskkvoter for brugere og grupper. Ved hjælp af begge vil du være i stand til at administrere tilladelser og diskbrug mere effektivt.

Hvis du vil lære mere om kvoter, kan du se Quota Mini-HowTo i Linux Documentation Project.

Det er overflødigt at sige, at du også kan stole på, at vi besvarer spørgsmål. Indsend dem bare ved hjælp af kommentarformularen herunder, så ser vi mere end gerne.