Zoeken op website

RHCSA-serie: ACL's (toegangscontrolelijsten) gebruiken en Samba-/NFS-shares koppelen - Deel 7


In het laatste artikel (RHCSA-serie deel 6) zijn we begonnen met uit te leggen hoe u lokale systeemopslag kunt instellen en configureren met behulp van parted en ssm.

We hebben ook besproken hoe u gecodeerde volumes met een wachtwoord kunt maken en koppelen tijdens het opstarten van het systeem. Daarnaast hebben we u gewaarschuwd om het uitvoeren van kritieke opslagbeheerbewerkingen op aangekoppelde bestandssystemen te vermijden. Met dat in gedachten zullen we nu de meest gebruikte bestandssysteemformaten in Red Hat Enterprise Linux 7 bekijken en vervolgens doorgaan met het behandelen van de onderwerpen van koppelen, gebruiken en ontkoppelen, beide handmatig en automatisch netwerkbestandssystemen (CIFS en NFS), samen met de implementatie van toegangscontrolelijsten voor uw systeem.

Vereisten

Voordat u verder gaat, moet u ervoor zorgen dat u een Samba-server en een NFS-server beschikbaar heeft (merk op dat NFSv2 niet langer wordt ondersteund in RHEL 7).

Tijdens deze handleiding gebruiken we een machine met IP 192.168.0.10 met beide services erop als server, en een RHEL 7 box als client met IP-adres 192.168 .0,18. Verderop in het artikel vertellen we je welke pakketten je op de client moet installeren.

Bestandssysteemformaten in RHEL 7

Vanaf RHEL 7 is XFS geïntroduceerd als het standaardbestandssysteem voor alle architecturen vanwege de hoge prestaties en schaalbaarheid. Het ondersteunt momenteel een maximale bestandssysteemgrootte van 500 TB volgens de laatste tests uitgevoerd door Red Hat en zijn partners voor reguliere hardware.

Bovendien schakelt XFS user_xattr (uitgebreide gebruikersattributen) en acl (POSIX-toegangscontrolelijsten) in als standaard aankoppelopties, in tegenstelling tot ext3 of ext4 (ext2 wordt als verouderd beschouwd vanaf RHEL 7), wat betekent dat u deze opties niet expliciet hoeft op te geven op de opdrachtregel of in /etc/fstab bij het aankoppelen van een XFS-bestandssysteem (als u dat wilt Als u dergelijke opties uitschakelt, moet u in dit laatste geval expliciet no_acl en no_user_xattr gebruiken).

Houd er rekening mee dat de uitgebreide gebruikersattributen kunnen worden toegewezen aan bestanden en mappen voor het opslaan van willekeurige aanvullende informatie, zoals het mime-type, de tekenset of de codering van een bestand, terwijl de toegangsrechten voor gebruikersattributen worden gedefinieerd door de reguliere bestandspermissiebits.

Toegangscontrolelijsten

Omdat elke systeembeheerder, zowel beginner als expert, goed op de hoogte is van reguliere toegangsrechten voor bestanden en mappen, die bepaalde rechten specificeren (lezen, schrijven en uitvoeren ) voor de eigenaar, de groep en “de wereld” (alle anderen). U kunt echter gerust deel 3 van de RHCSA-serie raadplegen als u uw geheugen een beetje wilt opfrissen.

Omdat de standaardset ugo/rwx echter niet toestaat om verschillende rechten voor verschillende gebruikers te configureren, zijn ACL's geïntroduceerd om meer gedetailleerde toegangsrechten voor bestanden en mappen te definiëren dan die gespecificeerd zijn door reguliere machtigingen.

In feite zijn ACL-gedefinieerde machtigingen een superset van de machtigingen die zijn gespecificeerd door de bestandsmachtigingsbits. Laten we eens kijken hoe dit alles zich vertaalt in de echte wereld.

1. Er zijn twee soorten ACL's: toegang tot ACL's, die kunnen worden toegepast op een specifiek bestand of een map), en >standaard ACL's, die alleen op een map kunnen worden toegepast. Als de bestanden daarin geen ACL hebben, nemen ze de standaard ACL van hun bovenliggende map over.

2. Om te beginnen kunnen ACL's worden geconfigureerd per gebruiker, per groep of per gebruiker die niet tot de eigenaar van een bestand behoort.

3. ACL's worden ingesteld (en verwijderd) met setfacl, met de -m of - x opties, respectievelijk.

Laten we bijvoorbeeld een groep maken met de naam tecmint en hieraan de gebruikers johndoe en davenull toevoegen:

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

En laten we verifiëren dat beide gebruikers tot de aanvullende groep tecmint behoren:

id johndoe
id davenull

Laten we nu een map maken met de naam speeltuin binnen /mnt, en een bestand met de naam testfile.txt daarbinnen. We zullen de groepseigenaar instellen op tecmint en de standaard ugo/rwx-rechten wijzigen in 770 (lees-, schrijf- en uitvoerrechten toegekend aan beide de eigenaar en de groepseigenaar van het bestand):

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

Schakel vervolgens over naar johndoe en davenull, in die volgorde, en schrijf naar het bestand:

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

Tot nu toe gaat het goed. Laten we nu gebruiker gacanepa naar het bestand laten schrijven – en de schrijfbewerking zal mislukken, wat te verwachten was.

Maar wat als we eigenlijk de gebruiker gacanepa (die geen lid is van de groep tecmint) nodig hebben om schrijfrechten te hebben op /mnt/playground/testfile.txt?< Het eerste dat in je opkomt is het toevoegen van dat gebruikersaccount aan de groep tecmint. Maar dat geeft hem schrijfrechten voor ALLE bestanden waarvoor de schrijfbit voor de groep is ingesteld, en dat willen we niet. We willen alleen dat hij kan schrijven naar /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

Laten we gebruiker gacanepa lees- en schrijftoegang geven tot /mnt/playground/testfile.txt.

Uitvoeren als root,

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

en je hebt met succes een ACL toegevoegd waarmee gacanepa naar het testbestand kan schrijven. Schakel vervolgens over naar gebruiker gacanepa en probeer opnieuw naar het bestand te schrijven:

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

Om de ACL's voor een specifiek bestand of map te bekijken, gebruik je getfacl:

getfacl /mnt/playground/testfile.txt

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

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

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

Hoofdstuk 20 in de officiële RHEL 7 Storage Administration Guide biedt meer ACL-voorbeelden, en ik raad u ten zeerste aan deze te bekijken en bij de hand te hebben als referentie.