Bestandsrechten in Linux/Unix: lezen, schrijven en wijzigen

⚡ Slimme samenvatting

In Linux en Unix bepalen bestandsrechten wie elk bestand kan lezen, schrijven en uitvoeren. Dit beschermt een systeem met meerdere gebruikers op twee manieren: eigendom, dat een gebruiker, groep en anderen rechten toewijst, en de lees-, schrijf- en uitvoerrechten.

  • 👥 Eigendom: Elk bestand en elke map behoort toe aan een gebruiker (eigenaar), een groep en anderen, soms ook wel de wereld genoemd.
  • 🔑 Machtigingen: Aan elke eigenaarsklasse zijn drie machtigingen verbonden: lezen (r), schrijven (w) en uitvoeren (x).
  • 📃 Notering: Het commando `ls -l` toont een permissiestring zoals `-rw-rw-r–` voor eigenaar, groep en wereld.
  • 🔢 Absolute modus: Met `chmod` en een driecijferig octaal getal worden de machtigingen voor alle drie klassen tegelijk ingesteld, bijvoorbeeld 764.
  • ➕ Symbolische modus: chmod met u, g, o, a en +, -, = wijzigt één eigenaarsklasse zonder de andere aan te raken.
  • 🧭 Eigendomsopdrachten: Het commando chown wijzigt zowel de eigenaar als de groep, terwijl chgrp alleen de groep wijzigt.
  • 🤖 AI-ondersteuning: AI-assistenten en GitHub Copilot kunnen chmod- en chown-commando's genereren en uitleggen.

Bestandsrechten in Linux en Unix: hoe lees, schrijf en wijzig je bestanden?

Bestandsrechten in Linux Unix bepaalt wie elk bestand mag lezen, wijzigen of uitvoeren, wat de veiligheid van een gedeeld systeem met meerdere gebruikers waarborgt. Deze pagina behandelt bestandseigendom, de lees-, schrijf- en uitvoerrechten en de commando's waarmee deze rechten kunnen worden gewijzigd.

Linux is een kloon van Unix, het multi-user besturingssysteem dat door veel gebruikers tegelijkertijd kan worden gebruikt. Linux kan ook zonder aanpassingen op mainframes en servers worden gebruikt. Dit brengt echter beveiligingsrisico's met zich mee, omdat een ongevraagde of kwaadwillende gebruiker cruciale gegevens kan beschadigen, wijzigen of verwijderen. Voor effectieve beveiliging verdeelt Linux de autorisatie in twee niveaus:

  • Eigendom
  • Toestemming

Het concept van bestandsrechten en -eigendom is cruciaal in Linux. Hier leggen we de Linux-rechten en -eigendom uit en bespreken we beide. Laten we beginnen met eigendom.

Eigendom van Linux-bestanden

Aan elk bestand en elke map op uw Unix/Linux-systeem worden drie soorten eigenaren toegewezen, zoals hieronder weergegeven. Het onderstaande diagram laat zien hoe het eigenaarschap is gekoppeld aan de gebruiker, de groep en anderen.

Diagram van bestandseigendom in Linux, met weergave van gebruikers-, groeps- en andere permissieklassen.

Gebruiker

Een gebruiker is de eigenaar van het bestand. Standaard wordt de persoon die een bestand heeft gemaakt de eigenaar. Daarom wordt een gebruiker soms ook een eigenaar genoemd.

Groep

A gebruikersgroep Een groep kan meerdere gebruikers bevatten. Alle gebruikers die tot een groep behoren, hebben dezelfde Linux-groepsrechten voor het bestand. Stel dat u een project hebt waarbij een aantal mensen toegang tot een bestand nodig hebben. In plaats van handmatig rechten toe te wijzen aan elke gebruiker, kunt u alle gebruikers toevoegen aan een groep en groepsrechten toewijzen aan het bestand, zodat alleen deze groepsleden, en niemand anders, de bestanden kunnen lezen of wijzigen.

Overige

Iedere andere gebruiker die toegang heeft tot een bestand. Deze persoon heeft het bestand niet aangemaakt en behoort ook niet tot een gebruikersgroep die eigenaar van het bestand zou kunnen zijn. In de praktijk betekent dit iedereen. Daarom wordt het instellen van machtigingen voor anderen ook wel 'machtigingen voor iedereen' genoemd.

