Rechten in Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Hallo iedereen. Dit is een vertaling van een artikel uit het boek RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 en EX300.

Persoonlijk: Ik hoop dat dit artikel niet alleen nuttig zal zijn voor beginners, maar ook zal helpen bij het ordenen van kennis voor meer ervaren beheerders.

Laten we beginnen.

Rechten in Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Om toegang te krijgen tot bestanden in Linux, worden permissies gebruikt. Deze permissies worden toegewezen aan drie objecten: de eigenaar van het bestand, de groep van de eigenaar en een ander object (dat wil zeggen iedereen anders). In dit artikel leer je hoe je permissies toepast.

Het artikel begint met een overzicht van de basisconcepten, gevolgd door een bespreking van speciale permissies (Special permissions) en toegangslijsten (ACL). Aan het einde van dit artikel wordt behandeld hoe je de standaardtoegangsrechten via umask instelt, evenals het beheer van uitgebreide gebruikersattributen.

Beheer van bestandseigendom

Voordat we permissies bespreken, moet je weten wat de rol van de eigenaar van een bestand en map is. Bestands- en map-eigendom is cruciaal voor het werken met permissies. In deze sectie leer je eerst hoe je de eigenaar kunt zien. Vervolgens leer je hoe je de eigenaar van de groep en de gebruiker voor bestanden en mappen kunt wijzigen.

Het weergeven van de eigenaar van een bestand of map

In Linux heeft elk bestand en elke map twee eigenaren: de gebruiker en de groepsbeheerder.

Deze eigenaren worden vastgesteld bij het aanmaken van een bestand of map. De gebruiker die het bestand aanmaakt, wordt de eigenaar van dat bestand, en de primaire groep waartoe deze gebruiker behoort, wordt ook de eigenaar van dat bestand. Om te bepalen of je als gebruiker toegang hebt tot een bestand of map, controleert de shell het eigendom ervan.

Dit gebeurt in de volgende volgorde:

  1. De shell controleert of jij de eigenaar bent van het bestand waartoe je toegang wilt. Als jij die eigenaar bent, krijg je de permissies en stopt de shell met controleren.
  2. Als je niet de eigenaar bent van het bestand, controleert de shell of je lid bent van de groep die toestemming heeft voor dit bestand. Als je lid bent van die groep, krijg je toegang tot het bestand met de permissies die voor de groep zijn ingesteld, en stopt de shell met controleren.
  3. Als je geen gebruiker of eigenaar van de groep bent, krijg je de rechten van andere gebruikers (Other).

Om de huidige eigenaarstoewijzingen te bekijken, kunt u de opdracht gebruiken ls -l. Deze opdracht toont de gebruiker en de eigenaar van de groep. Hieronder kunt u de eigenaarinstellingen voor de mappen in de map /home zien.

[root@server1 home]# ls -l
total 8
drwx------. 3  bob            bob            74     Feb   6   10:13 bob
drwx------. 3  caroline       caroline       74     Feb   6   10:13 caroline
drwx------. 3  fozia          fozia          74     Feb   6   10:13 fozia
drwx------. 3  lara           lara           74     Feb   6   10:13 lara
drwx------. 5  lisa           lisa           4096   Feb   6   10:12 lisa
drwx------. 14 user           user           4096   Feb   5   10:35 user

Met de opdracht ls kunt u de eigenaar van de bestanden in deze map weergeven. Soms kan het nuttig zijn om een lijst van alle bestanden in het systeem te krijgen waarbij de opgegeven gebruiker of groep als eigenaar wordt weergegeven. Hiervoor kunt u find. Het argument find -user kan hiervoor worden gebruikt. Bijvoorbeeld, de volgende opdracht toont alle bestanden waarvan de eigenaar de gebruiker linda is:

find / -user linda

U kunt ook gebruiken find om bestanden te vinden waarvan een bepaalde groep de eigenaar is.

Bijvoorbeeld, de volgende opdracht zoekt naar alle bestanden die tot de groep gebruikers:

find / -group users

De eigenaar wijzigen

Om de juiste machtigingen toe te passen, is het eerste dat moet worden overwogen het eigendom. Hiervoor is er een opdracht chown. De syntaxis van deze opdracht is eenvoudig te begrijpen:

chown wie wat

Bijvoorbeeld, de volgende opdracht verandert de eigenaar van de map /home/account naar de gebruiker linda:

chown linda /home/account

Opdracht chown heeft verschillende opties, waarvan er ƩƩn bijzonder nuttig is: -R. U kunt al raden wat het doet, omdat deze optie ook beschikbaar is voor veel andere opdrachten. Dit stelt u in staat om recursief de eigenaar in te stellen, zodat u de eigenaar van de huidige map en alles wat daaronder staat kunt instellen. De volgende opdracht verandert de eigenaar voor de map /home en alles wat daaronder staat naar de gebruiker linda:

De eigenaarstoewijzingen zien er nu als volgt uit:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 account account 62 Sep 25 21:41 account
drwx------. 2 lisa    lisa    62 Sep 25 21:42 lisa

Voer uit:

[root@localhost ~]# chown -R lisa /home/account
[root@localhost ~]#

Nu is gebruiker lisa de eigenaar van de map account:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 lisa account 62 Sep 25 21:41 account
drwx------. 2 lisa lisa    62 Sep 25 21:42 lisa

