Beheer Directory- en Bestandsmachtigingen met chmod Recursief

Ben je het zat om handmatig bestands- en mapmachtigingen te wijzigen? Ben je op zoek naar een snellere, efficiëntere manier om de machtigingen van je bestanden en mappen te wijzigen? Zo ja, dan ben je hier aan het juiste adres, want in dit artikel leer je hoe je bestands- en mapmachtigingen recursief kunt wijzigen met het chmod-commando!

Lees verder om meer te weten te komen!

Vereisten

Om mee te doen, heb je een Linux-apparaat nodig en een map waarvan de bestanden en onderliggende mappen machtigingen hebben die je kunt oefenen.

Kennis opdoen over Linux-gebruikers en groepen

Eigenaren en groepen zijn belangrijk in Linux en zijn noodzakelijk voor het veilig beheren van bestanden en mappen. De eigenaar is degene aan wie een bestand of map is toegewezen, standaard de maker. In Linux behoren bestanden en mappen ook tot groepen. Zowel gebruikers als groepen worden ingesteld via het chown-commando.

In de onderstaande schermafbeelding toont de inhoud die groen is gemarkeerd de gebruiker die eigenaar is van het bestand of de map, mihail in dit voorbeeld. De inhoud die blauw is gemarkeerd, toont aan tot welke groep het bestand of de map behoort, eigendom van de staff-groep in dit voorbeeld.

Listing the owner and group of a set of files and directories

Begrip van Linux-bestands- en mapmachtigingen

Permissies stellen in wat voor acties een gebruiker of groep mag uitvoeren op een gegeven bestand of map. Ze worden aangegeven door een karakterrepresentatie en krijgen ook een numerieke waarde.

  • Lezen (r of 4): Geeft aan of een gebruiker of groep de inhoud van het bestand of de map mag lezen. De leespermissie wordt standaard toegekend aan alle nieuw aangemaakte bestanden en mappen voor alle partijen.
  • Schrijven (w of 2): Geeft aan of een gebruiker of groep de inhoud van een object kan bewerken. Deze permissie wordt standaard alleen toegekend aan de eigenaar van een bestand of map.
  • Uitvoeren (x of 1): Geeft aan of een gebruiker of groep een bestand kan uitvoeren of opdrachten kan uitvoeren binnen een map. De uitvoeringspermissie wordt standaard alleen toegekend aan mappen maar niet aan bestanden.

Als je de gebruiker (u) geen uitvoeringsmachtigingen geeft voor een map, kan deze de inhoud niet bekijken omdat de gebruiker geen opdrachten kan uitvoeren binnen de map!

Een voorbeeld wordt hieronder getoond, de uitvoer van het commando ls -l toont de verschillende soorten machtigingen. Die machtigingen voorafgegaan door de waarde d, geven een map aan.

Listing file and directory permissions

Waarom zijn er dan ogenschijnlijk drie sets machtigingen voor elk object? Door machtigingen op te delen in de onderstaande secties (aangeduid als partijen voor het doel van deze handleiding) wordt een gedetailleerde controle over machtigingen bereikt.

  • Gebruiker (u): De eigenaar van een bestand of map, gemarkeerd in het blauw.
  • Groep (g): Leden van de groep waartoe een bestand of map behoort, gemarkeerd in het groen.
  • Overige (o): Alle extra gebruikers en groepen die niet expliciet zijn toegewezen, gemarkeerd in het rood.
Demonstrating the combined permissions for a file or directory

Het wijzigen van bestandsmachtigingen via het chmod-recursieve commando

Met het juiste begrip van Linux-machtigingen, lees verder om te leren hoe u bestandsmachtigingen wijzigt. Machtigingen worden gewijzigd via het chmod-recursieve commando zoals getoond in de onderstaande voorbeelden.

1. Controleer eerst de huidige machtigingen met het ls -l-commando. Hier wordt het bestand my_dir/index.js getoond.

Checking the current permission of index.js.