Nu rijst de grote vraag: hoe maakt Linux onderscheid tussen deze drie gebruikerstypen, zodat gebruiker 'A' geen toegang heeft tot een bestand dat essentiële informatie of gegevens van gebruiker 'B' bevat? Het is alsof je niet wilt dat een collega die aan jouw project werkt, toegang heeft tot jouw systeem. Linux-computer om je afbeeldingen te bekijken. Hier komen machtigingen om de hoek kijken, die het gebruikersgedrag bepalen.

Laten we het permissiesysteem op Linux eens nader bekijken.

Linux-bestandsmachtigingen

Elk bestand en elke map in uw Unix/Linux-systeem heeft de volgende drie machtigingen gedefinieerd voor elk van de drie hierboven besproken eigenaren.

  • Lezen: Met deze machtiging kunt u een bestand openen en lezen. Leesrechten voor een map geven u de mogelijkheid om de inhoud ervan weer te geven.
  • Schrijven: Met schrijfrechten kunt u de inhoud van een bestand wijzigen. Schrijfrechten voor een map geven u de bevoegdheid om bestanden in die map toe te voegen, te verwijderen en te hernoemen. Stel dat u schrijfrechten hebt voor een bestand, maar niet voor de map waarin het bestand is opgeslagen. U kunt de inhoud van het bestand wel wijzigen, maar u kunt het bestand niet hernoemen, verplaatsen of verwijderen uit de map.
  • Voer uit: In WindowsEen uitvoerbaar programma heeft meestal de extensie ".exe", waardoor je het gemakkelijk kunt starten. In Unix/Linux kun je een programma niet uitvoeren tenzij de uitvoerrechten zijn ingesteld. Als de uitvoerrechten niet zijn ingesteld, kun je de programmacode mogelijk wel bekijken of wijzigen (mits de lees- en schrijfrechten zijn ingesteld), maar je kunt het programma niet uitvoeren.

Laten we de bestandsrechten in Linux eens bekijken aan de hand van voorbeelden. Door `ls -l` in de terminal uit te voeren, krijgen we het volgende resultaat:

ls -l

De onderstaande schermafbeelding toont de permissiestring in een lange lijst.

De uitvoer van `ls -l` in de terminal toont de permissiestring `rw-rw-r--` voor een bestand.

Hier hebben we '-rw-rw-r–' gemarkeerd. Deze vreemd uitziende code geeft informatie over de Unix-rechten die zijn toegekend aan de eigenaar, de gebruikersgroep en de rest van de wereld.

Het eerste '-' teken geeft aan dat we een bestand hebben geselecteerd. Het pictogram hieronder markeert een gewoon bestand.

Klein pictogram dat aangeeft dat het vermelde item een ​​gewoon bestand is.

Anders zou er, als het een map was geweest, een 'd' zijn weergegeven, zoals in de onderstaande lijst.

Terminallijst met een map die is gemarkeerd met een 'd' aan het begin van de permissiestring.

De personages zijn vrij gemakkelijk te onthouden.

  • r = leesrechten
  • w = schrijftoestemming
  • x = uitvoeringsrechten
  • – = geen toestemming

Laten we het zo bekijken. Het eerste deel van de code is 'rw-'. Dit suggereert dat de eigenaar 'Home' het volgende kan doen:

  • Lees het bestand
  • Schrijf of bewerk het bestand

De eigenaar kan het bestand niet uitvoeren, omdat de uitvoerbit is ingesteld op '-'. Het onderstaande pictogram laat zien dat de uitvoerbit is gewist en vervangen door een streepje.

Klein pictogram dat aangeeft dat de uitvoerrechten zijn gewist en vervangen door een streepje.

Veel Linux-distributies, zoals Fedora, CentOS en, zijn zo ontworpen dat ze dat ook daadwerkelijk doen. Ubuntu Een gebruiker toevoegen aan een groep met dezelfde naam als de gebruiker. Zo wordt gebruiker 'tom' toegevoegd aan een groep met de naam 'tom'.

