RHCSA-serien: Bruk av ACL-er (tilgangskontrolllister) og montering av Samba/NFS-andeler - del 7


I den siste artikkelen (RHCSA-serien del 6) begynte vi å forklare hvordan du setter opp og konfigurerer lokal systemlagring ved å bruke parted og ssm.

Vi diskuterte også hvordan du oppretter og monterer krypterte volumer med et passord under systemoppstart. I tillegg advarte vi deg om å unngå å utføre kritiske lagringsadministrasjonsoperasjoner på monterte filsystemer. Med det i tankene vil vi nå gjennomgå de mest brukte filsystemformatene i Red Hat Enterprise Linux 7 og deretter fortsette med å dekke emnene montering, bruk og avmontering, begge manuelt og automatisk nettverksfilsystemer (CIFS og NFS), sammen med implementering av tilgangskontrolllister for systemet ditt.

Forutsetninger

Før du fortsetter, sørg for at du har en Samba-server og en NFS-server tilgjengelig (merk at NFSv2 ikke lenger støttes i RHEL 7).

I løpet av denne veiledningen vil vi bruke en maskin med IP 192.168.0.10 med begge tjenester som kjører i den som server, og en RHEL 7-boks som klient med IP-adresse 192.168 .0.18. Senere i artikkelen vil vi fortelle deg hvilke pakker du trenger å installere på klienten.

Filsystemformater i RHEL 7

Fra og med RHEL 7, har XFS blitt introdusert som standard filsystem for alle arkitekturer på grunn av høy ytelse og skalerbarhet. Den støtter for øyeblikket en maksimal filsystemstørrelse på 500 TB i henhold til de siste testene utført av Red Hat og dets partnere for vanlig maskinvare.

XFS aktiverer også user_xattr (utvidede brukerattributter) og acl (POSIX tilgangskontrolllister) som standard monteringsalternativer, i motsetning til ext3 eller ext4 (ext2 anses som utdatert fra og med RHEL 7), noe som betyr at du ikke trenger å spesifisere disse alternativene eksplisitt verken på kommandolinjen eller i /etc/fstab når du monterer et XFS-filsystem (hvis du vil deaktiver slike alternativer i dette siste tilfellet, må du eksplisitt bruke no_acl og no_user_xattr).

Husk at de utvidede brukerattributtene kan tilordnes til filer og kataloger for lagring av vilkårlig tilleggsinformasjon som mimetype, tegnsett eller koding av en fil, mens tilgangstillatelsene for brukerattributter er definert av de vanlige filtillatelsesbitene.

Tilgangskontrolllister

Ettersom enhver systemadministrator, enten nybegynner eller ekspert, er godt kjent med vanlige tilgangstillatelser på filer og kataloger, som spesifiserer visse privilegier (lese, skrive og utføre ) for eieren, gruppen og «verden» (alle andre). Se imidlertid gjerne til del 3 av RHCSA-serien hvis du trenger å friske opp hukommelsen litt.

Men siden standard ugo/rwx-settet ikke tillater å konfigurere forskjellige tillatelser for forskjellige brukere, ble ACL-er introdusert for å definere mer detaljerte tilgangsrettigheter for filer og kataloger enn de som er spesifisert av vanlige tillatelser.

Faktisk er ACL-definerte tillatelser et supersett av tillatelsene spesifisert av filtillatelsesbitene. La oss se hvordan alt dette oversettes brukes i den virkelige verden.

1. Det er to typer ACL-er: tilgangs-ACL-er, som kan brukes på enten en bestemt fil eller en katalog), og >standard tilgangskontrollister, som bare kan brukes på en katalog. Hvis filene som finnes deri ikke har et ACL-sett, arver de standard ACL for overordnet katalog.

2. Til å begynne med kan tilgangskontrollister konfigureres per bruker, per gruppe eller per bruker som ikke er i eiergruppen til en fil.

3. ACL-er settes (og fjernes) ved hjelp av setfacl, med enten -m eller - xalternativer, henholdsvis.

La oss for eksempel opprette en gruppe som heter tecmint og legge til brukere johndoe og davenull til den:

groupadd tecmint
useradd johndoe
useradd davenull
usermod -a -G tecmint johndoe
usermod -a -G tecmint davenull

Og la oss bekrefte at begge brukerne tilhører tilleggsgruppen tecmint:

id johndoe
id davenull

La oss nå lage en katalog kalt lekeplass innenfor /mnt, og en fil med navnet testfile.txt inne. Vi vil sette gruppeeieren til tecmint og endre standard ugo/rwx-tillatelser til 770 (lese, skrive og utføre tillatelser gitt til begge eieren og gruppeeieren av filen):

mkdir /mnt/playground
touch /mnt/playground/testfile.txt
chmod 770 /mnt/playground/testfile.txt

Bytt deretter bruker til johndoe og davenull, i den rekkefølgen, og skriv til filen:

echo "My name is John Doe" > /mnt/playground/testfile.txt
echo "My name is Dave Null" >> /mnt/playground/testfile.txt

Så langt så bra. La oss nå få brukeren gacanepa til å skrive til filen – og skriveoperasjonen vil mislykkes, noe som var forventet.

Men hva om vi faktisk trenger at brukeren gacanepa (som ikke er medlem av gruppen tecmint) har skriverettigheter på /mnt/playground/testfile.txt?< Det første du kan tenke deg er å legge til den brukerkontoen i gruppen tecmint. Men det vil gi ham skriverettigheter på ALLE filer der skrivebiten er satt for gruppen, og det ønsker vi ikke. Vi vil bare at han skal kunne skrive til /mnt/playground/testfile.txt.

touch /mnt/playground/testfile.txt
chown :tecmint /mnt/playground/testfile.txt
chmod 777 /mnt/playground/testfile.txt
su johndoe
echo "My name is John Doe" > /mnt/playground/testfile.txt
su davenull
echo "My name is Dave Null" >> /mnt/playground/testfile.txt
su gacanepa
echo "My name is Gabriel Canepa" >> /mnt/playground/testfile.txt

La oss gi brukeren gacanepa lese- og skrivetilgang til /mnt/playground/testfile.txt.

Kjør som root,

setfacl -R -m u:gacanepa:rwx /mnt/playground

og du har lagt til en ACL som lar gacanepa skrive til testfilen. Bytt deretter til bruker gacanepa og prøv å skrive til filen igjen:

echo "My name is Gabriel Canepa" >> /mnt/playground/testfile.txt

For å se ACL-ene for en bestemt fil eller katalog, bruk getfacl:

getfacl /mnt/playground/testfile.txt

For å angi en standard ACL til en katalog (som innholdet vil arve med mindre det overskrives på annen måte), legg til d: før regelen og spesifiser en katalog i stedet for et filnavn:

setfacl -m d:o:r /mnt/playground

ACL ovenfor vil tillate brukere som ikke er i eiergruppen å ha lesetilgang til det fremtidige innholdet i /mnt/playground-katalogen. Legg merke til forskjellen i produksjonen av getfacl /mnt/playground før og etter endringen:

Kapittel 20 i den offisielle RHEL 7 Storage Administration Guide gir flere ACL-eksempler, og jeg anbefaler på det sterkeste at du tar en titt på den og har den tilgjengelig som referanse.