Ik heb de afgelopen maanden een cursus Linux gevolgd en een aspect van Linux dat me altijd in verwarring bracht, was hoe machtigingen werkten. Toen ik bijvoorbeeld één keer een bestand naar mijn webserver uploadde en een foutmelding kreeg, kreeg mijn webhost van mij de opdracht de bestandsmachtigingen in 755 te veranderen.
Ik had geen idee wat dat betekende, hoewel het wijzigen van de rechten het probleem oploste. Ik heb me nu gerealiseerd dat Linux-rechten niet zo ingewikkeld zijn, je moet gewoon het systeem begrijpen. In dit artikel zal ik het hebben over Linux-rechten op een hoog niveau en laten zien hoe je de opdracht chmod gebruikt om de machtigingen voor bestanden en mappen te wijzigen.
Linux-machtigingen en -niveaus
In Linux zijn er in principe drie permissies waar je normaal gesproken zorgen over zult maken: read, write en execute. Alle drie zijn vrij duidelijk. Wanneer deze rechten nu op een bestand worden toegepast, worden ze in niveaus toegepast.
Er zijn drie niveaus van machtigingen onder Linux: eigenaar, groep en andere. De eigenaar is de gebruiker die eigenaar is van het bestand / de map, de groep bevat andere gebruikers in de groep van het bestand en de andere vertegenwoordigt alleen alle andere gebruikers die niet de eigenaar of de groep zijn.
Lezen, schrijven en uitvoeren worden weergegeven als symbolische tekens of als octale getallen. Als u bijvoorbeeld een ls -l in een map met enkele bestanden uitvoert, ziet u de symbolische tekenweergave van de machtigingen.
De rechten worden als volgt geschreven: het eerste bit is een streepje of de letter d. Dash betekent dat het een bestand is en d staat voor directory. Merk op dat het eerste bit ook een l kan zijn als de bestandsnaam een koppeling is. Vervolgens zijn er drie groepen van drie bits. Het eerste bit in elke groep is voor lezen, het tweede bit is voor schrijven en het derde bit is voor uitvoering. De eerste drie bits zijn voor de eigenaar, de tweede drie bits zijn voor de groep en de derde drie bits voor de andere. Hier is een meer visuele uitleg.
Als u een streepje in plaats van een letter ziet, betekent dit dat de eigenaar, groep of alle andere gebruikers die toestemming niet hebben. In het bovenstaande voorbeeld hebben de eigenaar, de groep en alle anderen lees- en uitvoerrechten gelezen.
Als u de uitvoer van de opdracht ls -l bekijkt, ziet u dat mijn oefenstekstbestand de volgende machtigingen heeft:
-rw-rw-rw-
Dit betekent dat iedereen alleen lees- / schrijfrechten voor het bestand heeft. Hier is nog een voorbeeld:
drwxr - r--
Kijkend naar het eerste bit, kunnen we zien dat de permissies voor een map zijn. De eigenaar heeft lees- / schrijf- / uitvoerrechten, maar de groep en andere gebruikers hebben alleen leesrechten.
Octale nummerweergave
Dus dat is hoe permissies worden weergegeven in Linux met behulp van symbolen. De tweede manier om dezelfde machtigingen weer te geven, is door octale nummers te gebruiken. Wanneer we later de opdracht chmod gebruiken, ziet u dat u de machtigingen kunt wijzigen met behulp van symbolen of octale getallen.
Dus hoe staat Linux voor lezen, schrijven en uitvoeren met octale nummers? Kort gezegd, het kent gewoon een nummer toe aan elke toestemming zoals hieronder getoond.
De leesmachtiging wordt vertegenwoordigd door 4, schrijf door 2 en voer met 1 uit. U hoeft ze alleen maar toe te voegen om de octale toestemming te krijgen. Laten we bijvoorbeeld het bovenstaande voorbeeld nemen waarin iedereen alle machtigingen heeft:
-rwxrwxrwx
De eigenaar heeft rwx, dus we zullen 4 + 2 + 1 toevoegen om een waarde van 7 te krijgen. We doen hetzelfde voor groep en hetzelfde voor anderen. De uiteindelijke octale waarde is 777. Laten we het voorbeeld bekijken waarin we alleen lees- / schrijfrechten hebben gegeven:
-rw-rw-rw-
Het eerste octale getal is 4 + 2 omdat we lezen en schrijven toevoegen. De tweede zal hetzelfde zijn als het derde octale getal. Hier hebben we een definitieve octale waarde van 666.
Laten we het nu op de andere manier proberen. Stel dat we willen weten welke machtigingen 755 vertegenwoordigt? Nou, het is vrij eenvoudig om erachter te komen of je het opdelen door individuele nummers. Het eerste nummer is 7, die we alleen kunnen krijgen door 4 + 2 + 1 toe te voegen, wat betekent dat de eigenaar de machtiging lezen / schrijven / uitvoeren heeft. Vijf kunnen alleen worden verkregen door 4 + 1 toe te voegen, wat betekent dat de groep en andere gebruikers machtigingen hebben gelezen en uitgevoerd.
Hopelijk is dat een goede verklaring voor het vertegenwoordigen van permissies in Linux met behulp van octale getallen. Het is over het algemeen vrij eenvoudig.
Chmod gebruiken om rechten te wijzigen
Nu we begrijpen hoe we machtigingen moeten lezen, laten we het hebben over hoe we ze kunnen wijzigen. Het makkelijkste hulpmiddel om voor dit doel te gebruiken is het chmod-commando. Dit is hoe het werkt. De beste manier om het commando uit te leggen is om een voorbeeld te doorlopen.
Laten we beginnen met de toestemmingen waar we het eerder over hadden, namelijk:
-rw-rw-rw-
Als we de execute-toestemming voor eigenaar, groep en andere wilden toevoegen, konden we dit op twee manieren doen. We zouden de symboolmethode of de octale methode kunnen gebruiken. Voor de symboolmethode zouden we het volgende doen, zoals hieronder getoond:
Het exacte commando is
chmod a + x bestandsnaam
De syntaxis is als volgt: de letter of letters die de eigenaar ( u ), groep ( g ), andere ( o ) of alle ( a ) voorstellen, gevolgd door een + voor het toevoegen van machtigingen of een - voor het wegnemen van machtigingen en vervolgens de letter voor de toestemming ( r voor lezen, w voor schrijven en x voor uitvoeren).
In het bovenstaande voorbeeld heb ik de execute-machtiging voor alle gebruikers toegevoegd. Het resultaat zoals u kunt zien in de bovenstaande schermafbeelding is een x voor eigenaar, groep en andere. Laten we nu zeggen dat ik de machtigingen voor schrijven en uitvoeren wilde verwijderen voor alleen de groep en andere gebruikers.
Zoals je hier kunt zien, gebruikte ik het volgende commando om dit te bereiken:
chmod go-wx bestandsnaam
Omdat ik de rechten voor groep en andere wil wijzigen, gebruik ik de letter g en de letter o . Ik wil machtigingen verwijderen, dus gebruik ik het - teken. Ten slotte wil ik de schrijf- en uitvoeringsmachtigingen verwijderen, dus gebruik ik w en x . Hier is een handige kleine tafel voor symboolgebruik:
Dus dat is alles wat er is om de symboolmethode te gebruiken. Laten we het nu hebben over de octale methode, die ik een beetje gemakkelijker vind. Octal is leuk omdat je alle rechten in één keer kunt toevoegen of verwijderen.
Als we beginnen met de volgende rechten op een bestand, laten we zien hoe we ze kunnen wijzigen met behulp van de octale methode:
-rw-rw-rw-
Hierboven kunt u zien dat ik de volgende opdracht heb gebruikt:
chmod 744 bestandsnaam
Dit zegt in feite dat de eigenaar de machtiging lezen / schrijven / uitvoeren krijgt en dat de groep en andere alleen leestoestemming krijgt. Zoals u kunt zien, is het eenvoudig om rechten toe te voegen of te verwijderen in één eenvoudige opdracht. Laten we doorgaan en zeggen dat ik de rechten opnieuw wil wijzigen.
Nu heb ik het volgende commando gebruikt, wederom een heel eenvoudige:
chmod 640 bestandsnaam
Hier hebben we de eigenaar lees- / schrijfrechten gegeven, alleen de leesmachtiging voor de groep en de andere groep geen machtigingen. U gebruikt een nul om geen machtigingen aan te duiden. Best simpel, toch?
Kortom, dit is een heel eenvoudig overzicht van Linux-toestemmingen en het kan een stuk ingewikkelder worden, maar voor beginners is het een goede plek om te beginnen. Ik zal in de toekomst meer artikelen over meer geavanceerde rechten plaatsen. Als je vragen hebt, reageer dan gerust. Genieten!