2. Voer het chmod-commando uit, waarbij u de partij, a (alle), en de machtigingen, rwx, of lezen/schrijven/uitvoeren, specificeert. Het volledige commando is als volgt: chmod a=rwx index.js.

Changing index.js’ permissions.

3. Zoals u kunt zien, geeft het uitvoeren van chmod recursief geen uitvoer. Om te controleren of de machtigingen zijn gewijzigd, voert u het commando ls -l opnieuw uit.

Verifying index.js permissions

Het instellen van bestandsmachtigingen via numerieke waarden

Onthoud de getallen die zijn gekoppeld aan machtigingen zoals lezen of schrijven? In plaats van de karakterwaarden te specificeren, kunt u specifieke machtigingen opgeven via een getal. Door de waarden toe te voegen, creëert u een specifieke toestemming zoals 6 die een combinatie is van schrijven (2) en lezen (4) machtigingen.

In het onderstaande voorbeeld, stel machtigingen in voor het bestand main.py via het commando chmod 664 main.py. De numerieke waarden worden als volgt onderverdeeld.

  • Gebruiker: Lezen en Schrijven (6).
  • Groep: Lezen en Schrijven (6).
  • Anderen: Lezen (4).
Changing permissions for main.py.

Zodra de machtigingen zijn gewijzigd, controleert u de nieuwe machtigingen voor het bestand main.py met het commando ls -l.

Verifying permissions for main.py

Machtigingen verwijderen en toevoegen

De niet-numerieke opdrachten die u tot nu toe hebt uitgevoerd, gebruikten de toekenningsparameter (=) met chmod recursief, om expliciete machtigingen in te stellen. In plaats daarvan kunt u machtigingen verwijderen (-) of toevoegen (+) aan bestaande machtigingsreeksen.

1. Lijst eerst de bestaande machtigingen op voor het bestand README.md via het commando ls -l README.md.

Checking README.md current permissions

2. Voeg vervolgens (+) uitvoer (x) machtigingen toe aan de gebruikerspartij (u), terwijl u (-) lees (r) machtigingen verwijdert van de andere partij (o) voor README.md, met het volgende commando chmod u+x,o-r README.md. Verschillende partijmachtigingen worden gescheiden door komma’s (,).

Changing README.md permissions

3. Voer het commando ls -l README.md uit om te controleren of de machtigingen zijn gewijzigd.

Checking README.md new permissions

Machtigingen recursief wijzigen voor bestanden en mappen

Hoewel je vooruitgang boekt, werk je nog steeds maar aan één bestand tegelijk. Wat als je een groot aantal bestanden moet wijzigen? Het is tijd om je spel op te voeren en te leren hoe je machtigingen kunt wijzigen voor meerdere bestanden.

Een van de opties om meerdere bestanden te wijzigen is om chmod recursief uit te voeren met de -R (recursief, en niet in hoofdletters) optie. De recursieve optie zal de machtigingen wijzigen voor alle bestanden, inclusief die onder submappen, binnen een opgegeven pad.

1. Overweeg het volgende commando, chmod -R a=r,u=rwx my_dir. De meeste opties heb je al eerder gezien.

Dit commando zal de machtigingen wijzigen voor alle bestanden in de map, my_dir en submappen, via de recursieve optie (-R). De bestanden worden leesbaar (r) gemaakt voor iedereen (a), met verschillende machtigingen voor de huidige gebruiker (u) ingesteld op volledige toegangsrechten (lezen, schrijven, uitvoeren).

In de onderstaande screenshot zie je de resulterende machtigingen na het uitvoeren van het commando, dat geen resulterende output heeft.

Checking my_dir files new permissions

2. Stel dat je het commando uitvoert, chmod -R a=rwx my_dir, in dezelfde map als eerder, my_dir. Opnieuw wijzig je alle bestanden in my_dir, en de submappen, om allemaal (a) volledige toegangsrechten (lezen, schrijven, uitvoeren) te geven. Hier is het resultaat van het commando, aangezien chmod recursief geen output weergeeft.

Checking my_dir files new permissions to confirm every part now has every permission