Het tweede deel is 'rw-'. Dit is voor de gebruikersgroep 'Home', en groepsleden kunnen:

  • Lees het bestand
  • Schrijf of bewerk het bestand

Het derde deel is voor de hele wereld, oftewel voor elke gebruiker. Er staat 'r–'. Dit betekent dat de gebruiker alleen het volgende kan doen:

  • Lees het bestand

Onderstaande tabel koppelt elk onderdeel van de permissiestring aan de eigenaar, de groep en de hele wereld.

Uitsplitsing van de rw-rw-r-- permissiereeks in eigenaar-, groep- en wereldsecties

Het wijzigen van bestands-/maprechten in Linux met behulp van het 'chmod'-commando.

Stel, je wilt niet dat een collega je persoonlijke foto's kan zien. Dit kun je regelen door de bestandsrechten aan te passen.

We kunnen 'chmod' gebruiken. commando, wat staat voor 'change mode'. Met dit commando kunnen we de machtigingen (lezen, schrijven, uitvoeren) van een bestand of map instellen voor de eigenaar, de groep en iedereen.

Syntax:

chmod permissions filename

Er zijn twee manieren om het commando te gebruiken:

  • Absolute modus
  • Symbolische modus

Absolute (numerieke) modus in Linux

In deze modus worden bestandsrechten niet als tekens weergegeven, maar als een octaal getal van drie cijfers. De onderstaande tabel geeft de getallen voor alle soorten rechten.

Telefoon Nummer Toestemmingstype Symbool
0 Geen toestemming -
1 Uitvoeren -X
2 Schrijven -W-
3 Uitvoeren + Schrijven -wx
4 Lees R-
5 Lezen + Uitvoeren rx
6 Lezen + Schrijven rw
7 Lezen + Schrijven + Uitvoeren rwx

Laten we het chmod-commando in actie zien, zoals weergegeven in het onderstaande terminalvenster.

Gebruik de terminalopdracht `chmod 764` op het bestand `sample` om de bestandsrechten te wijzigen.

In het bovenstaande terminalvenster hebben we de rechten van het bestand 'sample' gewijzigd naar '764'. De absolute code '764' betekent het volgende:

  • De eigenaar kan lezen, schrijven en uitvoeren.
  • De gebruikersgroep kan lezen en schrijven.
  • De wereld kan alleen lezen.

Dit wordt weergegeven als '-rwxrw-r–', zoals in het onderstaande resultaat.

Terminaluitvoer met het voorbeeldbestand en de permissiestring -rwxrw-r-- na chmod 764

Zo kun je in Linux de gebruikersrechten van een bestand wijzigen door een absoluut getal toe te wijzen.

Symbolische modus in Linux

In de absolute modus wijzig je de machtigingen voor alle drie de eigenaren. In de symbolische modus kun je de machtigingen van een specifieke eigenaar wijzigen. Hierbij worden wiskundige symbolen gebruikt om de Unix-bestandsmachtigingen aan te passen.

Operator Beschrijving
+ Voegt een machtiging toe aan een bestand of map
- Verwijdert de toestemming
= Stelt de machtiging in en overschrijft de eerder ingestelde machtigingen.

De verschillende eigenaren worden als volgt weergegeven.

Gebruiker Betekenissen
u gebruiker / eigenaar
g groep
o Overige
a allen

We zullen geen machtigingen in numerieke vorm zoals 755 gebruiken, maar in tekens zoals rwx. Laten we het onderstaande voorbeeld bekijken.

Terminal met symbolische chmod-commando's, waarbij u, g, o en +, -, = worden gebruikt om specifieke machtigingen te wijzigen.

Eigendom en groep wijzigen in Linux

Om het eigenaarschap van een bestand of map te wijzigen, kunt u de volgende opdracht gebruiken:

chown user filename

Als je zowel de gebruiker als de groep voor een bestand of map wilt wijzigen, gebruik dan de volgende opdracht:

chown user:group filename

Laten we dit in actie zien, zoals hieronder weergegeven.

De terminal voert het commando `chown` uit om de eigenaar en groep van een bestand te wijzigen.

Als je alleen de groepseigenaar wilt wijzigen, gebruik dan de volgende opdracht:

chgrp group_name filename