De eigenaar van de groep wijzigen

Er zijn twee manieren om het groepsbezit te veranderen. U kunt dit doen met chown, maar er is een speciale opdracht met de naam chgrp, die deze taak uitvoert. Als je het commando wilt gebruiken chown, gebruik dan . of : voor de groepsnaam.

Het volgende commando verandert de eigenaar van de groep /home/account naar de groep account:

chown .account /home/account

Je kunt gebruiken chown om de eigenaar van de gebruiker en/of groep op verschillende manieren te wijzigen. Hier zijn enkele voorbeelden:

  • chown lisa myfile1 maakt gebruiker lisa de eigenaar van bestand myfile1.
  • chown lisa.sales myfile maakt gebruiker lisa de eigenaar van bestand myfile, en stelt ook groep sales als eigenaar van datzelfde bestand in.
  • chown lisa:sales myfile is hetzelfde als het vorige commando.
  • chown .sales myfile maakt groep sales de eigenaar van bestand myfile zonder de eigenaar van de gebruiker te wijzigen.
  • chown :sales myfile is hetzelfde als het vorige commando.

Je kunt het commando chgrp, om de eigenaar van de groep te wijzigen. Laten we het volgende voorbeeld bekijken, waar je met behulp van chgrp de eigenaar van de map account kunt instellen op groep sales:

chgrp .sales /home/account

Zoals in het geval van chown, kun je de optie gebruiken -R met chgrp, en ook recursief de eigenaar van de groep wijzigen.

Begrijpen van de standaard eigenaar

Je hebt misschien opgemerkt dat wanneer een gebruiker een bestand aanmaakt, de standaard eigendom wordt toegepast.
De gebruiker die het bestand aanmaakt, wordt automatisch de eigenaar van dat bestand, en de primaire groep van deze gebruiker wordt automatisch de eigenaar van dat bestand. Gewoonlijk is dit de groep die in het bestand /etc/passwd staat als de primaire groep van de gebruiker. Maar als de gebruiker lid is van meerdere groepen, kan hij de effectieve primaire groep wijzigen.

Om de huidige effectieve primaire groep te tonen, kan de gebruiker het commando gebruiken groepen:

[root@server1 ~]# groups lisa
lisa : lisa account sales

Als de huidige gebruiker linda de effectieve primaire groep wil wijzigen, zal hij het commando gebruiken newgrp, gevolgd door de naam van de groep die hij als nieuwe effectieve primaire groep wil instellen. Na het gebruik van het commando newgrp zal de primaire groep actief zijn totdat de gebruiker het commando exit of zich afmeldt.

Hieronder is weergegeven hoe gebruiker linda dit commando gebruikt, waarbij de primaire groep groep sales werd:

lisa@server1 ~]$ groups
lisa account sales
[lisa@server1 ~]$ newgrp sales
[lisa@server1 ~]$ groups
sales lisa account
[lisa@server1 ~]$ touch file1
[lisa@server1 ~]$ ls -l
total 0
-rw-r--r--. 1 lisa sales 0 Feb 6 10:06 file1

Na wijziging van de actieve primaire groep krijgen alle nieuwe bestanden die door de gebruiker worden aangemaakt deze groep als groepsbeheerder. Om terug te keren naar de oorspronkelijke instelling van de primaire groep, gebruikt u exit.

Om de opdracht newgrpte kunnen gebruiken, moet de gebruiker lid zijn van de groep die hij als primaire wil gebruiken. Daarnaast kan het groepswachtwoord worden gebruikt voor de groep met de opdracht gpasswd. Als de gebruiker de opdracht newgrpgebruikt, maar geen lid is van de doelgroep, vraagt de shell om het groepswachtwoord. Nadat u het juiste groepswachtwoord hebt ingevoerd, wordt de nieuwe effectieve primaire groep ingesteld.

Beheer van primaire rechten

Het Linux-rechtersysteem werd in de jaren '70 uitgevonden. Aangezien de computerbehoeften in die jaren beperkt waren, was het basissysteem voor rechten vrij beperkt. Dit systeem voor rechten gebruikt drie rechten die kunnen worden toegepast op bestanden en mappen. In dit gedeelte leert u hoe u deze rechten kunt gebruiken en wijzigen.

Begrip van lees-, schrijf- en uitvoeringsrechten

De drie belangrijkste rechten stellen u in staat om bestanden te lezen, te schrijven en uit te voeren. Het effect van deze rechten verschilt wanneer ze worden toegepast op bestanden of mappen. Toegepast op een bestand geeft het leesrecht u het recht om het bestand te openen om te lezen. Dit betekent dat u de inhoud kunt lezen, maar ook dat uw computer het bestand kan openen om er iets mee te doen.

Een programma-bestand dat toegang nodig heeft tot een bibliotheek, moet bijvoorbeeld leesrechten hebben voor deze bibliotheek. Dit betekent dat leesrechten de meest basale rechten zijn die u nodig heeft om met bestanden te werken.

Toegepast op een map stelt lezen u in staat om de inhoud van deze map weer te geven. U moet weten dat deze toestemming u niet toestaat om bestanden in de map te lezen. Het Linux-rechtersysteem kent geen overerving en de enige manier om een bestand te lezen is door leesrechten voor dat bestand te gebruiken.

