Inleiding
Linux is, per definitie, een multi-user besturingssysteem dat gebaseerd is op de Unix-concepten van bestandseigenaarschap en machtigingen om beveiliging op het niveau van het bestandssysteem te bieden. Om betrouwbaar een cloudserver te beheren, is het essentieel dat je een goed begrip hebt van hoe eigenaarschap en machtigingen werken. Er zijn veel nuances bij het omgaan met bestandseigenaarschap en machtigingen, maar deze handleiding zal een goede introductie bieden.
Deze handleiding zal behandelen hoe je Linux-eigenaarschap en machtigingen kunt bekijken en begrijpen. Als je op zoek bent naar een handleiding over hoe je machtigingen kunt wijzigen, kun je Linux Machtigingsbeginselen en Hoe Umask te Gebruiken op een VPS lezen.
Vereisten
Zorg ervoor dat je de concepten begrijpt die behandeld worden in de eerdere handleidingen in deze serie:
Om deze handleiding te volgen, heb je toegang nodig tot een cloudserver. Je kunt deze handleiding volgen voor het aanmaken van een DigitalOcean-droplet.
Over Gebruikers
Zoals vermeld in de inleiding, is Linux een multi-gebruikerssysteem. Je moet de basisprincipes van Linux gebruikers en groepen begrijpen voordat je begint over eigenaarschap en machtigingen, omdat zij de entiteiten zijn waarop het eigenaarschap en de machtigingen van toepassing zijn. Laten we beginnen met wat gebruikers zijn.
In Linux zijn er twee soorten gebruikers: systeemgebruikers en reguliere gebruikers. Traditioneel worden systeemgebruikers gebruikt om niet-interactieve of achtergrondprocessen op een systeem uit te voeren, terwijl reguliere gebruikers worden gebruikt om in te loggen en interactief processen uit te voeren. Wanneer je voor het eerst een Linux-systeem initialiseert en inlogt, zul je merken dat het begint met veel systeemgebruikers die al zijn aangemaakt om de services uit te voeren waar het besturingssysteem van afhankelijk is. Dit is normaal.
Je kunt alle gebruikers op een systeem bekijken door naar de inhoud van het bestand /etc/passwd
te kijken. Elke regel in dit bestand bevat informatie over een enkele gebruiker, te beginnen met zijn gebruikersnaam (de naam voor het eerste :
). Je kunt de inhoud van het passwd
-bestand afdrukken met cat
:
Output…
sshd:x:109:65534::/run/sshd:/usr/sbin/nologin
landscape:x:110:115::/var/lib/landscape:/usr/sbin/nologin
pollinate:x:111:1::/var/cache/pollinate:/bin/false
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false
vault:x:997:997::/home/vault:/bin/bash
stunnel4:x:112:119::/var/run/stunnel4:/usr/sbin/nologin
sammy:x:1001:1002::/home/sammy:/bin/sh
Supergebruiker
Naast de twee gebruikerstypen is er de supergebruiker, of root-gebruiker, die de mogelijkheid heeft om alle bestandseigenaarschap- en toestemmingsbeperkingen te omzeilen. In de praktijk betekent dit dat de supergebruiker rechten heeft om alles op zijn eigen server te benaderen. Deze gebruiker wordt gebruikt om wijzigingen op systeemniveau aan te brengen.
Het is ook mogelijk om andere gebruikersaccounts te configureren met de mogelijkheid om “supergebruikersrechten” aan te nemen. Dit wordt vaak aangeduid als het hebben van sudo
, omdat gebruikers die toestemming hebben om tijdelijk supergebruikersrechten te verkrijgen dit doen door beheerdersniveau-opdrachten vooraf te laten gaan door sudo
. Sterker nog, het is een goede praktijk om een normale gebruiker aan te maken die sudo
-rechten heeft voor systeembeheertaken. Op deze manier kunt u voorzichtiger zijn in het gebruik van het rootgebruikersaccount.
Over Groepen
Groepen zijn verzamelingen van nul of meer gebruikers. Een gebruiker behoort tot een standaardgroep en kan ook lid zijn van een van de andere groepen op een server.
U kunt alle groepen op het systeem en hun leden bekijken door te kijken in het bestand /etc/group
, net zoals u zou doen met /etc/passwd
voor gebruikers. Dit artikel behandelt geen groepsbeheer.
Nu je weet wat gebruikers en groepen zijn, laten we het hebben over bestandseigenaarschap en -machtigingen!
Ownership en Machtigingen Bekijken
In Linux is elk bestand eigendom van een enkele gebruiker en een enkele groep, en heeft het zijn eigen toegangsmachtigingen. Laten we eens kijken hoe je het eigendom en de machtigingen van een bestand kunt bekijken.
De meest gebruikelijke manier om de machtigingen van een bestand te bekijken, is door ls
te gebruiken met de optie voor een lange lijst -l
, bijvoorbeeld ls -l myfile
. Als je de machtigingen van alle bestanden in je huidige directory wilt bekijken, voer dan het commando uit zonder het argument myfile
, zoals dit:
Let op: Als je in een lege thuismap bent en nog geen bestanden hebt gemaakt om te bekijken, kun je meedoen door de inhoud van de map /etc
op te lijsten met dit commando: ls -l /etc
Hier is een voorbeeldscreenshot van de uitvoer van ls -l
, met labels van elke kolom van de uitvoer:
Elk bestand vermeldt zijn modus (die de machtigingen bevat), eigenaar, groep en naam. Om uit te leggen wat al die letters en streepjes betekenen, zullen we de kolom modus opsplitsen in zijn componenten.
Begrijpingsmodus
Om uit te leggen wat alle groeperingen en letters betekenen, hier is een uitleg van de modusmetadata van het eerste bestand in het bovenstaande voorbeeld:
Bestandstype
In Linux zijn er twee soorten bestanden: normaal en speciaal. Het bestandstype wordt aangegeven door het eerste karakter van de modus van een bestand – in deze handleiding wordt dit het “bestandstypeveld” genoemd.
Normale bestanden kunnen worden geïdentificeerd door een koppelteken (-
) in hun bestandstypevelden. Normale bestanden kunnen gegevens of iets anders bevatten. Ze worden normaal of regulier genoemd om ze te onderscheiden van speciale bestanden.
Speciale bestanden kunnen worden geïdentificeerd door een niet-koppeltekenkarakter, zoals een letter, in hun bestandstypevelden, en worden door het besturingssysteem anders behandeld dan normale bestanden. Het karakter dat verschijnt in het bestandstypeveld geeft aan wat voor soort speciaal bestand een bepaald bestand is. Een map, bijvoorbeeld, die het meest voorkomende type speciaal bestand is, wordt geïdentificeerd door het karakter d
dat verschijnt in zijn bestandstypeveld (zoals in de vorige schermafbeelding). Er zijn verschillende andere soorten speciale bestanden.
Machtigingsklassen
Vanuit het diagram kun je zien dat de modus-kolom het bestandstype aangeeft, gevolgd door drie triades of klassen van machtigingen: gebruiker (eigenaar), groep en overige. De volgorde van de klassen is consistent op alle Linux-systemen.
De drie machtigingsklassen werken als volgt:
- Gebruiker: De eigenaar van een bestand behoort tot deze klasse.
- Groep: De leden van de groep van het bestand behoren tot deze klasse. Groepsmachtigingen zijn een handige manier om machtigingen voor een gegeven bestand toe te wijzen aan meerdere gebruikers.
- Overige: Eventuele gebruikers die geen deel uitmaken van de gebruiker of groep klassen voor dit bestand behoren tot deze klasse.
Symbolische machtigingen lezen
Het volgende waar je op moet letten zijn die sets van drie tekens. Ze geven de machtigingen, in symbolische vorm, aan die elke klasse heeft voor een gegeven bestand.
In elke triade worden lees-, schrijf- en uitvoermachtigingen als volgt weergegeven:
- Lezen: Aangegeven door een
r
op de eerste positie - Schrijven: Aangegeven door een
w
op de tweede positie - Uitvoeren: Aangegeven door een
x
op de derde positie. In sommige speciale gevallen kan hier een ander karakter staan
A hyphen (-
) in the place of one of these characters indicates that the respective permission is not available for the respective class. For example, if the group (second) triad for a file is r--
, the file is “read-only” to the group that is associated with the file.
Begrijpen Lezen, Schrijven, Uitvoeren
Nu je weet hoe je de rechten van een bestand moet lezen, moet je weten wat elke rechten daadwerkelijk toestaan aan gebruikers. Deze tutorial zal elke rechten individueel behandelen, maar houd in gedachten dat ze vaak in combinatie met elkaar worden gebruikt om nuttige toegang tot bestanden en mappen mogelijk te maken.
Hier is een uiteenzetting van de toegang die de drie soorten rechten verlenen aan gebruikers:
Lezen
Voor een normaal bestand staat leesrechten toe dat een gebruiker de inhoud van het bestand kan bekijken.
Voor een map staat leesrechten toe dat een gebruiker de namen van de bestanden in de map kan bekijken.
Schrijven
Voor een normaal bestand staat schrijfrechten toe dat een gebruiker het bestand kan wijzigen en verwijderen.
Voor een directory staat schrijfrechten toe aan een gebruiker om de directory te verwijderen, de inhoud ervan te wijzigen (bestanden maken, verwijderen en hernoemen) en de inhoud van bestanden te wijzigen waarvoor de gebruiker schrijfrechten heeft.
Uitvoeren
Voor een normaal bestand staat uitvoeringsrechten toe aan een gebruiker om een bestand uit te voeren — de gebruiker moet ook leesrechten hebben. Uitvoeringsrechten moeten worden ingesteld voor uitvoerbare programma’s en shellscripts voordat een gebruiker ze kan uitvoeren.
Voor een directory staan uitvoeringsrechten toe aan een gebruiker om toegang te krijgen tot, of erin te navigeren (d.w.z. cd
) en metadata over bestanden in de directory te bekijken (de informatie die wordt vermeld in een ls -l
).
Voorbeelden van Modi (en Rechten)
Nu je weet hoe je de modus van een bestand moet lezen, en de betekenis van elke toestemming begrijpt, zie je een paar voorbeelden van veelvoorkomende modi, met korte uitleg, om de concepten samen te brengen.
-rw-------
: Een bestand dat alleen toegankelijk is voor de eigenaar ervan-rwxr-xr-x
: Een bestand dat uitvoerbaar is voor elke gebruiker op het systeem. Een “wereldwijd uitvoerbaar” bestand-rw-rw-rw-
: Een bestand dat open staat voor wijziging door elke gebruiker op het systeem. Een “wereldwijd beschrijfbaar” bestanddrwxr-xr-x
: Een directory die door elke gebruiker op het systeem kan worden gelezen en geopenddrwxrwx---
: Een directory die aanpasbaar is (inclusief de inhoud) door de eigenaar en de groepdrwxr-x---
: Een directory die toegankelijk is voor de groep
De eigenaar van een bestand geniet meestal de meeste rechten, in vergelijking met de andere twee klassen. Meestal zul je zien dat de groep en andere klassen slechts een subset van de rechten van de eigenaar hebben (gelijkwaardig of minder). Dit is logisch omdat bestanden alleen toegankelijk moeten zijn voor gebruikers die ze nodig hebben om een specifieke reden.
Nog iets om op te merken is dat hoewel veel combinaties van rechten mogelijk zijn, alleen bepaalde zinvol zijn in de meeste situaties. Bijvoorbeeld, schrijf of uitvoer toegang wordt bijna altijd vergezeld door lees toegang, aangezien het moeilijk is om iets te wijzigen en onmogelijk om iets uit te voeren wat je niet kunt lezen.
Conclusie
Je zou nu een goed begrip moeten hebben van hoe eigendom en rechten werken in Linux. Om te leren hoe je deze rechten kunt wijzigen met behulp van chown
, chgrp
, en chmod
, raadpleeg Linux Permissions Basics and How to Use Umask on a VPS.
Als je meer wilt weten over de fundamentele aspecten van Linux, lees dan de volgende tutorial in deze serie, Een Inleiding tot Linux I/O Omleiding.
Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-linux-permissions