Android

Chmod commando in linux (bestandsrechten)

EXPLAINED: How to use "chmod" command [COMPLETE GUIDE]

EXPLAINED: How to use "chmod" command [COMPLETE GUIDE]

Inhoudsopgave:

Anonim

In Linux wordt toegang tot de bestanden beheerd via de bestandsrechten, attributen en eigendom. Dit zorgt ervoor dat alleen geautoriseerde gebruikers en processen toegang hebben tot bestanden en mappen.

Deze tutorial behandelt het gebruik van de opdracht chmod om de toegangsrechten van bestanden en mappen te wijzigen.

Linux bestandsrechten

Laten we, voordat we verder gaan, het basismodel voor Linux-machtigingen uitleggen.

In Linux is elk bestand gekoppeld aan een eigenaar en een groep en toegewezen aan toegangstoegangsrechten voor drie verschillende klassen gebruikers:

  • De eigenaar van het bestand. De groepsleden. Anderen (alle anderen).

Bestandseigendom kan worden gewijzigd met de opdrachten chown en chgrp .

Er zijn drie soorten bestandstoestemmingen die op elke klasse van toepassing zijn:

  • De leesrechten. De schrijfrechten. De machtiging uitvoeren.

Met dit concept kunt u opgeven welke gebruikers het bestand mogen lezen, naar het bestand kunnen schrijven of het bestand mogen uitvoeren.

Bestandsrechten kunnen worden bekeken met de opdracht ls :

ls -l filename.txt

-rw-r--r-- 12 linuxize users 12.0K Apr 8 20:51 filename.txt |- | | | | | | | | | | | | | +-----------> 7. Group | | | | | +-------------------> 6. Owner | | | | +--------------------------> 5. Alternate Access Method | | | +----------------------------> 4. Others Permissions | | +-------------------------------> 3. Group Permissions | +----------------------------------> 2. Owner Permissions +------------------------------------> 1. File Type

Het eerste teken toont het bestandstype. Het kan een normaal bestand ( - ), een map ( d ), een symbolische link ( l ) of een ander speciaal bestandstype zijn.

De volgende negen tekens vertegenwoordigen de bestandsrechten, drie triplets van elk drie tekens. Het eerste triplet toont de eigenaarsrechten, de tweede groepstoestemmingen en het laatste triplet toont alle andere rechten. De machtigingen kunnen een andere betekenis hebben, afhankelijk van het bestandstype.

In het bovenstaande voorbeeld ( rw-r--r-- ) betekent dat de bestandseigenaar lees- en schrijfrechten heeft ( rw- ), de groep en anderen alleen leesrechten hebben ( r-- ).

Elk van de drie toestemmings-drieling kan worden opgebouwd uit de volgende tekens en heeft verschillende effecten, afhankelijk van of deze zijn ingesteld op een bestand of op een map:

Effect van machtigingen op bestanden

Toestemming Karakter Betekenis in bestand
Lezen - Het bestand is niet leesbaar. U kunt de inhoud van het bestand niet bekijken.
r Het bestand is leesbaar.
Schrijven - Het bestand kan niet worden gewijzigd of aangepast.
w Het bestand kan worden gewijzigd of aangepast.
uitvoeren - Het bestand kan niet worden uitgevoerd.
x Het bestand kan worden uitgevoerd.
s Als het wordt gevonden in het user triplet, wordt het setuid bit ingesteld. Indien gevonden in het group triplet, wordt het setgid bit ingesteld. Het betekent ook dat de vlag x is ingesteld.

Wanneer de vlaggen setuid of setgid zijn ingesteld op een uitvoerbaar bestand, wordt het bestand uitgevoerd met de eigenaar en / of groepsrechten van het bestand.

S Hetzelfde als s maar de x vlag is niet ingesteld. Deze vlag wordt zelden in bestanden gebruikt.
t Als het in de others triplet wordt gevonden, stelt het het sticky bit in.

Het betekent ook dat de vlag x is ingesteld. Deze vlag is nutteloos voor bestanden.

T Hetzelfde als t maar de x vlag is niet ingesteld. Deze vlag is nutteloos voor bestanden.

Effect van machtigingen op mappen (mappen)

In Linux zijn mappen speciale typen bestanden die andere bestanden en mappen bevatten.

Toestemming Karakter Betekenis op Directory
Lezen - De inhoud van de map kan niet worden getoond.
r De inhoud van de map kan worden getoond.

(U kunt bijvoorbeeld bestanden in de map weergeven met ls .)

Schrijven - De inhoud van de map kan niet worden gewijzigd.
w De inhoud van de map kan worden gewijzigd.

(U kunt bijvoorbeeld geen nieuwe bestanden maken, bestanden verwijderen enz.)

uitvoeren - De map kan niet worden gewijzigd in.
x De map kan worden genavigeerd met behulp van cd .
s Als het wordt gevonden in het user triplet, wordt het setuid bit ingesteld. Indien gevonden in het group triplet stelt het de setgid bit in. Het betekent ook dat de vlag x is ingesteld. Wanneer de setgid vlag is ingesteld op een map, nemen de nieuwe bestanden die erin worden gemaakt de directory-groeps-ID (GID) over in plaats van de primaire groeps-ID van de gebruiker die het bestand heeft gemaakt.