3. Hoe zit het met de numerieke methode? Zoals hieronder getoond, werkt de recursieve methode ook met numerieke rechten, chmod -R 770 my_dir. Hiermee geeft u volledige machtigingen aan de gebruiker en groep, maar geen machtigingen aan de andere partij.

Recursively changing permissions with the numeric method

4. Voer ls -l uit om te controleren of de machtigingen van bestanden en submappen van my_dir zijn ingesteld met de numerieke methode.

Checking the permissions set once again, this time with the numeric method

Het definiëren van bestands- en mapgedrag via speciale machtigingen

Speciale machtigingen maken verschillende extra privileges mogelijk die uniek zijn voor de standaard toestemmingsreeksen. Er zijn drie speciale machtigingen. Hier leest u hoe deze speciale machtigingen werken en hoe u ze kunt toevoegen aan een bestand of map.

Het instellen van de SUID (Gebruiker + S) Machtigingen

Vaak aangeduid als SUID, het is een speciale machtiging voor de gebruiker. De SUID heeft één functie: een bestand met SUID wordt altijd uitgevoerd als de gebruiker die het bestand bezit, ongeacht wie het bestand uitvoert.

Bijvoorbeeld, neem index.js. Om de extra SUID machtiging te geven, voert u chmod u+s index.js uit.

Als u nu ls -l index.js uitvoert, zult u zien dat de gebruiker een s in hun machtigingen heeft in plaats van een x.

Checking index.js new permissions

Het instellen van de SGID (Groep + S) Machtigingen

Vaak aangeduid als SGID, deze speciale machtiging heeft twee functies:

  • Indien ingesteld voor een bestand, staat het toe dat het bestand wordt uitgevoerd als de groep die het bestand bezit, ongeacht wie het bestand uitvoert.
  • Als een directory is ingesteld, zullen alle bestanden die in de directory worden gemaakt, hun groepseigendom instellen op dat van de eigenaar van de directory.

Praktijk op het bestand index.php. Voeg de SGID toestemming toe aan dit bestand met de volgende opdracht: chmod g+s index.php.

Als je nu ls -l index.php uitvoert, zul je zien dat de groep een s heeft in hun machtigingen.

Checking index.php new permissions

Ga verder naar een directory: my_dir. Je kunt de SGID toestemming aan deze directory toevoegen met de volgende opdracht: chmod g+s my_dir. Alle bestanden die in deze directory worden gemaakt, zullen nu hun groepseigendom instellen op de eigenaar van de directory. Je kunt de nieuwe machtigingen van de directory controleren met ls -ld my_dir (de parameter d beperkt de uitvoer tot alleen directories).

Checking my_dir new permissions

Het veranderen van de Sticky Bit Toestemming

De laatste speciale toestemming staat ook bekend als de “sticky bit”. Deze toestemming heeft geen invloed op individuele bestanden. Maar op het niveau van de directory beperkt het het verwijderen van bestanden. Alleen de eigenaar van een bestand kan een bestand binnen die directory verwijderen.

Voeg het sticky bit toe aan de oude vertrouwde my_dir directory. Doe dat door de opdracht als volgt uit te voeren: chmod +t my_dir.

Merk op dat om het sticky bit toe te voegen, je niet de andere groep(o) voor +t aangeeft.

Wanneer je de nieuwe toestemmingen van my_dir controleert, zie je een hoofdletter T in de andere toestemmingen, zoals getoond in de onderstaande schermafbeelding.

Checking my_dir new and special permissions

Eindconclusie

Gefeliciteerd! Je hebt veel onderwerpen behandeld over het recursief gebruik van chmod. Je bent nu klaar om alle vervelende permissieproblemen aan te pakken die kunnen ontstaan met de machtige chmod-tool. Je hebt zelfs geleerd hoe je de kracht van de recursieve (-R) optie kunt benutten.

Hoe ben je van plan om de veelzijdige functionaliteit van chmod volgende keer in je voordeel te gebruiken wanneer je bestands- of mapmachtigingen moet beheren?

Source:
https://adamtheautomator.com/chmod-recursive/