Hoe werken Linux-bestandsmachtigingen?
Als je Linux al een tijdje (en zelfs OS X) gebruikt, kom je waarschijnlijk een "permissies" -fout tegen. Maar wat zijn ze precies en waarom zijn ze nodig of nuttig? Laten we een kijkje nemen binnenin.
Gebruikersrechten
Vroeger waren computers enorme machines die ongelooflijk duur waren. Om het meeste uit hen te halen, werden meerdere computerterminals aangesloten, waardoor veel gebruikers tegelijkertijd hun werk konden doen. Gegevensverwerking en opslag gebeurde op de machine, terwijl de terminals zelf niet veel meer waren dan een manier om gegevens te bekijken en in te voeren. Als je erover nadenkt, is het ongeveer hoe we toegang hebben tot gegevens over de "cloud"; kijk naar Amazon's Cloud MP3-systeem, Gmail en Dropbox, en je zult zien dat terwijl veranderingen lokaal kunnen worden aangebracht, alles op afstand wordt opgeslagen.
(Afbeelding: Zenith Z-19 "domme" terminal; credit: ajmexico)
Om dit te laten werken, moeten individuele gebruikers een account hebben. Ze moeten een gedeelte van het opslaggebied toegewezen krijgen en ze moeten de mogelijkheid krijgen om commando's en programma's uit te voeren. Iedereen krijgt specifieke "gebruikersrechten", wat dicteert wat ze wel en niet kunnen doen, waar ze op het systeem terechtkomen en waartoe ze geen toegang hebben en van welke bestanden ze wel en niet kunnen wijzigen. Elke gebruiker wordt ook in verschillende groepen geplaatst, die verdere toegang verlenen of beperken.
Toegang tot bestanden
In deze gekke wereld met meerdere gebruikers hebben we al grenzen gesteld aan wat gebruikers kunnen doen. Maar hoe zit het met waar ze toegang toe hebben? Welnu, elk bestand heeft een set machtigingen en een eigenaar. De eigenaar-aanduiding, meestal gebonden wanneer het bestand wordt gemaakt, geeft aan tot welke gebruiker het behoort, en alleen die gebruiker kan zijn toegangsrechten wijzigen.
In de wereld van Linux worden machtigingen opgesplitst in drie categorieën: lezen, schrijven en uitvoeren. "Lezen" toegang geeft iemand de mogelijkheid om de inhoud van een bestand te bekijken, "schrijven" toegang stelt iemand in staat de inhoud van een bestand aan te passen, en "uitvoeren" laat toe om een reeks instructies uit te voeren, zoals een script of een programma. Elk van deze categorieën wordt toegepast op verschillende klassen: gebruiker, groep en wereld. "Gebruiker" betekent de eigenaar, "groep" betekent elke gebruiker die zich in dezelfde groep als de eigenaar bevindt, en "wereld" betekent iedereen en iedereen.
Mappen kunnen ook worden beperkt met deze machtigingen. U kunt bijvoorbeeld andere mensen in uw groep toestaan om mappen en bestanden in uw thuismap te bekijken, maar niet iedereen buiten uw groep. U wilt waarschijnlijk de "schrijf" -toegang beperken tot alleen uzelf, tenzij u aan een gedeeld project van een of andere soort werkt. U kunt ook een gedeelde map maken waarmee iedereen bestanden in die map kan bekijken en wijzigen.
Rechten wijzigen in Ubuntu
GUI
Als u de rechten van een bestand waarvan u de eigenaar bent in Ubuntu wilt wijzigen, klikt u met de rechtermuisknop op het bestand en gaat u naar 'Eigenschappen'.
U kunt wijzigen of de eigenaar, groep of anderen kunnen lezen en schrijven, alleen kunnen lezen of niets kunnen doen. U kunt ook een vakje aanvinken om uitvoering van het bestand toe te staan, en dit zal het tegelijkertijd inschakelen voor de Eigenaar, Groep en anderen.
Opdrachtregel
U kunt dit ook doen via de opdrachtregel. Ga naar een map die bestanden bevat en typ de volgende opdracht om alle bestanden in een lijst te bekijken:
ls -al
Naast elk bestand en elke map, ziet u een speciale sectie waarin de rechten worden beschreven die het heeft. Het ziet er zo uit:
-rwxrw-r-
De r staat voor "lezen", de w staat voor "schrijven" en de X staat voor "execute". Directories starten met een "d" in plaats van een "-". Je zult ook opmerken dat er 10 spaties zijn die waarde houden. Je kunt de eerste negeren en dan zijn er 3 sets van 3. De eerste set is voor de eigenaar, de tweede set voor de groep en de laatste set voor de wereld..
Om de rechten van een bestand of map te wijzigen, laten we de basisvorm van de opdracht chmod bekijken.
chmod [class] [operator] [permissie] bestand
chmod [ugoa] [+ of -] [rwx] bestand
Dit lijkt in eerste instantie ingewikkeld, maar geloof me, het is vrij eenvoudig. Laten we eerst de klassen bekijken:
- u: dit is voor de eigenaar.
- g: dit is voor de groep.
- o: Dit is voor alle anderen.
- a: Dit zal toestemmingen voor al het bovenstaande veranderen.
Vervolgens hebben de operators:
- +: Het plusteken voegt de volgende toestemmingen toe.
- -: Het minteken verwijdert de volgende machtigingen.
Nog steeds bij me? En de laatste sectie is hetzelfde als toen we de rechten van een bestand controleerden:
- r: biedt leestoegang.
- w: biedt schrijftoegang.
- x: laat uitvoering toe.
Laten we het samenvoegen. Laten we zeggen dat we een bestand met de naam "todo.txt" hebben met de volgende rechten:
-rw-rw-r-
Dat wil zeggen, de eigenaar en groep kunnen lezen en schrijven en de wereld kan alleen lezen. We willen de machtigingen voor deze wijzigen:
-rwxr-
Dat wil zeggen, de eigenaar heeft volledige rechten en de groep kan lezen. We kunnen dit in 3 stappen doen. Eerst voegen we de uitvoeringsmachtiging voor de gebruiker toe.
chmod u + x todo.txt
Vervolgens verwijderen we de schrijfmachtiging voor de groep.
chmod g-w todo.txt
Ten slotte verwijderen we de leesrechten voor alle andere gebruikers.
chmod o-r todo.txt
We kunnen deze ook combineren in één opdracht, zoals zo:
chmod u + x, g-w, o-r todo.txt
Je kunt zien dat elke sectie wordt gescheiden door komma's en dat er geen spaties zijn.
Hier zijn enkele bruikbare rechten:
- -rwxr-xr-x: De eigenaar heeft volledige rechten, de groep en andere gebruikers kunnen de bestandsinhoud lezen en uitvoeren.
- -rwxr-r-: Eigenaar heeft volledige rechten, groeps- en andere gebruikers kunnen alleen bestand lezen (handig als u het niet erg vindt dat anderen uw bestanden bekijken).
- -rwx-: Eigenaar heeft volledige rechten, alle anderen hebben geen rechten (handig voor persoonlijke scripts).
- -rw-rw--: Eigenaar en groep kunnen lezen en schrijven (handig voor samenwerking met groepsleden).
- -rw-r-r-: Eigenaar kan lezen en schrijven, groeperen en andere gebruikers kunnen alleen bestand lezen (handig voor het opslaan van persoonlijke bestanden op een gedeeld netwerk).
- -rw--: Eigenaar kan lezen en schrijven, alle anderen hebben geen (handig voor het opslaan van persoonlijke bestanden).
Er zijn een paar andere dingen die je kunt doen met chmod - zoals setuid en setgid - maar ze zijn een beetje diepgaand en de meeste gebruikers zullen het toch niet echt nodig hebben om ze te gebruiken.
De root- of supergebruikers- en systeembestanden
Tegenwoordig gebruiken we niet altijd systemen met meerdere gebruikers. Waarom zouden we ons nog steeds zorgen maken over permissies??
Welnu, Unix en zijn afgeleiden - onder andere Linux, OS X - maken ook een onderscheid tussen dingen die door de gebruiker worden uitgevoerd, dingen die door een beheerder worden uitgevoerd of met beheerdersrechten en dingen die door het systeem zelf worden uitgevoerd. Als zodanig hebben dingen die integraal zijn voor het systeem, beheerdersrechten nodig om te worden gewijzigd of gebruikt. Op deze manier verknoei je niets per ongeluk.
In Ubuntu, om wijzigingen aan te brengen in systeembestanden, gebruikt u "sudo" of "gksudo" om het equivalent van beheerdersrechten te krijgen. In andere distributies schakelt u over naar "root" of de "supergebruiker" die feitelijk hetzelfde doet totdat u uitlogt.
Houd er rekening mee dat onder beide omstandigheden het wijzigen van bestandsmachtigingen kan leiden tot programma's die niet werken, onbedoeld het wijzigen van het bestandseigendom naar de rootgebruiker (in plaats van de eigenaar) en het systeem minder veilig maken (door meer machtigingen te verlenen). Daarom is het aan te raden om de machtigingen voor bestanden - met name systeembestanden - niet te wijzigen, tenzij dit nodig is of als u weet wat u doet.
Bestandsrechten zijn aanwezig om een basissysteem van beveiliging onder gebruikers te bieden. Door te leren hoe ze werken, kun je eenvoudig delen in een omgeving met meerdere gebruikers opzetten, "openbare" bestanden beschermen en je een idee geven wanneer er iets mis gaat met het eigendom van het systeembestand.
Denk je dat je dingen makkelijker kunt uitleggen? Heb je een correctie? Wil je terugdenken aan de oude tijd? Neem een pauze en zet uw gedachten neer in de commentaren.