setuid heeft geen effect op mappen.

S Hetzelfde als s maar de x vlag is niet ingesteld. Deze vlag is nutteloos in mappen.
t Als het in de others triplet wordt gevonden, stelt het het sticky bit in.

Het betekent ook dat de vlag x is ingesteld. Wanneer het plakkerige bit in een map staat, kan alleen de eigenaar van het bestand, de eigenaar van de map of de beheerder de bestanden in de map verwijderen of hernoemen.

T Hetzelfde als t maar de x vlag is niet ingesteld. Deze vlag is nutteloos in mappen.

chmod

De opdracht chmod neemt de volgende algemene vorm aan:

chmod MODE FILE…

Met de opdracht chmod kunt u de machtigingen voor een bestand wijzigen met behulp van een symbolische of numerieke modus of een referentiebestand. We zullen de modi later in meer detail toelichten. De opdracht kan een of meer bestanden en / of mappen, gescheiden door een spatie, als argumenten accepteren.

Alleen root, de bestandseigenaar of gebruiker met sudo-rechten kunnen de rechten van een bestand wijzigen. Wees extra voorzichtig bij het gebruik van chmod , vooral bij het recursief wijzigen van de machtigingen.

Symbolische (tekst) methode

De syntaxis van de opdracht chmod bij gebruik van de symbolische modus heeft de volgende indeling:

chmod perms… FILE…

De eerste set vlaggen ( ), vlaggen van gebruikers, definieert welke gebruikersklassen de machtigingen voor het bestand wijzigen.

  • u - De bestandseigenaar. g - De gebruikers die lid zijn van de groep. o - Alle andere gebruikers. a - Alle gebruikers, identiek aan ugo .

Als de vlag van de gebruiker wordt weggelaten, is de standaardvlag a en worden de machtigingen die zijn ingesteld door umask niet beïnvloed.

De tweede set vlaggen ( ), de bewerking markeert, definieert of de machtigingen moeten worden verwijderd, toegevoegd of ingesteld:

  • - Verwijdert de opgegeven machtigingen. + Voegt gespecificeerde machtigingen toe. = Wijzigt de huidige machtigingen in de opgegeven machtigingen. Als na het symbool = geen machtigingen worden opgegeven, worden alle machtigingen van de opgegeven gebruikersklasse verwijderd.

De machtigingen (machtigingen perms… ) kunnen expliciet worden ingesteld met nul of een of meer van de volgende letters: r , w , x , X , s en t . Gebruik een enkele letter van de set u , g en o bij het kopiëren van machtigingen van de ene naar de andere gebruikersklasse.

Bij het instellen van machtigingen voor meer dan één gebruikersklasse ( ), gebruik komma's (zonder spaties) om de symbolische modi te scheiden.

Hieronder volgen enkele voorbeelden van het gebruik van de opdracht chmod in symbolische modus:

  • Geef de leden van de groep toestemming om het bestand te lezen, maar niet om het te schrijven en uit te voeren:

    chmod g=r filename

    Verwijder de uitvoeringsmachtiging voor alle gebruikers:

    chmod ax filename

    Verwijder met tegenzin de schrijfmachtiging voor andere gebruikers:

    chmod -R ow dirname

    Verwijder de lees-, schrijf- en uitvoeringsmachtiging voor alle gebruikers behalve de eigenaar van het bestand:

    chmod og-rwx filename

    Hetzelfde kan ook worden bereikt met behulp van de volgende vorm:

    chmod og= filename

    Geef lees-, schrijf- en uitvoeringsrechten aan de eigenaar van het bestand, leesmachtigingen voor de groep van het bestand en geen machtigingen voor alle andere gebruikers:

    chmod u=rwx, g=r, o= filename

    Voeg de eigenaarrechten van het bestand toe aan de machtigingen die de leden van de groep van het bestand hebben:

    chmod g+u filename

    Voeg een plakkerig bit toe aan een bepaalde map:

    chmod o+t dirname

Numerieke methode

De syntaxis van de opdracht chmod bij gebruik van de numerieke methode heeft de volgende indeling:

chmod NUMBER FILE…

Wanneer u de numerieke modus gebruikt, kunt u de machtigingen voor alle drie gebruikersklassen (eigenaar, groep en alle andere) tegelijkertijd instellen.

Het NUMBER kan een getal van 3 of 4 cijfers zijn.

Wanneer het nummer van 3 cijfers wordt gebruikt, staat het eerste cijfer voor de machtigingen van de eigenaar van het bestand, het tweede voor de groep van het bestand en het laatste voor alle andere gebruikers.

Elke schrijf-, lees- en uitvoeringsmachtiging heeft de volgende nummerwaarde:

  • r (lezen) = 4 w (schrijven) = 2 x (uitvoeren) = 1 nee machtigingen = 0

Het machtigingsnummer van een specifieke gebruikersklasse wordt weergegeven door de som van de waarden van de machtigingen voor die groep.

Om de machtigingen van het bestand in de numerieke modus te achterhalen, berekent u eenvoudig de totalen voor alle gebruikersklassen. Als u bijvoorbeeld toestemming voor lezen, schrijven en uitvoeren van de eigenaar van het bestand wilt geven, machtigingen voor lezen en uitvoeren voor de groep van het bestand en alleen machtigingen wilt lezen voor alle andere gebruikers, doet u het volgende:

  • Eigenaar: rwx = 4 + 2 + 1 = 7 Groep: rx = 4 + 0 + 1 = 5 Anderen: rx = 4 + 0 + 0 = 4

Met behulp van de bovenstaande methode komen we op het nummer 754 , dat de gewenste machtigingen vertegenwoordigt.

Gebruik vier cijfers om de setuid , setgid en sticky bit setgid te stellen.

Wanneer het 4-cijferige nummer wordt gebruikt, heeft het eerste cijfer de volgende betekenis:

  • setuid = 4setgid = 2sticky = 1no wijzigingen = 0

De volgende drie cijfers hebben dezelfde betekenis als wanneer u een nummer van 3 cijfers gebruikt.

Als het eerste cijfer 0 is, kan dit worden weggelaten en kan de modus worden weergegeven met 3 cijfers. De numerieke modus 0755 is hetzelfde als 755 .

Om de numerieke modus te berekenen, kunt u ook een andere methode (binaire methode) gebruiken, maar deze is iets gecompliceerder. Weten hoe de numerieke modus met 4, 2 en 1 moet worden berekend, is voor de meeste gebruikers voldoende.

U kunt de machtigingen van het bestand controleren in de numerieke notatie met de opdracht stat :

stat -c "%a" filename

644

Hier zijn enkele voorbeelden van het gebruik van de opdracht chmod in de numerieke modus:

  • Geef de eigenaar van het bestand lees- en schrijfrechten en leesrechten alleen voor groepsleden en alle andere gebruikers:

    chmod 644 dirname

    Geef de eigenaar van het bestand lees-, schrijf- en uitvoeringsrechten, lees- en uitvoeringsrechten voor groepsleden en geen machtigingen voor alle andere gebruikers:

    chmod 750 dirname

    Geef lees-, schrijf- en uitvoeringsrechten en een plakkerig bit aan een bepaalde map:

    chmod 1777 dirname

    Stel recursief lees-, schrijf- en uitvoeringsrechten in voor de bestandseigenaar en geen machtigingen voor alle andere gebruikers in een bepaalde map:

    chmod -R 700 dirname

Een referentiebestand gebruiken

Met de optie --reference=ref_file kunt u instellen dat de machtigingen van het bestand hetzelfde zijn als die van het opgegeven referentiebestand ( ref_file ).

chmod --reference=REF_FILE FILE

De volgende opdracht wijst bijvoorbeeld de machtigingen van file1 aan file2

chmod --reference=file1 file2

Wijzig recursief de machtigingen van het bestand

Gebruik de optie -R ( --recursive ) om recursief op alle bestanden en mappen in de opgegeven map te werken:

chmod -R MODE DIRECTORY

Als u bijvoorbeeld de machtigingen van alle bestanden en submappen in de map /var/www wilt wijzigen in 755 u:

chmod -R 755 /var/www

Werkt op symbolische links

Symbolische links hebben altijd 777 machtigingen.

Standaard wijzigt chmod bij het wijzigen van de machtigingen van symlink de machtigingen voor het bestand waarnaar de link verwijst.

chmod 755 symlink

De kans is groot dat in plaats van het doeleigendom te wijzigen, de foutmelding 'Geen toegang tot' symlink 'krijgt: toestemming geweigerd' wordt weergegeven.

De fout treedt op omdat standaard op de meeste Linux-distributies symlinks zijn beveiligd en u niet op doelbestanden kunt werken. Deze optie wordt opgegeven in /proc/sys/fs/protected_symlinks . 1 betekent ingeschakeld en 0 uitgeschakeld. Het wordt aanbevolen om de symlink-beveiliging niet uit te schakelen.

Bulkrechten wijzigen in bulk

Soms zijn er situaties waarin u bestanden en mappenmachtigingen in bulk moet wijzigen.

Het meest voorkomende scenario is om de machtigingen van het websitebestand recursief te wijzigen in 644 en de machtigingen voor mappen in 755 .

Met behulp van de numerieke methode:

find /var/www/my_website -type d -exec chmod 755 {} ; find /var/www/my_website -type f -exec chmod 644 {} ;

Met behulp van de symbolische methode:

find /var/www/my_website -type d -exec chmod u=rwx, go=rx {} ; find /var/www/my_website -type f -exec chmod u=rw, go=r {} ;

De opdracht find zoekt naar bestanden en mappen onder /var/www/my_website en geeft elk gevonden bestand en elke map door aan de opdracht chmod om de machtigingen in te stellen.

Conclusie

De opdracht chmod wijzigt de machtigingen van het bestand. De machtigingen kunnen worden ingesteld met behulp van de symbolische of numerieke modus.

Voor meer informatie over chmod bezoekt u de chmod man-pagina.

chmod terminal