Zoals je waarschijnlijk kunt raden, maakt het schrijfrechten, wanneer toegepast op een bestand, het mogelijk om in dat bestand te schrijven. Met andere woorden, het stelt je in staat om de inhoud van bestaande bestanden te wijzigen. Het staat echter niet toe om nieuwe bestanden te creƫren of te verwijderen of om de toegangsrechten tot het bestand te wijzigen. Hiervoor moet je schrijfrechten geven aan de map waarin je het bestand wilt maken. In mappen staat dit recht ook toe om nieuwe submappen te creƫren en te verwijderen.

Uitvoeringsrechten zijn wat je nodig hebt om een bestand uit te voeren. Dit recht wordt nooit standaard ingesteld, waardoor Linux vrijwel volledig ongevoelig wordt voor virussen. Alleen iemand met schrijfrechten op de map kan uitvoeringsrechten toepassen.

Hieronder wordt het gebruik van de basisrechten samengevat:

Rechten in Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Gebruik van chmod

Om de rechten te beheren, wordt de opdracht chmodgebruikt. Bij het gebruiken van chmod kun je de rechten voor de gebruiker (user), groep (group) en anderen (other) instellen. Je kunt deze opdracht in twee modi gebruiken: relatieve modus en absolute modus. In de absolute modus worden drie cijfers gebruikt om de basisrechten in te stellen.

Rechten in Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Bij het instellen van de rechten bereken je de benodigde waarde. Als je lezen, schrijven en uitvoeren voor de gebruiker wilt instellen, lezen en uitvoeren voor de groep, en lezen en uitvoeren voor anderen in bestand /somefile, dan gebruik je de volgende opdracht chmod:

chmod 755 /somefile

Wanneer je chmod op deze manier gebruikt, worden alle huidige rechten vervangen door de door jou ingestelde rechten.

Als je de rechten ten opzichte van de huidige rechten wilt veranderen, kun je chmod in relatieve modus gebruiken. Bij gebruik van chmod in relatieve modus werk je met drie indicatoren om aan te geven wat je wilt doen:

  1. Eerst geef je aan voor wie je de rechten wilt veranderen. Hiervoor kun je kiezen tussen gebruiker (u), groep (g) en anderen (o).
  2. Vervolgens gebruik je de operator om rechten toe te voegen of te verwijderen uit de huidige modus of om ze absoluut in te stellen.
  3. Ten slotte gebruik je , die de eerste regel van het verzoek, de headers en de gegevens scheidt., w en x, om aan te geven welke rechten je wilt instellen.

Bij het wijzigen van machtigingen in relatieve modus kunt u het deel 'aan wie' overslaan om een machtiging voor alle objecten toe te voegen of te verwijderen. Bijvoorbeeld, dit commando voegt uitvoeringsmachtiging toe voor alle gebruikers:

chmod +x somefile

Bij het werken in relatieve modus kunt u ook complexere commando's gebruiken. Bijvoorbeeld, dit commando voegt schrijfmachtiging toe aan de groep en verwijdert leestoegang voor anderen:

chmod g+w,o-r somefile

Bij het gebruik van chmod -R o+rx /data u stelt uitvoeringsmachtiging in voor alle mappen, evenals voor bestanden in de map /data. Om uitvoeringsmachtiging alleen voor mappen in te stellen en niet voor bestanden, gebruikt u chmod -R o+rX /data.

Hoofdletter X zorgt ervoor dat bestanden geen uitvoeringsmachtiging krijgen als het bestand al geen uitvoeringsmachtiging heeft voor sommige objecten. Dit maakt X een verstandiger manier om om te gaan met uitvoeringsmachtigingen; het voorkomt dat deze machtiging wordt ingesteld voor bestanden waar het niet nodig is.

Uitgebreide rechten

Naast de basis machtigingen waar u net over hebt gelezen, zijn er in Linux ook een set uitgebreide machtigingen. Dit zijn niet de standaardmachtigingen die u instelt, maar soms bieden ze een nuttige aanvulling. In dit gedeelte leert u wat ze zijn en hoe u ze kunt instellen.

Begrip van uitgebreide SUID-, GUID- en sticky bit-rechten

Er zijn drie geavanceerde machtigingen. De eerste is de Set User ID (SUID) machtiging. In sommige speciale gevallen kunt u deze machtiging toepassen op uitvoerbare bestanden. Standaard draait de gebruiker die een uitvoerbaar bestand start, dit bestand met zijn eigen machtigingen.

Voor gewone gebruikers betekent dit meestal dat het gebruik van het programma beperkt is. Maar in sommige gevallen heeft de gebruiker speciale machtigingen nodig, alleen om een bepaalde taak uit te voeren.

Neem bijvoorbeeld de situatie waarin een gebruiker zijn wachtwoord moet wijzigen. Hiervoor moet de gebruiker zijn nieuwe wachtwoord in het bestand /etc/shadow schrijven. Dit bestand is echter niet schrijfbaar voor gebruikers zonder roottoegang:

root@hnl ~]# ls -l /etc/shadow
----------. 1 root root 1184 Apr 30 16:54 /etc/shadow

De SUID-permissie biedt een oplossing voor dit probleem. In de utility /usr/bin/passwd is deze permissie standaard van toepassing. Dit betekent dat wanneer een wachtwoord wordt gewijzigd, de gebruiker tijdelijk root-rechten krijgt, zodat hij kan schrijven naar het bestand /etc/shadow. Je kunt de SUID-permissie zien op ls -l hoe str1 != str2 de positie waar je meestal verwacht te zien x voor gebruikerspermissies:

[root@hnl ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 32680 Jan 28 2010 /usr/bin/passwd

SUID-permissie kan nuttig lijken (en in sommige gevallen is dat ook zo), maar tegelijkertijd kan het potentieel gevaarlijk zijn. Bij verkeerd gebruik kan je per ongeluk root-toegang verlenen. Daarom raad ik aan het alleen met de grootste voorzichtigheid te gebruiken.

De meeste beheerders zullen het nooit hoeven te gebruiken; je ziet het alleen in sommige bestanden waar het besturingssysteem het standaard moet instellen.

De tweede speciale permissie is de groepsidentificatie (SGID). Deze permissie heeft twee effecten. Wanneer deze wordt toegepast op een uitvoerbaar bestand, geeft het de gebruiker die het bestand uitvoert de permissies van de eigenaar van de groep van dat bestand. Op deze manier kan SGID ongeveer hetzelfde doen als SUID. Echter, voor dit doel wordt SGID praktisch niet gebruikt.

Net als bij de SUID-permissie, wordt SGID standaard toegepast op bepaalde systeemfiles.

Wanneer deze op een map wordt toegepast, kan SGID nuttig zijn, omdat je het kunt gebruiken om de standaard groeps eigenaar in te stellen voor bestanden en submappen die in die map worden aangemaakt. Standaard, wanneer een gebruiker een bestand aanmaakt, wordt zijn effectieve primaire groep ingesteld als de groeps eigenaar voor dat bestand.

Dit is niet altijd erg nuttig, vooral omdat bij Red Hat/CentOS gebruikers hun primaire groep toegewezen krijgen aan de groep met dezelfde naam als de gebruiker, waarvan de gebruiker de enige deelnemer is. Daarom zullen bestanden die door de gebruiker worden aangemaakt, standaard groepsbestand zijn voor algemeen gebruik.

Stel je een situatie voor waarin de gebruikers linda en lori in de boekhouding werken en lid zijn van de groep accountStandaard zijn deze gebruikers leden van een privƩ-groep waarvan zij de enige leden zijn. Beide gebruikers zijn echter ook lid van de groep account, maar hebben ook de groep als secundaire groep.

De standaardsituatie is dat wanneer een van deze gebruikers een bestand aanmaakt, de primaire groep eigenaar wordt. Daarom kan linda standaard geen toegang krijgen tot de bestanden die door lori zijn aangemaakt, en omgekeerd. Maar als u een gedeelde groepsmap aanmaakt (bijvoorbeeld /groups/account) en ervoor zorgt dat de SGID-permissie op deze map wordt toegepast en dat de groep als eigenaar van deze map is ingesteld, dan krijgen alle bestanden die in deze map en al zijn submappen worden aangemaakt, ook de groep account als standaardgroepseigenaar.

Om deze reden is de SGID-permissie zeer nuttig om in gedeelde groepsmappen toe te passen.

De SGID-permissie wordt weergegeven in de uitvoer ls -l hoe str1 != str2 op de positie waar u normaal de uitvoeringspermissie van de groep vindt:

[root@hnl data]# ls -ld account
drwxr-sr-x. 2 root account 4096 Apr 30 21:28 account

De derde van de speciale permissies is de sticky bit. Deze permissie is nuttig voor het beschermen van bestanden tegen onbedoeld verwijderen in een omgeving waarin meerdere gebruikers schrijfrechten hebben in dezelfde map. Wanneer de sticky bit is toegepast, kan een gebruiker een bestand alleen verwijderen als hij de eigenaar is van het bestand of van de map waarin het bestand zich bevindt. Om deze reden wordt het standaard toegepast als permissie voor de map /tmp en kan het ook nuttig zijn voor gedeelde groepsmappen.

Zonder de sticky bit, als een gebruiker bestanden kan aanmaken in een map, kan hij ook bestanden uit die map verwijderen. In een openbare groepsomgeving kan dit vervelend zijn. Stel je voor dat gebruikers linda en lori beide schrijfrechten hebben in de map /data/account en deze rechten verkrijgen door hun lidmaatschap in de groep account. Daarom kan linda bestanden die door lori zijn aangemaakt verwijderen, en vice versa.

Wanneer je de sticky bit toepast, kan een gebruiker bestanden alleen verwijderen als aan een van de volgende voorwaarden is voldaan:

  • De gebruiker is de eigenaar van het bestand;
  • De gebruiker is de eigenaar van de map waarin het bestand zich bevindt.

Bij het gebruik van ls -l, je kunt de sticky bit zien als t op de plaats waar je normaal het uitvoeringsrecht voor anderen ziet:

[root@hnl data]# ls -ld account/
drwxr-sr-t. 2 root account 4096 Apr 30 21:28 account/

Toepassing van uitgebreide rechten

Om SUID, SGID en sticky bit toe te passen, kun je ook gebruiken chmod. SUID heeft een numerieke waarde van 4, SGID heeft een numerieke waarde van 2, en sticky bit heeft een numerieke waarde van 1.

Als je deze rechten wilt toepassen, moet je een viercijferig argument toevoegen aan chmod, waarvan het eerste cijfer betrekking heeft op speciale rechten. De volgende regel voegt bijvoorbeeld het SGID-recht toe aan de map en stelt rwx in voor de gebruiker en rx voor de groep en anderen:

chmod 2755 /somedir

Dit is behoorlijk onpraktisch als je de huidige toegangsrechten wilt bekijken voordat je verderwerkt met chmod in absolute modus. (Je loopt het risico de rechten te overschrijven als je dit niet doet.) Daarom raad ik aan om in relatieve modus te werken als je speciale rechten wilt toepassen:

  1. Voor SUID gebruik je chmod u+s.
  2. Voor SGID gebruik je chmod g+s.
  3. Voor sticky bit gebruik je chmod +t, gevolgd door de naam van het bestand of de map waarvoor je de rechten wilt instellen.

In de tabel is samengevat wat belangrijk is om te weten over het beheren van speciale rechten.

Rechten in Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Voorbeeld van werken met speciale rechten

In dit voorbeeld gebruik je speciale rechten zodat groepsleden gemakkelijker bestanden kunnen delen in de gedeelde groepsmap. Je kent de ID-bit van de groeps-ID toe en activeert ook de sticky bit, en je ziet dat er functies worden toegevoegd die samenwerking tussen groepsleden vergemakkelijken.

  1. Open een terminal waar je de gebruiker linda bent. Je kunt een gebruiker aanmaken met het commando useradd linda, stel een wachtwoord in passwd linda.
  2. Maak in de root een map /data en een submap /data/sales aan met het commando mkdir -p /data/sales. Voer cd /data/sales, uit om naar de sales-map te gaan. Voer touch linda1 en touch linda2, uit om twee lege bestanden te maken, waarvan de eigenaar linda is.
  3. Voer uit su - lisa om de huidige gebruiker te wisselen naar gebruiker lisa, die ook lid is van de groep sales.
  4. Voer uit cd /data/sales en voer vanuit deze map ls -l. Je ziet de twee bestanden die zijn aangemaakt door gebruiker linda en toebehoren aan de groep linda. Voer rm -f linda*. Dit verwijdert beide bestanden.
  5. Voer uit touch lisa1 en touch lisa2, om twee bestanden te maken die toebehoren aan gebruiker lisa.
  6. Voer uit su - om uw privileges naar root-niveau te verhogen.
  7. Voer uit chmod g+s,o+t /data/sales, om de group ID (GUID) bit in te stellen, evenals de sticky bit in de gezamenlijke map.
  8. Voer uit su - linda. Voer vervolgens uit touch linda3 en touch linda4. Nu zou u moeten zien dat de twee bestanden die u hebt aangemaakt toebehoren aan de groep sales, die de groeps eigenaar is van de map /data/sales.
  9. Voer uit rm -rf lisa*. De sticky bit voorkomt dat deze bestanden worden verwijderd namens gebruiker linda, omdat u geen eigenaar bent van deze bestanden. Merk op dat als gebruiker linda de eigenaar is van de map /data/sales, hij deze bestanden in ieder geval kan verwijderen!

Beheer van ACL (setfacl, getfacl) in Linux

Zelfs als de hierboven besproken uitgebreide rechten nuttige functionaliteit aan hoe Linux met machtigingen omgaat, stelt het u niet in staat om rechten aan meer dan ƩƩn gebruiker of groep in ƩƩn bestand te verlenen.

Toegangscontrolelijsten bieden deze functie. Bovendien stellen ze beheerders in staat om standaardmachtigingen op een complexe manier in te stellen, waarbij de ingestelde machtigingen in verschillende mappen kunnen variƫren.

Begrip van ACL

Hoewel de ACL-subsystem een geweldige functionaliteit aan uw server toevoegt, heeft het ƩƩn nadeel: niet alle tools ondersteunen het. Daarom kunnen uw ACL-instellingen verloren gaan bij het kopiƫren of verplaatsen van bestanden, en kan back-upsoftware mogelijk de ACL-instellingen niet terugzetten.

De tar-tool ondersteunt geen ACL. Om ervoor te zorgen dat de ACL-instellingen niet verloren gaan bij het maken van een back-up, gebruikt u star in plaats van tar. star werkt met dezelfde parameters als tar; het voegt gewoon ondersteuning voor ACL-instellingen toe.

U kunt ook een back-up van de ACL maken met getfacl, die kan worden hersteld met de setfacl-opdracht. Gebruik om een back-up te maken getfacl -R /directory > file.acls. Om instellingen uit het back-upbestand te herstellen, gebruikt u setfacl --restore=file.acl.

Het ontbreken van ondersteuning door sommige tools mag geen probleem zijn. ACL-lijsten worden vaak toegepast op mappen als een structurele maatregel, en niet op afzonderlijke bestanden.
Daarom zullen er niet veel zijn, slechts een paar, toegepast op slimme plaatsen in het bestandssysteem. Het is dus relatief eenvoudig om de oorspronkelijke ACL-lijsten waarmee je werkte te herstellen, zelfs als je back-upsoftware ze niet ondersteunt.

Voorbereiding van het bestandssysteem voor ACL

Voordat je met ACL werkt, kan het nodig zijn om het bestandssysteem voor te bereiden op de ondersteuning van ACL. Aangezien de bestandsmetadata moeten worden uitgebreid, is er niet altijd standaardondersteuning voor ACL in het bestandssysteem. Als je een foutmelding "operation not supported" ontvangt bij het instellen van ACL-lijsten voor het bestandssysteem, heeft je bestandssysteem mogelijk geen ondersteuning voor ACL.

Om dit te verhelpen, moet je de optie acl mount toevoegen aan het bestand /etc/fstab, zodat het bestandssysteem standaard met ondersteuning voor ACL wordt gemonteerd.

Wijziging en weergave van ACL-instellingen met setfacl en getfacl

Om ACL in te stellen, heb je de opdracht nodig setfacl. Om de huidige ACL-instellingen te bekijken, heb je getfacl. De opdracht ls -l toont geen bestaande ACL's; het toont alleen een + na de machtigingenlijst, wat aangeeft dat ACL-lijsten op het bestand zijn toegepast.

Voordat je ACL-lijsten instelt, is het altijd nuttig om de huidige ACL-instellingen te tonen met getfacl. Hieronder zie je een voorbeeld van de huidige toegangsrechten, zoals weergegeven met ls -l, evenals zoals weergegeven met getfacl. Als je goed kijkt, zie je dat de weergegeven informatie precies hetzelfde is.

[root@server1 \/]# ls -ld \/dir\ndrwxr-xr-x. 2 root root 6 Feb 6 11:28 \/dir\n[root@server1 \/]# getfacl \/dir\ngetfacl: Removing leading '\/' from absolute path names\n# file: dir\n# owner: root\n# group: root\nuser::rwx\ngroup::r-x\nother::r-x

Als resultaat van de opdracht getfacl is het hieronder zichtbaar dat de machtigingen zijn weergegeven voor drie verschillende objecten: gebruiker, groep en anderen. Laten we nu ACL toevoegen om lees- en uitvoeringsrechten aan de groep sales te geven. De opdracht hiervoor is setfacl -m g:sales:rx \/dir. In deze opdracht -m geef je aan dat de huidige ACL-instellingen moeten worden gewijzigd. Vervolgens g:sales:rx geeft de opdracht aan om ACL in te stellen voor lezing en uitvoering (rx) voor de groep (g) sales. Hieronder zie je hoe de opdracht eruitziet, evenals de uitvoer van de opdracht getfacl na het wijzigen van de huidige ACL-instellingen.

[root@server1 \/]# setfacl -m g:sales:rx \/dir\n[root@server1 \/]# getfacl \/dir\ngetfacl: Removing leading '\/' from absolute path names\n# file: dir\n# owner: root\n# group: root\nuser::rwx\ngroup::r-x\ngroup:sales:r-x\nmask::r-x\nother::r-x

Nu je begrijpt hoe je een groeps-ACL moet instellen, is het makkelijk om de ACL voor gebruikers en andere gebruikers te begrijpen. Bijvoorbeeld, het commando setfacl -m u:linda:rwx /data geeft toestemming aan gebruiker linda in de map /data, zonder haar eigenaar te maken of de huidige eigenaar te wijzigen.

Opdracht setfacl heeft veel mogelijkheden en opties. EƩn optie is bijzonder belangrijk, de parameter -R. Wanneer deze wordt gebruikt, maakt de optie het mogelijk om de ACL-instellingen voor alle bestanden en submappen die momenteel bestaan in de map waar je de ACL instelt, te configureren. Het wordt aanbevolen om deze optie altijd te gebruiken bij het wijzigen van de ACL-lijsten voor bestaande mappen.

Werken met standaard ACL

Een van de voordelen van het gebruik van ACL-lijsten is dat je meerdere gebruikers of groepen toegang kunt geven in een map. Een ander voordeel is dat je erfelijkheid kunt inschakelen door met de standaard ACL te werken.

Door een standaard-ACL in te stellen, definieer je de toegangsrechten die zullen worden ingesteld voor alle nieuwe items die in de map worden aangemaakt. Houd er rekening mee dat de standaard-ACL de rechten voor bestaande bestanden en submappen niet wijzigt. Om deze te wijzigen, moet je ook een reguliere ACL toevoegen!

Dit is belangrijk om te weten. Als je ACL wilt gebruiken om toegang voor meerdere gebruikers of groepen tot dezelfde map in te stellen, moet je de ACL twee keer instellen. Gebruik eerst setfacl -R -m, om de ACL voor de huidige bestanden te wijzigen. Gebruik vervolgens setfacl -m d:, om voor alle nieuwe items die ook zullen worden aangemaakt te zorgen.

Om een standaard-ACL in te stellen, hoef je alleen de optie We verwijderen de huidige partitie om een nieuwe aan te maken voor in totaal 50 GB. toe te voegen na de optie -m (de volgorde is belangrijk!). Gebruik dus setfacl -m d:g:sales:rx /data, als je wilt dat de verkoopgroep alles kan lezen en uitvoeren wat ooit in de map /data zal worden aangemaakt.

Bij het gebruik van standaard-ACL-lijsten kan het ook nuttig zijn om ACL voor anderen in te stellen. Gewoonlijk heeft dit niet veel zin, omdat je ook de rechten voor anderen kunt wijzigen met chmod. Echter, wat je niet kunt doen met behulp van chmod, om de rechten aan te geven die aan andere gebruikers moeten worden verleend voor elk nieuw bestand dat ooit zal worden aangemaakt. Als u wilt dat anderen geen enkele toestemming krijgen voor iets dat in /data is aangemaakt, gebruik dan setfacl -m d:o::- /data.

ACL's en standaardrechten zijn niet altijd goed geĆÆntegreerd. Problemen kunnen optreden als u standaard ACL's op een map hebt toegepast en vervolgens elementen aan die map hebt toegevoegd, waarna u probeert de standaardrechten te wijzigen. Wijzigingen die op de standaardrechten worden aangebracht, worden mogelijk niet goed weergegeven in het overzicht van de ACL. Om problemen te voorkomen, stelt u eerst de standaardrechten in en stelt u vervolgens de standaard ACL's in (en probeer deze daarna niet opnieuw te wijzigen).

Voorbeeld van het beheren van uitgebreide rechten met behulp van ACL

In dit voorbeeld blijft u werken met de mappen /data/account en /data/sales die u eerder hebt aangemaakt. In de eerdere voorbeelden hebt u gegarandeerd dat de groep sales rechten heeft op /data/sales, en dat de groep account rechten heeft op /data/account.

Zorg er eerst voor dat de groep account leesrechten krijgt in de map /data/sales, en dat de groep sales leesrechten krijgt in de map /data/account.

Vervolgens stelt u de standaard ACL-lijsten in om ervoor te zorgen dat de rechten voor alle nieuwe bestanden correct zijn ingesteld voor alle nieuwe items.

  1. Open de terminal.
  2. Voer uit setfacl -m g:account:rx /data/sales en setfacl -m g:sales:rx /data/account.
  3. Voer uit getfacl, om ervoor te zorgen dat de toegangsrechten zijn ingesteld zoals u dat wilde.
  4. Voer uit setfacl -m d:g:account:rwx,g:sales:rx /data/sales, om de standaard ACL voor de sales map in te stellen.
  5. Voeg de standaard ACL toe voor de map /data/account met behulp van setfacl -m d:g:sales:rwx,g:account:rx /data/account.
  6. Zorg ervoor dat de ACL-instellingen van kracht zijn door een nieuw bestand toe te voegen aan /data/sales. Voer touch /data/sales/newfile en voer getfacl /data/sales/newfile uit om de huidige rechten te controleren.

Instellen van standaardrechten met umask

U heeft hierboven geleerd hoe u met standaard ACL's werkt. Als u geen ACL's gebruikt, is er een shell-instelling die de standaardrechten definieert die u zult krijgen: umask (reverse mask). In dit gedeelte leert u hoe u de standaardrechtingen kunt wijzigen met behulp van umask.

U heeft waarschijnlijk gemerkt dat er bij het maken van een nieuw bestand enkele standaardrechten worden ingesteld. Deze rechten worden bepaald door de instelling umask. Deze shell-instelling wordt toegepast op alle gebruikers bij het inloggen. In de instelling umask wordt een numerieke waarde gebruikt die wordt afgetrokken van de maximale rechten die automatisch kunnen worden toegewezen aan een bestand; de maximale instelling voor bestanden is 666, en voor mappen is dat 777.

Echter, er zijn enkele uitzonderingen op deze regel. Je kunt een volledig overzicht van de instellingen umask vinden in de tabel hieronder.

Van de cijfers die worden gebruikt in umask, net als bij numerieke argumenten voor de commando's chmod, verwijst het eerste cijfer naar de rechten van de gebruiker, het tweede cijfer naar de rechten van de groep, en het laatste naar de standaardrechten die zijn ingesteld voor anderen. De waarde umask standaard 022 geeft 644 voor alle nieuwe bestanden en 755 voor alle nieuwe mappen die op je server zijn aangemaakt.

Een volledig overzicht van alle numerieke waarden umask en hun resultaten staat in de tabel hieronder.

Rechten in Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Een eenvoudige manier om te zien hoe de umask-instelling werkt, is als volgt: begin met de standaardrechten voor een bestand ingesteld op 666 en trek de umask af om de geldige rechten te verkrijgen. Doe hetzelfde voor een map en de standaardrechten van 777.

Er zijn twee manieren om de umask-instelling te wijzigen: voor alle gebruikers en voor individuele gebruikers. Als je de umask voor alle gebruikers wilt instellen, moet je ervoor zorgen dat de umask-instelling wordt meegenomen bij het opstarten van de shellomgevingbestanden, zoals vermeld in /etc/profile. De juiste aanpak is om een shellscript genaamd umask.sh in de map /etc/profile.d te maken en de umask in dit shellscript op te geven. Als de umask in dit bestand wordt gewijzigd, wordt deze toegepast op alle gebruikers na het inloggen op de server.

Een alternatief voor het instellen van umask via /etc/profile en gerelateerde bestanden, waar het van toepassing is op alle gebruikers die inloggen, is het wijzigen van de umask-instellingen in een bestand met de naam .profile, dat wordt aangemaakt in de thuismap van elke gebruiker.

Instellingen die in dit bestand zijn toegepast, gelden alleen voor de individuele gebruiker; daarom is dit een goede methode als je meer gedetailleerd wilt zijn. Persoonlijk vind ik deze functie handig om de standaardwaarde van umask voor de root-gebruiker op 027 te wijzigen, terwijl gewone gebruikers werken met de standaard umask van 022.

Werken met uitgebreide gebruikersattributen

Dit is het laatste hoofdstuk over rechten in Linux.

Bij het werken met machtigingen bestaat er altijd een relatie tussen het object van een gebruiker of groep en de machtigingen die deze gebruikers of groepen hebben voor een bestand of map. Een alternatieve methode om bestanden op een Linux-server te beschermen, is het werken met attributen.
Attributen functioneren onafhankelijk van de gebruiker die het bestand benadert.

Net als bij ACL's, kan het nodig zijn om een optie voor bestandsattributen in te schakelen. mount.

Dit is een optie user_xattr. Als je de melding "bewerking niet ondersteund" ontvangt bij het werken met uitgebreide gebruikersattributen, zorg er dan voor dat je de optie instelt mount in het bestand /etc/fstab.

Veel attributen zijn gedocumenteerd. Sommige attributen zijn beschikbaar, maar nog niet geĆÆmplementeerd. Gebruik ze niet; ze zullen je niets opleveren.

Hieronder staan de meest nuttige attributen die je kunt toepassen:

A Dit attribuut garandeert dat de toegangstijd van het bestand niet wordt gewijzigd.
Normaal gesproken moet de toegangstijd van een bestand telkens worden vastgelegd in de metadata van het bestand wanneer het bestand wordt geopend. Dit heeft een negatieve invloed op de prestaties; daarom kan het attribuut A worden gebruikt om deze functie uit te schakelen voor bestanden die vaak worden benaderd.

a Dit attribuut staat toe dat een bestand kan worden toegevoegd, maar niet kan worden verwijderd.

c Als je een bestandssysteem gebruikt dat compressie op volumenniveau ondersteunt, zorgt dit attribuut ervoor dat het bestand wordt gecomprimeerd bij de eerste inschakeling van de compressiemechanismen.

D Dit attribuut garandeert dat wijzigingen in bestanden onmiddellijk naar de schijf worden geschreven, in plaats van eerst in de cache. Dit is een nuttig attribuut voor belangrijke databasebestanden, omdat het ervoor zorgt dat ze niet verloren gaan tussen de bestandscache en de harde schijf.

We verwijderen de huidige partitie om een nieuwe aan te maken voor in totaal 50 GB. Dit attribuut garandeert dat het bestand niet wordt opgeslagen in back-ups waar de dumputility wordt gebruikt.

I Dit attribuut schakelt indexering in voor de map waarin het is ingeschakeld. Dit zorgt voor snellere toegang tot bestanden voor primitieve bestandssystemen zoals Ext3, die geen B-tree database gebruiken voor snelle toegang tot bestanden.

i Dit attribuut maakt het bestand onveranderlijk. Dit betekent dat wijzigingen aan het bestand niet kunnen worden aangebracht, wat handig is voor bestanden die extra bescherming nodig hebben.

j Dit attribuut garandeert dat in het ext3 bestandssysteem het bestand eerst naar de journal wordt geschreven en vervolgens naar de gegevensblokken op de harde schijf.

str1 != str2 Overschrijf de blokken waar het bestand is opgeslagen met 0 na het verwijderen van het bestand. Dit zorgt ervoor dat het bestand niet kan worden hersteld nadat het is verwijderd.

u Dit attribuut houdt informatie over verwijdering bij. Dit stelt je in staat om een hulpprogramma te ontwikkelen dat met deze informatie werkt om verwijderde bestanden te herstellen.

Als je attributen wilt toepassen, kun je het commando gebruiken chattr. Gebruik bijvoorbeeld chattr +s somefile, om de attributen toe te passen op somefile. Wil je het attribuut verwijderen? Gebruik dan chattr -s somefile, en het wordt verwijderd. Om een overzicht te krijgen van alle attributen die momenteel zijn toegepast, gebruik je het commando lsattr.

Samenvatting

In dit artikel heb je geleerd hoe je met machtigingen werkt. Je hebt gelezen over de drie basis machtigingen, uitgebreide machtigingen en hoe je ACL-lijsten kunt toepassen in het bestandssysteem. Ook heb je geleerd hoe je de umask-parameter kunt gebruiken om standaard machtigingen toe te passen. Aan het einde van dit artikel heb je geleerd hoe je door de gebruiker gedefinieerde attributen kunt gebruiken om een extra beveiligingsniveau aan het bestandssysteem toe te voegen.

Als je deze vertaling leuk vond, laat het me dan weten in de opmerkingen. Dat geeft meer motivatie om nuttige vertalingen te maken.

In het artikel heb ik enkele typfouten en grammaticale fouten gecorrigeerd. Ik heb enkele grote paragrafen verkleind voor een betere leesbaarheid.

In plaats van 'Alleen iemand met administratieve rechten op de map kan toestemming voor uitvoering toepassen.' heb ik het veranderd in 'Alleen iemand met schrijfrechten op de map kan toestemming voor uitvoering toepassen.', wat correcter is.

Bedankt voor de opmerkingen. berez.

Veranderde:
Als je geen eigenaar bent, controleert de shell of je lid bent van de groep, die ook de groepsnaam van het bestand is.

In:
Als je niet de eigenaar bent van het bestand, controleert de shell of je lid bent van de groep die toestemming heeft voor dit bestand. Als je lid bent van die groep, krijg je toegang tot het bestand met de permissies die voor de groep zijn ingesteld, en stopt de shell met controleren.

Dank voor de opmerking. CryptoPirate

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster