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

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

Duw: Ik hoop dat het artikel niet alleen nuttig zal zijn voor beginners, maar ook meer ervaren beheerders zal helpen hun kennis te stroomlijnen.

Dus laten we gaan.

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

Voor toegang tot bestanden in Linux worden machtigingen gebruikt. Deze machtigingen zijn toegewezen aan drie objecten: de bestandseigenaar, de groepseigenaar en een ander object (dat wil zeggen alle anderen). In dit artikel leert u hoe u machtigingen toepast.

Dit artikel begint met een overzicht van de basisconcepten, gevolgd door een bespreking van speciale machtigingen en toegangscontrolelijsten (ACL's). Aan het einde van dit artikel behandelen we het instellen van standaardmachtigingen via umask, evenals het beheren van uitgebreide gebruikersattributen.

Beheer van bestandseigendom

Voordat u machtigingen bespreekt, moet u op de hoogte zijn van de rol van bestands- en directory-eigenaar. Eigendom van bestanden en mappen is essentieel voor het omgaan met machtigingen. In dit gedeelte leert u eerst hoe u de eigenaar kunt zien. U leert vervolgens hoe u de groepseigenaar en -gebruiker voor bestanden en mappen kunt wijzigen.

De eigenaar van een bestand of map weergeven

In Linux heeft elk bestand en elke map twee eigenaren: een gebruiker en een groepseigenaar.

Deze eigenaren worden ingesteld wanneer een bestand of map wordt gemaakt. De gebruiker die het bestand maakt, wordt de eigenaar van dat bestand en de primaire groep waartoe dezelfde gebruiker behoort, wordt ook de eigenaar van dat bestand. Om te bepalen of u als gebruiker toestemming hebt om een ​​bestand of map te openen, controleert de shell op eigendom.

Dit gebeurt in de volgende volgorde:

  1. De shell controleert of u de eigenaar bent van het bestand waartoe u toegang wilt. Als u de eigenaar bent, krijgt u machtigingen en stopt de shell met controleren.
  2. Als u niet de eigenaar van het bestand bent, zal de shell controleren of u lid bent van een groep die machtigingen heeft voor het bestand. Als u lid bent van deze groep, krijgt u toegang tot het bestand met de machtigingen die de groep heeft ingesteld en stopt de shell met controleren.
  3. Als u geen gebruiker of eigenaar van een groep bent, krijgt u de rechten van andere gebruikers (Other).

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

[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 u kunt de eigenaar van bestanden in een bepaalde map weergeven. Soms kan het handig zijn om een ​​lijst te krijgen van alle bestanden op het systeem die een bepaalde gebruiker of groep als eigenaar hebben. Hiervoor kun je gebruiken vinden. Argument vind-gebruiker kan hiervoor worden gebruikt. Met de volgende opdracht worden bijvoorbeeld alle bestanden weergegeven die eigendom zijn van de gebruiker linda:

find / -user linda

также можете использовать vinden om te zoeken naar bestanden die een bepaalde groep als eigenaar hebben.

De volgende opdracht zoekt bijvoorbeeld naar alle bestanden die bij de groep horen gebruikers:

find / -group users

Verandering van eigenaar

Om de juiste machtigingen toe te passen, is eigendom het eerste waar u aan moet denken. Hiervoor bestaat een opdracht chown. De syntaxis van deze opdracht is gemakkelijk te begrijpen:

chown кто что

Het volgende commando verandert bijvoorbeeld de eigenaar van de map /home/account in de gebruiker linda:

chown linda /home/account

Team chown heeft verschillende opties, waarvan er één bijzonder handig is: -R. U kunt raden wat het doet, want deze optie is ook beschikbaar voor veel andere opdrachten. Hiermee kunt u de eigenaar recursief instellen, waarmee u de eigenaar van de huidige map en alles daaronder kunt instellen. De volgende opdracht verandert het eigendom van de map /home en alles eronder aan de linda-gebruiker:

Nu zien de eigenaren er zo 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

Laten we doen:

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

Nu is de gebruiker lisa de eigenaar geworden van de accountdirectory:

[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 een groep wijzigen

Er zijn twee manieren om het eigendom van een groep te wijzigen. U kunt dit doen met behulp van chown, maar er is een speciaal commando genaamd chgrpdat doet zijn werk. Als u de opdracht wilt gebruiken chown, gebruik . of : voor de groepsnaam.

De volgende opdracht verandert elke eigenaar van de /home/accountgroep in de accountgroep:

chown .account /home/account

U kunt gebruik maken van chown om de eigenaar van een gebruiker en/of groep op verschillende manieren te wijzigen. Hier zijn enkele voorbeelden:

  • chown lisa mijnbestand1 stelt de gebruiker lisa in als eigenaar van myfile1.
  • chown lisa.sales mijnbestand stelt de gebruiker lisa in als de eigenaar van het myfile-bestand en stelt ook de verkoopgroep in als de eigenaar van hetzelfde bestand.
  • chown lisa:verkoop mijnbestand hetzelfde als de vorige opdracht.
  • chown .sales mijnbestand stelt de verkoopgroep in als eigenaar van myfile zonder de eigenaar van de gebruiker te wijzigen.
  • chown :sales mijnbestand hetzelfde als de vorige opdracht.

U kunt het commando gebruiken: chgrpom de eigenaar van de groep te wijzigen. Overweeg het volgende voorbeeld, waar u kunt gebruiken chgrp stel de eigenaar van de accountdirectory in op de verkoopgroep:

chgrp .sales /home/account

zoals bij chown, kunt u de optie gebruiken -R с chgrp, evenals recursief de eigenaar van de groep wijzigen.

De standaardeigenaar begrijpen

Het is je misschien opgevallen dat wanneer een gebruiker een bestand maakt, het standaardeigendom wordt toegepast.
De gebruiker die het bestand maakt, wordt automatisch de eigenaar van dat bestand en de primaire groep van die gebruiker wordt automatisch de eigenaar van dat bestand. Dit is meestal de groep die in het bestand /etc/passwd wordt vermeld als de primaire groep van de gebruiker. Als de gebruiker echter lid is van meer dan één groep, kan de gebruiker de effectieve primaire groep wijzigen.

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

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

Als de huidige linda-gebruiker de effectieve primaire groep wil wijzigen, gebruikt hij het commando nieuwgrpgevolgd door de naam van de groep die hij wil instellen als de nieuwe effectieve primaire groep. Na gebruik van de opdracht nieuwgrp de primaire groep is actief totdat de gebruiker een opdracht invoert afrit of niet uitloggen.

Hieronder ziet u hoe de gebruiker linda dit commando gebruikt, met verkoop als primaire groep:

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

Nadat de effectieve primaire groep is gewijzigd, krijgen alle nieuwe bestanden die door de gebruiker zijn gemaakt, die groep als groepseigenaar. Om terug te keren naar de oorspronkelijke instelling voor de primaire groep, gebruikt u afrit.

Om de opdracht te kunnen gebruiken nieuwgrp, moet de gebruiker lid zijn van de groep die hij als primaire groep wil gebruiken. Daarnaast kan een groepswachtwoord worden gebruikt voor een groep met behulp van de opdracht gpasswd. Als de gebruiker de opdracht gebruikt nieuwgrpmaar geen lid is van de doelgroep, vraagt ​​de shell om het wachtwoord van de groep. Nadat u het juiste groepswachtwoord hebt ingevoerd, wordt er een nieuwe effectieve primaire groep aangemaakt.

Beheer van de grondrechten

Het Linux-permissiesysteem is uitgevonden in de jaren zeventig. Omdat de computerbehoeften in die jaren beperkt waren, was het basispermissiesysteem vrij beperkt. Dit machtigingssysteem gebruikt drie machtigingen die kunnen worden toegepast op bestanden en mappen. In dit gedeelte leert u hoe u deze machtigingen kunt gebruiken en wijzigen.

Machtigingen voor lezen, schrijven en uitvoeren begrijpen

Met drie basismachtigingen kunt u bestanden lezen, schrijven en uitvoeren. Het effect van deze machtigingen verschilt wanneer ze worden toegepast op bestanden of mappen. Voor een bestand geeft de leesmachtiging u het recht om het bestand te openen om te lezen. Daarom kunt u de inhoud ervan lezen, maar dat betekent dat uw computer het bestand kan openen om er iets mee te doen.

Een programmabestand dat toegang tot een bibliotheek nodig heeft, moet bijvoorbeeld leestoegang tot die bibliotheek hebben. Hieruit volgt dat de leesrechten de meest elementaire toestemming is die u nodig hebt om met bestanden te werken.

Wanneer toegepast op een map, kunt u met lezen de inhoud van die map weergeven. U dient zich ervan bewust te zijn dat u met deze toestemming de bestanden in de map niet kunt lezen. Het Linux-permissiesysteem kent geen overerving en de enige manier om een ​​bestand te lezen is door leespermissies voor dat bestand te gebruiken.

Zoals je waarschijnlijk wel kunt raden, staat schrijfrechten, indien toegepast op een bestand, toe om naar het bestand te schrijven. Met andere woorden, hiermee kunt u de inhoud van bestaande bestanden wijzigen. U kunt er echter geen nieuwe bestanden mee maken of verwijderen of bestandsmachtigingen wijzigen. Om dit te doen, moet u schrijfrechten geven aan de map waar u het bestand wilt maken. In mappen kunt u met deze machtiging ook nieuwe submappen maken en verwijderen.

Execute permission is wat je nodig hebt om het bestand uit te voeren. Het zal nooit standaard worden geïnstalleerd, waardoor Linux bijna volledig immuun is voor virussen. Alleen iemand met schrijfrechten op de directory kan uitvoeringsrechten toepassen.

Het volgende vat het gebruik van basismachtigingen samen:

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

chmod gebruiken

De opdracht wordt gebruikt om machtigingen te beheren. chmod... Gebruik makend van chmod u kunt machtigingen instellen voor de gebruiker (gebruiker), groepen (groep) en anderen (overige). U kunt deze opdracht in twee modi gebruiken: relatieve modus en absolute modus. In de absolute modus worden drie cijfers gebruikt om basismachtigingen in te stellen.

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

Bereken bij het instellen van machtigingen de waarde die u nodig hebt. Als u lezen/schrijven/uitvoeren voor gebruiker, lezen/uitvoeren voor groep en lezen/uitvoeren voor anderen in /somefile wilt instellen, gebruikt u de volgende opdracht chmod:

chmod 755 /somefile

Wanneer u gebruik maakt van chmod op deze manier worden alle huidige machtigingen vervangen door de machtigingen die u instelt.

Als u de machtigingen ten opzichte van de huidige machtigingen wilt wijzigen, kunt u dit gebruiken chmod in relatieve modus. Gebruik makend van chmod in relatieve modus werk je met drie indicatoren om aan te geven wat je wilt doen:

  1. Eerst geeft u op voor wie u de machtigingen wilt wijzigen. Om dit te doen, kunt u kiezen tussen gebruiker (u), groep (g) en anderen (o).
  2. U gebruikt vervolgens een instructie om machtigingen toe te voegen aan of te verwijderen uit de huidige modus, of om ze absoluut in te stellen.
  3. Aan het eind gebruik je r, w и xom aan te geven welke machtigingen u wilt instellen.

Bij het wijzigen van machtigingen in de relatieve modus kunt u het gedeelte "naar" overslaan om machtigingen voor alle objecten toe te voegen of te verwijderen. Deze opdracht voegt bijvoorbeeld uitvoerrechten toe voor alle gebruikers:

chmod +x somefile

Wanneer u in de relatieve modus werkt, kunt u ook complexere opdrachten gebruiken. Deze opdracht voegt bijvoorbeeld schrijfrechten toe aan een groep en verwijdert leesrechten voor anderen:

chmod g+w,o-r somefile

Bij gebruik van de chmod -R o+rx /data u stelt uitvoerrechten in voor alle mappen en voor bestanden in de map /data. Gebruik om uitvoermachtiging alleen in te stellen voor mappen en niet voor bestanden chmod -R o+ rX /data.

De hoofdletter X zorgt ervoor dat bestanden geen uitvoerrechten krijgen, tenzij het bestand al uitvoerrechten heeft ingesteld voor sommige objecten. Dit maakt X een slimmere manier om met uitvoeringsrechten om te gaan; hierdoor wordt voorkomen dat deze machtiging wordt ingesteld op bestanden waar deze niet nodig is.

Uitgebreide rechten

Naast de basismachtigingen waarover je zojuist hebt gelezen, heeft Linux ook een reeks geavanceerde machtigingen. Dit zijn niet de permissies die je standaard instelt, maar soms zorgen ze voor een handige toevoeging. In dit gedeelte leert u wat ze zijn en hoe u ze instelt.

Inzicht in SUID, GUID en Sticky Bit Extended Permissions

Er zijn drie geavanceerde machtigingen. De eerste hiervan is de toestemming om een ​​gebruikers-ID (SUID) in te stellen. In sommige speciale gevallen kunt u deze toestemming toepassen op uitvoerbare bestanden. Een gebruiker die een uitvoerbaar bestand uitvoert, voert dat bestand standaard uit met zijn eigen machtigingen.

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

Denk bijvoorbeeld aan een situatie waarin een gebruiker zijn wachtwoord moet wijzigen. Om dit te doen, moet de gebruiker zijn nieuwe wachtwoord naar het bestand /etc/shadow schrijven. Dit bestand is echter niet beschrijfbaar door niet-rootgebruikers:

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. Het hulpprogramma /usr/bin/passwd gebruikt deze toestemming standaard. Dit betekent dat bij het wijzigen van het wachtwoord de gebruiker tijdelijk root wordt, waardoor hij naar het bestand /etc/shadow kan schrijven. U kunt de SUID-machtiging zien met ls -l hoe s in een positie waar je normaal zou verwachten te zien x voor aangepaste machtigingen:

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

De SUID-machtiging ziet er misschien handig uit (en is dat in sommige gevallen ook), maar is tegelijkertijd potentieel gevaarlijk. Indien niet correct toegepast, kunt u per ongeluk rootrechten weggeven. Daarom raad ik aan om het alleen met de grootste zorg te gebruiken.

De meeste beheerders zullen het nooit nodig hebben; je zult het alleen in sommige bestanden zien waar het besturingssysteem het standaard zou moeten instellen.

De tweede speciale toestemming is de groepsidentificatie (SGID). Deze toestemming heeft twee effecten. Wanneer toegepast op een uitvoerbaar bestand, geeft het de gebruiker die het bestand uitvoert de machtigingen van de groepseigenaar van het bestand. Dus SGID kan min of meer hetzelfde doen als SUID. SGID wordt hiervoor echter praktisch niet gebruikt.

Net als bij SUID-toestemming wordt SGID standaard toegepast op sommige systeembestanden.

Wanneer toegepast op een map, kan de SGID nuttig zijn omdat u deze kunt gebruiken om de standaard groepseigenaar in te stellen voor bestanden en submappen die in die map zijn gemaakt. Wanneer een gebruiker een bestand maakt, wordt standaard de effectieve primaire groep ingesteld als groepseigenaar voor dat bestand.

Dit is niet altijd erg handig, vooral omdat Red Hat/CentOS-gebruikers hun primaire groep hebben ingesteld op een groep met dezelfde naam als de gebruiker, en waarvan de gebruiker het enige lid is. De bestanden die de gebruiker maakt, worden dus standaard in bulk gedeeld.

Stel je een situatie voor waarin gebruikers Linda en Lori in de boekhouding werken en lid zijn van een groep account. Deze gebruikers zijn standaard lid van een besloten groep waarvan zij het enige lid zijn. Beide gebruikers zijn echter lid van de accountgroep, maar ook als secundaire groepsparameter.

De standaardsituatie is dat wanneer een van deze gebruikers een bestand aanmaakt, de primaire groep de eigenaar wordt. Daarom heeft linda standaard geen toegang tot bestanden die door lori zijn gemaakt, en vice versa. Als u echter een gedeelde groepsdirectory maakt (bijvoorbeeld /groups/account) en ervoor zorgt dat de SGID-machtiging wordt toegepast op die directory en dat het groepsaccount is ingesteld als de groepseigenaar voor die directory, worden alle bestanden die in die directory zijn gemaakt en alle van zijn submappen , krijgt standaard ook het groepsaccount als groepseigenaar.

Om deze reden is de SGID-machtiging een zeer nuttige machtiging om in te stellen op openbare groepsmappen.

SGID-toestemming weergegeven in uitvoer ls -l hoe s op de positie waar u normaal gesproken toestemming zou vinden om een ​​groep uit te voeren:

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

De derde van de speciale machtigingen is het plakkerige deel. Deze machtiging is handig om bestanden te beschermen tegen onbedoeld verwijderen in een omgeving waar meerdere gebruikers schrijftoegang hebben tot dezelfde directory. Als een plakkerig bit wordt gebruikt, kan een gebruiker een bestand alleen verwijderen als hij/zij de gebruiker-eigenaar is van het bestand of de map die het bestand bevat. Om deze reden wordt het gebruikt als de standaardmachtiging voor de map /tmp en kan het ook nuttig zijn voor openbare groepsmappen.

Zonder het plakkerige bit, als de gebruiker bestanden in een map kan maken, kunnen ze ook bestanden uit die map verwijderen. In een openbare groepsomgeving kan dit vervelend zijn. Stel je de gebruikers linda en lori voor, die allebei schrijfrechten hebben voor de map /data/account en die rechten krijgen door lid te zijn van de accountgroep. Daarom kan linda bestanden verwijderen die door lori zijn gemaakt en vice versa.

Wanneer u het plakkerige bit toepast, kan de gebruiker alleen bestanden verwijderen als aan een van de volgende voorwaarden wordt voldaan:

  • De gebruiker is de eigenaar van het bestand;
  • De gebruiker is de eigenaar van de directory waar het bestand zich bevindt.

Bij gebruik van de ls -l, je kunt het plakkerige stukje zien als t in de positie waar u normaal gesproken uitvoeringsrechten voor anderen zou zien:

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

Uitgebreide rechten toepassen

Om SUID, SGID en sticky bit aan te brengen 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 u deze machtigingen wilt toepassen, moet u een viercijferig argument toevoegen aan chmod, waarvan het eerste cijfer verwijst naar speciale machtigingen. De volgende regel voegt bijvoorbeeld SGID-toestemming toe aan de map en stelt rwx in voor gebruiker en rx voor groep en andere:

chmod 2755 /somedir

Dit is nogal onpraktisch als u de huidige machtigingen wilt zien die zijn ingesteld voordat u ermee werkt chmod in absolute modus. (Je loopt het risico machtigingen te overschrijven als je dat niet doet.) Dus ik raad aan om in de relatieve modus te werken als je een van de speciale machtigingen moet toepassen:

  1. Voor SUID-gebruik chmod u+s.
  2. Voor SGID-gebruik chmod g+s.
  3. Voor gebruik met kleverige bits chmod +t, gevolgd door de naam van het bestand of de map waarvoor u machtigingen wilt instellen.

De tabel vat alles samen wat u moet weten over het beheren van speciale machtigingen.

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

Voorbeeld van werken met speciale rechten

In dit voorbeeld gebruikt u speciale machtigingen om het voor groepsleden gemakkelijker te maken om bestanden te delen in de gedeelde groepsdirectory. Je wijst de ID-bit toe aan de ingestelde groeps-ID en de sticky-bit, en je ziet dat als ze eenmaal zijn ingesteld, functies worden toegevoegd om het voor groepsleden gemakkelijker te maken om samen te werken.

  1. Open een terminal waar jij de linda-gebruiker bent. U kunt een gebruiker aanmaken met het commando Gebruiker Linda, wachtwoord toevoegen wacht Linda.
  2. Maak de directory /data in de root en de subdirectory /data/sales met de opdracht mkdir -p /gegevens/verkoop. Compleet cd /data/verkoopom naar de verkoopgids te gaan. Compleet raak linda1 aan и raak linda2 aanom twee lege bestanden te maken die eigendom zijn van linda.
  3. uitvoeren su-lisa om de huidige gebruiker om te schakelen naar de gebruiker lisa, die ook lid is van de verkoopgroep.
  4. uitvoeren cd /data/verkoop en vanuit die map uitvoeren ls -l. U ziet twee bestanden die zijn gemaakt door de linda-gebruiker en behoren tot de linda-groep. Compleet rm -f linda*. Hiermee worden beide bestanden verwijderd.
  5. uitvoeren raak lisa1 aan и raak lisa2 aanom twee bestanden te maken die eigendom zijn van de gebruiker lisa.
  6. uitvoeren zo — om uw privileges te verheffen tot root.
  7. uitvoeren chmod g+s,o+t /data/salesom zowel de group identifier (GUID) bit als de sticky bit in de gedeelde groepsdirectory in te stellen.
  8. uitvoeren su-linda. Dan doen raak linda3 aan и raak linda4 aan. U zou nu moeten zien dat de twee bestanden die u hebt gemaakt eigendom zijn van de verkoopgroep, die de groepseigenaar is van de map /data/sales.
  9. uitvoeren rm -rf lisa*. De sticky bit voorkomt dat deze bestanden namens de linda-gebruiker worden verwijderd, aangezien u niet de eigenaar van deze bestanden bent. Merk op dat als de linda-gebruiker de eigenaar is van de directory /data/sales, deze bestanden toch kunnen worden verwijderd!

ACL-beheer (setfacl, getfacl) in Linux

Hoewel de hierboven besproken uitgebreide permissies nuttige functionaliteit toevoegen aan de manier waarop Linux met permissies omgaat, staat het je niet toe om permissies te verlenen aan meer dan één gebruiker of groep in hetzelfde bestand.

Toegangscontrolelijsten bieden deze functie. Bovendien stellen ze beheerders in staat om op een complexe manier standaardmachtigingen in te stellen, waarbij de ingestelde machtigingen van directory tot directory kunnen verschillen.

ACL's begrijpen

Hoewel het ACL-subsysteem geweldige functionaliteit aan uw server toevoegt, heeft het één nadeel: niet alle hulpprogramma's ondersteunen het. Daarom kunt u uw ACL-instellingen kwijtraken wanneer u bestanden kopieert of verplaatst, en uw back-upsoftware maakt mogelijk geen back-up van uw ACL-instellingen.

Het hulpprogramma tar ondersteunt geen ACL's. Om ervoor te zorgen dat ACL-instellingen niet verloren gaan wanneer u een back-up maakt, gebruikt u ster in plaats van teer. ster werkt met dezelfde opties als tar; het voegt alleen ondersteuning toe voor ACL-instellingen.

U kunt ook een back-up maken van ACL's met krijgenfacl, die kan worden hersteld met behulp van de opdracht setfacl. Gebruik om een ​​back-up te maken getfacl -R /map > bestand.acls. Gebruik om instellingen van een back-upbestand te herstellen setfacl --restore=bestand.acl.

Gebrek aan ondersteuning door sommige tools zou geen probleem moeten zijn. ACL's worden vaak toegepast op mappen als een structurele maatregel in plaats van op individuele bestanden.
Daarom zullen er niet veel, maar slechts een paar, op slimme plaatsen in het bestandssysteem worden toegepast. Daarom is het herstellen van de oorspronkelijke ACL's waarmee u hebt gewerkt relatief eenvoudig, zelfs als uw back-upsoftware deze niet ondersteunt.

Het bestandssysteem voorbereiden voor ACL's

Voordat u met ACL's gaat werken, moet u mogelijk uw bestandssysteem voorbereiden om ACL's te ondersteunen. Omdat de metagegevens van het bestandssysteem moeten worden uitgebreid, is er niet altijd standaard ondersteuning voor ACL's in het bestandssysteem. Als u het bericht 'bewerking niet ondersteund' krijgt bij het instellen van ACL's voor een bestandssysteem, ondersteunt uw bestandssysteem mogelijk geen ACL's.

Om dit op te lossen, moet u de optie toevoegen acl montage in /etc/fstab zodat het bestandssysteem standaard wordt aangekoppeld met ACL-ondersteuning.

ACL-instellingen wijzigen en bekijken met setfacl en getfacl

Om een ​​ACL in te stellen heb je het commando nodig setfacl. Om de huidige ACL-instellingen te zien, heb je nodig krijgenfacl. Team ls -l toont geen bestaande ACL's; het toont gewoon een + na de machtigingenlijst, wat aangeeft dat de ACL's ook van toepassing zijn op het bestand.

Voordat u ACL's instelt, is het altijd een goed idee om de huidige ACL-instellingen weer te geven krijgenfacl. In het onderstaande voorbeeld ziet u de huidige machtigingen, zoals weergegeven met ls -l, en ook zoals afgebeeld met krijgenfacl. Als je goed genoeg kijkt, zie je dat de getoonde informatie precies hetzelfde is.

[root@server1 /]# ls -ld /dir
drwxr-xr-x. 2 root root 6 Feb 6 11:28 /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

Als resultaat van het uitvoeren van de opdracht krijgenfacl hieronder kunt u zien dat de machtigingen worden weergegeven voor drie verschillende objecten: gebruiker, groep en anderen. Laten we nu een ACL toevoegen om lees- en uitvoerrechten te geven aan de verkoopgroep. opdracht hiervoor setfacl -mg:verkoop:rx /dir. In dit elftal -m geeft aan dat de huidige ACL-instellingen moeten worden gewijzigd. Daarna g:verkoop:rx vertelt het commando om de read-execute ACL in te stellen (rx) voor de groep (g) verkoop. Hieronder kunt u zien hoe de opdracht eruit ziet, evenals de uitvoer van de opdracht getfacl na het wijzigen van de huidige ACL-instellingen.

[root@server1 /]# setfacl -m g:sales:rx /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
group:sales:r-x
mask::r-x
other::r-x

Nu u begrijpt hoe u een groeps-ACL instelt, is het gemakkelijk om ACL's voor gebruikers en andere gebruikers te begrijpen. Bijvoorbeeld de opdracht setfacl -mu:linda:rwx /data geeft machtigingen aan de linda-gebruiker in de directory /data zonder deze de eigenaar te maken of de toewijzing van de huidige eigenaar te wijzigen.

Team setfacl heeft veel functies en opties. Eén optie is vooral belangrijk, de parameter -R. Indien gebruikt, zorgt deze optie ervoor dat de ACL wordt ingesteld voor alle bestanden en submappen die momenteel bestaan ​​in de map waarin u de ACL instelt. Het wordt aanbevolen om deze optie altijd te gebruiken bij het wijzigen van ACL's voor bestaande directory's.

Werken met standaard ACL's

Een van de voordelen van het gebruik van ACL's is dat u machtigingen kunt verlenen aan meerdere gebruikers of groepen in een directory. Een ander voordeel is dat u overname kunt inschakelen door met de standaard ACL's te werken.

Door de standaard ACL in te stellen, bepaalt u de machtigingen die worden ingesteld voor alle nieuwe items die in de directory worden gemaakt. Houd er rekening mee dat de standaard ACL de machtigingen voor bestaande bestanden en submappen niet wijzigt. Om ze te wijzigen, moet u ook een normale ACL toevoegen!

Dit is belangrijk om te weten. Als u een ACL wilt gebruiken om meerdere gebruikers of groepen te configureren voor toegang tot dezelfde directory, moet u de ACL twee keer instellen. Eerste gebruik setfacl -R -mom de ACL voor de huidige bestanden te wijzigen. Gebruik dan setfacl-md:om te zorgen voor alle nieuwe elementen die ook zullen worden gecreëerd.

Om de standaard ACL in te stellen, hoeft u alleen maar de optie toe te voegen d na optie -m (volgorde is belangrijk!). Dus gebruiken setfacl -md:g:verkoop:rx /dataals u wilt dat groepsverkoop alles leest en uitvoert dat ooit in de map /data is gemaakt.

Bij gebruik van standaard ACL's kan het ook handig zijn om ACL's voor andere in te stellen. Dit heeft meestal weinig zin, omdat u ook de machtigingen voor anderen kunt wijzigen chmod. Waar je echter niets mee kunt chmod, is om de rechten te specificeren die aan andere gebruikers moeten worden verleend voor elk nieuw bestand dat ooit wordt gemaakt. Als u wilt voorkomen dat anderen machtigingen krijgen voor iets dat is gemaakt in /data, gebruik dan bijvoorbeeld setfacl -md:o::- /data.

ACL's en normale machtigingen zijn niet altijd goed geïntegreerd. Er kunnen problemen optreden als u een standaard-ACL toepast op een map, vervolgens items aan die map toevoegt en vervolgens probeert de normale machtigingen te wijzigen. Wijzigingen die van toepassing zijn op normale machtigingen, worden niet goed weergegeven in het ACL-overzicht. Stel om problemen te voorkomen eerst de normale machtigingen in en stel vervolgens de standaard ACL's in (en probeer ze daarna niet meer te wijzigen).

Voorbeeld van verhoogd rechtenbeheer met behulp van ACL's

In dit voorbeeld gaat u verder met de directory's /data/account en /data/sales die u eerder hebt gemaakt. In de voorgaande voorbeelden heb je ervoor gezorgd dat de verkoopgroep rechten heeft op /data/sales en de accountgroep heeft rechten op /data/account.

Zorg er eerst voor dat de accountgroep leesrechten krijgt voor de directory /data/sales en dat de verkoopgroep leesrechten krijgt voor de directory /data/account.

Vervolgens stelt u standaard ACL's in om ervoor te zorgen dat alle nieuwe bestanden de juiste machtigingen hebben voor alle nieuwe items.

  1. Open een terminal.
  2. uitvoeren setfacl -mg:account:rx /data/sales и setfacl -mg:sales:rx /data/account.
  3. uitvoeren krijgenfaclom ervoor te zorgen dat de machtigingen zijn ingesteld zoals u dat wilt.
  4. uitvoeren setfacl -md:g:account:rwx,g:sales:rx /data/salesom de standaard ACL voor de verkoopdirectory in te stellen.
  5. Voeg een standaard ACL toe voor de directory /data/account met behulp van setfacl -md:g:sales:rwx,g:account:rx /data/account.
  6. Controleer of de ACL-instellingen van kracht zijn door een nieuw bestand toe te voegen aan /data/sales. Compleet tik op /data/sales/newfile en doe getfacl /data/sales/newfile om de huidige machtigingen te controleren.

Standaardmachtigingen instellen met umask

Hierboven hebt u geleerd hoe u met standaard-ACL's kunt werken. Als u geen ACL gebruikt, is er een shell-optie die de standaardmachtigingen bepaalt die u krijgt: umasker (omgekeerd masker). In deze sectie leert u hoe u de standaardmachtigingen kunt wijzigen met umasker.

Het is je misschien opgevallen dat wanneer je een nieuw bestand aanmaakt, sommige standaardpermissies worden ingesteld. Deze machtigingen worden bepaald door de instelling umasker. Deze shell-instelling is van toepassing op alle gebruikers bij aanmelding. In parameters umasker er wordt een numerieke waarde gebruikt, die wordt afgetrokken van de maximale machtigingen die automatisch voor het bestand kunnen worden ingesteld; de maximale instelling voor bestanden is 666 en voor mappen is 777.

Op deze regel zijn echter enkele uitzonderingen van toepassing. U vindt een volledig overzicht van instellingen umasker in onderstaande tabel.

Van de nummers gebruikt in umasker, zoals in het geval van numerieke argumenten voor de opdracht chmod, verwijst het eerste cijfer naar de machtigingen van de gebruiker, het tweede cijfer verwijst naar de machtigingen van de groep en het laatste verwijst naar de standaardmachtigingen die voor anderen zijn ingesteld. Betekenis umasker de standaard 022 geeft 644 voor alle nieuwe bestanden en 755 voor alle nieuwe mappen die op uw server zijn gemaakt.

Compleet overzicht van alle numerieke waarden umasker en hun resultaten in de onderstaande tabel.

Machtigingen 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 standaardmachtigingen van het bestand op 666 en trek de umask af om de effectieve machtigingen te krijgen. Doe hetzelfde voor de map en de standaardmachtigingen van 777.

Er zijn twee manieren om de umask-instelling te wijzigen: voor alle gebruikers en voor individuele gebruikers. Als u de umask voor alle gebruikers wilt instellen, moet u ervoor zorgen dat rekening wordt gehouden met de umask-instelling bij het starten van shell-omgevingsbestanden, zoals gespecificeerd in /etc/profile. De juiste benadering is om een ​​shellscript met de naam umask.sh te maken in de map /etc/profile.d en de umask op te geven die u in dat shellscript wilt gebruiken. 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 de umask via /etc/profile en gerelateerde bestanden, waar het van toepassing is op alle gebruikers die inloggen, is om de umask-instellingen te wijzigen in een bestand met de naam .profile dat wordt aangemaakt in de thuismap van elke gebruiker.

De instellingen die in dit bestand worden toegepast, zijn alleen van toepassing op de individuele gebruiker; daarom is dit een goede methode als je meer details nodig hebt. Persoonlijk vind ik deze functie leuk om de standaard umask voor de rootgebruiker te wijzigen in 027, terwijl normale gebruikers werken met de standaard umask van 022.

Werken met uitgebreide gebruikersattributen

Dit is het laatste gedeelte over Linux-machtigingen.

Bij het werken met machtigingen is er altijd een relatie tussen een gebruikers- of groepsobject en de machtigingen die gebruikers- of groepsobjecten hebben op een bestand of map. Een alternatieve methode om bestanden op een Linux-server te beschermen, is door met attributen te werken.
Attributen doen hun werk, ongeacht de gebruiker die het bestand opent.

Net als bij ACL's moeten bestandskenmerken mogelijk de optie bevatten monteren.

Dit is een optie gebruiker_xattr. Als u een bericht krijgt dat "bewerking niet wordt ondersteund" wanneer u met uitgebreide gebruikerskenmerken werkt, zorg er dan voor dat u de parameter instelt monteren in /etc/fstab.

Veel attributen zijn gedocumenteerd. Sommige attributen zijn beschikbaar maar nog niet geïmplementeerd. Gebruik ze niet; ze brengen je niets.

Hieronder staan ​​de handigste attributen die u kunt toepassen:

A Dit attribuut zorgt ervoor dat de bestandstoegangstijd van het bestand niet verandert.
Meestal moet elke keer dat een bestand wordt geopend, de toegangstijd van het bestand worden vastgelegd in de metadata van het bestand. Dit heeft een negatieve invloed op de prestaties; dus voor bestanden die regelmatig worden geopend, is het attribuut A kan worden gebruikt om deze functie uit te schakelen.

a Met dit attribuut kunt u een bestand toevoegen maar niet verwijderen.

c Als u een bestandssysteem gebruikt dat compressie op volumeniveau ondersteunt, zorgt dit bestandskenmerk ervoor dat het bestand wordt gecomprimeerd wanneer het compressiemechanisme voor het eerst wordt ingeschakeld.

D Dit attribuut zorgt ervoor dat wijzigingen in bestanden onmiddellijk naar schijf worden geschreven in plaats van eerst in de cache te worden opgeslagen. Dit is een handig attribuut op belangrijke databasebestanden om ervoor te zorgen dat ze niet verloren gaan tussen de bestandscache en de harde schijf.

d Dit attribuut zorgt ervoor dat het bestand niet wordt opgeslagen in back-ups waarbij het hulpprogramma dump wordt gebruikt.

I Dit attribuut maakt indexering mogelijk voor de map waarin het is ingeschakeld. Dit biedt snellere bestandstoegang voor primitieve bestandssystemen zoals Ext3 die de B-tree-database niet gebruiken voor snelle bestandstoegang.

i Dit attribuut maakt het bestand onveranderlijk. Er kunnen dus geen wijzigingen in het bestand worden aangebracht, wat handig is voor bestanden die extra bescherming nodig hebben.

j Dit attribuut zorgt ervoor dat op een ext3-bestandssysteem het bestand eerst naar het journaal wordt geschreven en vervolgens naar datablokken op de harde schijf.

s Overschrijf de blokken waarin het bestand is opgeslagen naar 0s na het verwijderen van het bestand. Dit zorgt ervoor dat het bestand niet kan worden hersteld nadat het is verwijderd.

u Dit attribuut slaat informatie over de verwijdering op. Hierdoor kunt u een hulpprogramma ontwikkelen dat met deze informatie werkt om verwijderde bestanden te redden.

Als u de attributen wilt toepassen, kunt u de opdracht gebruiken kletsen. Gebruik bijvoorbeeld chattr +s een bestandom attributen toe te passen op een bestand. Wilt u een attribuut verwijderen? Gebruik dan chattr -s een bestanden het zal worden verwijderd. Gebruik de opdracht om een ​​overzicht te krijgen van alle attributen die momenteel worden toegepast lsattr.

Beknopt

In dit artikel heb je geleerd hoe je met machtigingen kunt werken. U leest over de drie basismachtigingen, geavanceerde machtigingen en hoe u ACL's toepast op een bestandssysteem. Je hebt ook geleerd hoe je de umask-optie kunt gebruiken om standaardmachtigingen toe te passen. Aan het einde van dit artikel hebt u geleerd hoe u door de gebruiker uitgebreide attributen kunt gebruiken om een ​​extra beveiligingslaag voor het bestandssysteem toe te passen.

Als je deze vertaling leuk vond, schrijf er dan over in de comments. Er zal meer motivatie zijn om bruikbare vertalingen te maken.

Enkele typefouten en grammaticale fouten in het artikel gecorrigeerd. Enkele omvangrijke alinea's teruggebracht tot kleinere voor een betere leesbaarheid.

In plaats van "Alleen iemand met beheerdersrechten voor de directory kan uitvoeringsrechten toepassen." vastgezet op "Alleen iemand met schrijfrechten op de directory kan uitvoeringsrechten toepassen.", wat correcter zou zijn.

Bedankt voor de opmerkingen berez.

vervangen:
Als u niet de eigenaar van de gebruiker bent, zal de shell controleren of u lid bent van een groep, ook wel de groep van het bestand genoemd.

Op de:
Als u niet de eigenaar van het bestand bent, zal de shell controleren of u lid bent van een groep die machtigingen heeft voor het bestand. Als u lid bent van deze groep, krijgt u toegang tot het bestand met de machtigingen die de groep heeft ingesteld en stopt de shell met controleren.

bedankt voor je reactie Cryptopiraat

Bron: www.habr.com

Voeg een reactie