'chgrp' staat voor change group (groep wijzigen). De onderstaande schermafbeelding laat het gebruik van het chgrp-commando zien.

De terminal voert het commando `chgrp` uit om alleen de groepseigenaar van een bestand te wijzigen.

Tip

  • Het bestand /etc/group bevat alle groepen die op het systeem zijn gedefinieerd.
  • Je kunt het commando "groups" gebruiken om alle groepen te vinden waarvan je lid bent, zoals hieronder weergegeven.

Het commando `groups` in de terminal uitvoeren om de groepen weer te geven waartoe de gebruiker behoort.

  • Met het commando newgrp kunt u als lid van een andere groep dan uw standaardgroep werken, zoals hieronder wordt weergegeven.

Terminal voert het commando newgrp uit om naar een andere groep over te schakelen.

  • Je kunt niet toestaan ​​dat twee groepen eigenaar zijn van hetzelfde bestand.
  • In Linux bestaan ​​geen geneste groepen. De ene groep kan geen subgroep zijn van een andere.
  • x — het uitvoeren van een map betekent dat men toestemming krijgt om een ​​map te "betreden" en mogelijk toegang te krijgen tot submappen.
  • Er zijn nog andere machtigingen die u kunt instellen voor bestanden en mappen, die in een latere, meer geavanceerde handleiding aan bod komen.

Veelgestelde vragen

Voeg de uitvoerrechten toe met `chmod`. De symbolische vorm `chmod +x script.sh` geeft iedereen uitvoerrechten, terwijl `chmod u+x script.sh` deze rechten alleen aan de eigenaar geeft. Daarna kunt u het script rechtstreeks uitvoeren met `./script.sh` vanuit de betreffende map.

umask stelt de standaardrechten in die worden verwijderd van nieuw aangemaakte bestanden en mappen. Bestanden beginnen bij 666 en mappen bij 777, waarna de umask-waarde wordt aangepast.tracted. Een veelgebruikte umask van 022 geeft bestanden 644 en mappen 755. Voer umask uit om de huidige waarde te bekijken.

Dit zijn speciale permissiebits. `setuid` voert een programma uit met de rechten van de eigenaar, `setgid` voert het uit met de rechten van de groep of zorgt ervoor dat nieuwe bestanden de groep van een map overnemen, en de `sticky bit` zorgt ervoor dat alleen de eigenaar van een bestand het kan verwijderen binnen een gedeelde map zoals `/tmp`.

Ja. Alleen de rootgebruiker, of een gebruiker die sudo uitvoert, kan de eigenaar van een bestand wijzigen met chown. Een gewone eigenaar kan zijn bestand overdragen aan een groep waartoe hij behoort, maar het toewijzen aan een andere gebruiker vereist rootrechten om veiligheidsredenen.

Die foutmelding betekent dat je niet de rechten hebt om het bestand te wijzigen. Om `chmod` uit te voeren, moet je de eigenaar van het bestand zijn of root-rechten hebben; om `chown` uit te voeren, heb je over het algemeen root-rechten nodig. Voeg `sudo` toe aan het commando, of schakel over naar de eigenaar van het bestand, en probeer het opnieuw.

Gebruik de recursieve -R optie. `chmod -R 755 myfolder` past de machtigingen toe op de map en elk bestand en elke submap daarin, en `chown -R user:group myfolder` doet hetzelfde voor het eigenaarschap. Gebruik -R met zorg, want het heeft invloed op elk item onder de map.

AI-assistenten kunnen een verzoek zoals "maak dit script alleen voor mij uitvoerbaar" vertalen naar het juiste chmod-commando, uitleggen wat een modus zoals 755 betekent en waarschuwen voor risicovolle instellingen zoals 777. Beveiligingstools op basis van machine learning markeren ook bestanden waarvan de machtigingen gevaarlijk ruim lijken.

Ja. GitHub-copiloot Je kunt suggesties krijgen voor chmod-, chown- en chgrp-commando's op basis van een korte opmerking waarin je de gewenste machtigingen of eigenaar beschrijft, en deze automatisch aanvullen terwijl je typt. RevBekijk elke suggestie voordat u deze uitvoert, aangezien wijzigingen in machtigingen en eigendom de beveiliging beïnvloeden.

Vat dit bericht samen met: